📄 demo_lcd.asm
字号:
;说明:本LCD为LCM161(HD44780驱动器)字符显示器.
;接线:LCD D0-D8(PIN7-14) 对映用户板P0.0--P0.7
; LCD VSS(PIN1) 接 GND,VDD(PIN2)接+5V,LCD驱动电源V0(PIN3)接可调电阻ADJ,调节亮度
; LCD寄存器选择RS(PIN4)接P2.0,读写选择R/W(PIN5)接P2.1,使能端EN(PIN6)接P2.2(高电平有效)
;本程序采用I/O口模仿总线时序,故无需做任何硬件扩展.屏幕显示:"I'm SuperICES! ",
;-----------------------------------------------------------------------------------------------
RS BIT P2.0
R_W BIT P2.1
EN BIT P2.2
COM EQU 20H
DAT EQU 21H
ORG 0000H
AJMP MAIN
ORG 100H
MAIN: MOV SP,#50H
MOV P0,#0FFH
MOV P2,#0FFH
mov p0,#00h
CLR EN
mov a,#00h
mov r1,#20h
mov r0,#40h
loop: mov @r1,a
inc r1
djnz r0,loop
MOV R2,#03H
INTK11: MOV COM,#30H
LCALL PR1
LCALL DELAY_K1
lcall delay_k1
DJNZ R2,INTK11
MOV COM,#38H ;工作方式为2行,5*7点阵
LCALL PR1
MOV COM,#01H ;清零
LCALL PR1
MOV COM,#06H ;AC自动加1
LCALL PR1
MOV COM,#0FH ;光标,闪烁
LCALL PR1
MOV COM,#80H ;显示RAM前8位首地址
LCALL PR1
MOV DPTR,#TAB1
MOV R2,#08H ;前8位
MOV R3,#00H
WRIT1: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY_K1
INC R3
DJNZ R2,WRIT1
MOV COM,#06H
LCALL PR1
MOV COM,#0FH
LCALL PR1
MOV COM,#0C0H ;显示RAM后8位首地址
LCALL PR1
MOV DPTR,#TAB2
MOV R2,#08H ;后8位
MOV R3,#00H
WRIT2: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY_K1
INC R3
DJNZ R2,WRIT2
jb p3.0,$ ;等待S0按钮,重新演示
ajmp main
DELAY_K1:MOV R6,#00H
MOV R7,#00H
DEL1_K1: NOP
DJNZ R7, del1_k1
DJNZ R6,DEL1_K1
RET
PR0: PUSH ACC ;READ BF OR AC
CLR RS
SETB R_W
SETB EN
MOV A,P0
MOV COM,A
CLR EN
POP ACC
RET
PR1: PUSH ACC ;WRITE COMMAMD
CLR RS
SETB R_W
SETB EN
PR11:MOV A,P0
JB ACC.7,PR11
CLR RS
CLR R_W
MOV A, COM
MOV P0,A
LCALL DELAY_K1
CLR EN
POP ACC
RET
PR2: PUSH ACC ;WRITE DATA
CLR RS
SETB R_W
SETB EN
PR21:MOV A,P0
JB ACC.7,PR21
MOV A, DAT
SETB RS
CLR R_W
MOV P0,A
NOP
CLR EN
POP ACC
RET
PR3: PUSH ACC ;READ DATA
SETB RS
SETB R_W
SETB EN
MOV A,P0
MOV COM,A
CLR EN
POP ACC
RET
TAB1:DB 49H,27H,6DH,0A0H,53H,75H,70H,65H ;"I'm Supe"
TAB2:DB 72H,49H,43H,45H,53H,0A0H,21H ,0A0H ;"rICES !"
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -