标题:
12864液晶屏测试程序(汇编)
[打印本页]
作者:
daniu
时间:
2014-12-26 22:32
标题:
12864液晶屏测试程序(汇编)
DI BIT P4.0
RW BIT P4.1
E BIT P4.2
PSB BIT P2.7
RESET BIT P2.3
LCDBG BIT P4.3
ORG 00H
AJMP MAIN
ORG 0030H
MAIN:
SETB PSB
CLR LCDBG
MOV SP,#40H
LCALL INIT
LCALL BMP1 ;全屏显示花格子
LCALL DEL200MS
LCALL BMP2 ;全屏显示另一种花格子
LCALL DEL200MS
LCALL BMP4 ;全屏显示大方格,每行8个,共32个
LCALL DEL200MS
MOV R1,#0D2H ;全屏显示“液”
MOV R0,#0BAH
LCALL BMP3
LCALL DEL200MS
MOV R1,#0BEH ;全屏显示“示”
MOV R0,#0A7H
LCALL BMP3
LCALL DEL200MS
MOV R1,#0C6H ;全屏显示“屏”
MOV R0,#0C1H
LCALL BMP3
LCALL DEL200MS
LCALL BMP5 ;全屏显示“晶汉达”等文字
LCALL DEL200MS
AJMP MAIN
BMP1: ;全屏显示花格子
MOV R3,#20H
MOV A,#40H
LCALL WC1
MOV A,#0AAH
MOV R4,#02H
BMP10:
LCALL WD1
DJNZ R4,BMP100
CPL A
MOV R4,#02H
BMP100:
DJNZ R3,BMP10
MOV R3,#20H
MOV A,#80H
LCALL WC1
BMP11:
MOV A,#00H
LCALL WD1
MOV A,#00H
LCALL WD1
DJNZ R3,BMP11
RET
BMP2:
MOV R3,#80H ;128个
MOV A,#60H ;造字CGRAM,可以自定义
LCALL WC1
MOV A,#0FFH
BMP20:
DJNZ R3,BMP20
MOV R3,#80H
MOV A,#80H
LCALL WC1
BMP21:
MOV A,#00H
LCALL WD1
MOV A,#02H
LCALL WD1
DJNZ R3,BMP21
RET
BMP3:
MOV R3,#20H ;显示32个字
MOV A,#80H ;从第1行第1个地址开始显示
LCALL WC1
BMP31:
MOV A,R1
LCALL WD1
MOV A,R0
LCALL WD1
DJNZ R3,BMP31
RET
BMP4: ;自定义图片,显示方格“口”
MOV A,#40H ;造字CGRAM
LCALL WC1
MOV A,#0FFH ;第一行显示
LCALL WD1
MOV A,#0FFH
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#80H
LCALL WD1
MOV A,#01H
LCALL WD1
MOV A,#0FFH ;第一字符最后一行显示
LCALL WD1
MOV A,#0FFH
LCALL WD1
MOV A,#80H
LCALL WC1
BMP41:
MOV A,#00H
LCALL WD1
MOV A,#00H
LCALL WD1
DJNZ R3,BMP41
RET
BMP5: ;第5幅画面
MOV A,#01H ;清除显示
LCALL WC1 ;写指令
MOV A,#82H ;从第一行第3个地址开始显示
LCALL WC1
MOV A,#0BEH ;显示“晶”(查表得编码BEA7)
LCALL WD1 ;写数据
MOV A,#0A7H
LCALL WD1
MOV A,#0BAH ;显示“汉”
LCALL WD1
MOV A,#0BAH
LCALL WD1
MOV A,#0B4H ;显示“达”
LCALL WD1
MOV A,#0EFH
LCALL WD1
MOV A,#91H ;从第二行第2个地址开始显示
LCALL WC1 ;写指令
MOV A,#0A3H ;显示“1”
LCALL WD1
MOV A,#0B1H
LCALL WD1
MOV A,#0A3H ;显示“2”
LCALL WD1
MOV A,#0B2H
LCALL WD1
MOV A,#0A3H ;显示“8”
LCALL WD1
MOV A,#0B8H
LCALL WD1
MOV A,#0A3H ;显示“6”
LCALL WD1
MOV A,#0B6H
LCALL WD1
MOV A,#0A3H ;显示“4”
LCALL WD1
MOV A,#0B4H
LCALL WD1
MOV A,#0A3H ;显示“F”
LCALL WD1
MOV A,#0C6H
LCALL WD1
MOV A,#8AH ;从第三行第3个地址开始显示
LCALL WC1
MOV A,#0CDH ;显示“图”
LCALL WD1
MOV A,#0BCH
LCALL WD1
MOV A,#0D0H ;显示“形”
LCALL WD1
MOV A,#0CEH
LCALL WD1
MOV A,#0B5H ;显示“点”
LCALL WD1
MOV A,#0E3H
LCALL WD1
MOV A,#0D5H ;显示“阵”
LCALL WD1
MOV A,#0F3H
LCALL WD1
MOV A,#99H ;从第四行第2个地址开始显示
LCALL WC1
MOV A,#0D7H ;显示“自”
LCALL WD1
MOV A,#0D4H
LCALL WD1
MOV A,#0B4H ;显示“带”
LCALL WD1
MOV A,#0F8H
LCALL WD1
MOV A,#0BAH ;显示“汉”
LCALL WD1
MOV A,#0BAH
LCALL WD1
MOV A,#0D7H ;显示“字”
LCALL WD1
MOV A,#0D6H
LCALL WD1
MOV A,#0D7H ;显示“字”
LCALL WD1
MOV A,#0D6H
LCALL WD1
MOV A,#0BFH ;显示“库”
LCALL WD1
MOV A,#0E2H
LCALL WD1
RET
INIT: ;初始化LCD程序
CLR RESET ;复位
SETB RESET
MOV A,#30H ;8位基本指令操作
LCALL WC1
MOV A,#30H
LCALL WC1
MOV A,#0CH
LCALL WC1
MOV A,#01H ;清除屏幕显示
LCALL WC1
MOV A,#06H ;DDRAM地址计数器加1
LCALL WC1
RET
WC1: ;写指令
PUSH ACC
MOV P0,A
CLR RW
CLR DI
SETB E
NOP
CLR E
CALL RFG1
POP ACC
RET
WD1: ;写数据
PUSH ACC
MOV P0,A
CLR RW
SETB DI
SETB E
NOP
CLR E
CALL RFG1
POP ACC
RET
RFG1: ;读取忙标志和地址
MOV P0,#0FFH
SETB RW
CLR DI
BUSY: ;读忙标志程序
SETB E
MOV A,P0
CLR E
JB ACC.7,BUSY
RET
DEL20MS: ;延时
MOV R7,#20D
DD6: MOV R6,#200D
DD5: NOP
NOP
NOP
DJNZ R6,DD5
DJNZ R7,DD6
RET
DEL200MS:
MOV R7,#15D
DEL2: MOV R6,#200D
DEL1: MOV R5,#200D
DEL0: DJNZ R5,DEL0
DJNZ R6,DEL1
DJNZ R7,DEL2
RET
END
复制代码
作者:
ahshmj
时间:
2014-12-29 19:40
使用循环查表方法输入汉字会更简洁。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1