📄 ex9-9.asm
字号:
ORG 0000H
START: LJMP MAIN
ORG 0030H
MAIN: LCALL INIT ;主程序开始,调用液晶模块初始化子程序
LCALL WPAD ;调用自定义汉字字符子程序
MOV R2,#81H ;从第1行第2位开始,设置DDRAM地址
LCALL WRTC ;写入
MOV R4,#14 ;第1行共14个字符
MOV DPTR,#ZIFU ;指向显示字符代码首地址
LCALL WP1 ;第1行字符代码写入DDRAM
MOV R2,#0C4H ;设置第2行DDRAM地址
LCALL WRTC ;写入
MOV R4,#12 ;第2行共12个字符
LCALL WP1 ;第2行字符代码写入DDRAM
SJMP $
ZIFU: DB "Hello Everyboy" ;显示字符
DB "2008",00H,"10",01H,"26",02H,20H
;忙标志判断子程序
WAIT: MOV P2,#7FH
MOV R0,#0F1H ;读忙标志地址
MOVX A,@R0
JB ACC.7,WAIT
RET
;写指令代码子程序
WRTC: LCALL WAIT ;判断BF标志
MOV A,R2
MOV R0,#0F0H ;写指令地址
MOVX @R0,A
RET
;写数据子程序
WRTD: LCALL WAIT ;判断BF标志
MOV A,R2
MOV R0,#0F2H ;写数据地址
MOV A,R2
MOVX @R0,A
RET
;读数据子程序
RDD: LCALL WAIT ;判断BF标志
MOV R0,#0F3H ;读数据地址
MOVX A,@R0
RET
;初始化子程序
INIT: LCALL TIM1 ;延时15ms
MOV R2,#38H ;功能设置命令,设定8位字长,2行,5*7点阵
LCALL WRTC ;写入
LCALL TIM3 ;延时100us
MOV R2,#38H
LCALL WRTC ;写入
LCALL TIM3 ;延时100us
MOV R2,#38H
LCALL WRTC ;写入
LCALL TIM3 ;延时100us
MOV R2,#01H ;清屏命令
LCALL WRTC ;写入
MOV R2,#06H ;输入方式命令
LCALL WRTC ;写入
MOV R2,#0EH ;开显示、光标不闪命令
LCALL WRTC ;写入
RET
;自定义汉字字符子程序
WPAD: MOV R2,#40H ;设置CGRAM首地址为0
LCALL WRTC ;写入CGRAM首地址
MOV R4,#24 ;3个汉字共24字节子模数据
MOV DPTR,#ZIMO ;指向字模首地址
WP1: CLR A
MOVC A,@A+DPTR
MOV R2,A
LCALL WRTD ;写入1字节字模数据
INC DPTR
DJNZ R4,WP1
RET
ZIMO: DB 08H,0FH,12H,0FH,0AH,1FH,02H,00H;“年”
DB 0FH,09H,0FH,09H,0FH,09H,11H,00H;“月”
DB 0FH,09H,09H,0FH,09H,09H,0FH,00H;“日”
;延时15ms子程序
TIM1: MOV R5,#03H
TT1: LCALL TIM2
DJNZ R5,TT1
RET
;延时5ms子程序
TIM2: MOV R4,#50
TT2: LCALL TIM3
DJNZ R4,TT2
RET
;延时100us子程序
TIM3: MOV R3,#50
TT3: DJNZ R3,TT3
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -