📄 p12_2.asm
字号:
E EQU P3.0
RW EQU P3.1
RS EQU P3.2
CS1 EQU P3.6
CS2 EQU P3.7
LCD EQU P2
ORG 0000H
LJMP MAIN
ORG 2000H
PAGE0: DB 0F0H, 08H, 04H, 12H, 11H, 11H, 01H, 0C1H
DB 01H, 01H, 11H, 11H, 12H, 04H, 08H, 0F0H
PAGE1: DB 0FH, 10H, 20H, 40H, 80H, 90H, 90H, 93H
DB 92H, 90H, 90H, 88H, 40H, 20H, 10H, 0FH
WAIT: PUSH 30H
MOV 30H, A
MOV LCD, 0FFH ;空读操作
SETB RW
CLR RS
SETB E
MOV A, LCD
CLR E
MOV LCD, 0FFH ;第2次读
CLR RS
SETB RW
SETB E
MOV A, LCD
CLR E
JB ACC.7, WAIT
MOV A, 30H
POP 30H
RET
W_CMD: ACALL WAIT
MOV LCD, A
CLR RS
CLR RW
SETB E
NOP
CLR E
RET
W_DATA: ACALL WAIT
MOV LCD, A
SETB RS
CLR RW
SETB E
NOP
CLR E
RET
CLEAR: MOV R0, #0H
CLR1: MOV A, R0 ;设置页号
ORL A, #10111000B
ACALL W_CMD
MOV R1, #0H
MOV A,#01000000B
ACALL W_CMD
CLR2: MOV A, #0H
ACALL W_DATA
INC R1
CJNE R1, #64, CLR2
INC R0
CJNE R0, #8, CLR1
RET
DISPLAY:MOV A, #10111100B ;设置页号
ACALL W_CMD
MOV A, #01010111B ;23列开始显示
ACALL W_CMD
MOV DPTR, #PAGE0
MOV R5, #0
LOOP1: MOV A, R5
MOVC A, @A+DPTR
ACALL W_DATA
INC R5
CJNE R5, #16, LOOP1
MOV A, #10111101B ;设置页号
ACALL W_CMD
MOV A, #01010111B ;23列开始显示
ACALL W_CMD
MOV DPTR, #PAGE1
MOV R5, #0
LOOP2: MOV A, R5
MOVC A, @A+DPTR
ACALL W_DATA
INC R5
CJNE R5, #16, LOOP2
RET
MAIN: CLR CS1
CLR CS2
MOV A, #00111111B ;打开显示
ACALL W_CMD
ACALL CLEAR
ACALL DISPLAY
LOOP: AJMP LOOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -