📄 lcdhz51.asm
字号:
;for eat598
MASTERI EQU 0F200H ;左液晶的地址口
MASTERD EQU 0F202H ;左液晶的数据口
SLAVEI EQU 0F208H ;右液晶的地址口
SLAVED EQU 0F20AH ;右液晶的数据口
LCDON EQU 0AFH ;点亮LCD
STARTLINE EQU 0C0H ;0~31
STARTCOL EQU 00H ;0~79
STARTPAGE EQU 0B8H ;0~3
ORG 0000H
AJMP START
ORG 0040H
START:
MOV SP,#60H ;初始化堆栈指针
LCALL INITLCD ;初始化LCD
LCALL CLEARLCD;清LCD
MOV R0,#00H
MOV R1,#00H
MOV R2,#00H
MOV R3,#00H
MOV R4,#00H
MOV R5,#00H
MOV R6,#00H
MOV R7,#00H
MOV 40H,#00H
MOV DPTR,#CCTAB ;置显示常数表起始位置
MOV R0,DPL
MOV R1,DPH
NOP
MOV DPTR,#MASTERI ;写左液晶
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#MASTERD
MOV R4,DPL
MOV R5,DPH
MOV R6,#STARTCOL+29;置起始列
MOV R7,#STARTPAGE ;置起始页:第1页
LCALL WRITEHZ ;写“欢”字
MOV R6,#STARTCOL+45
MOV R7,#STARTPAGE
LCALL WRITEHZ ;写“迎”字
MOV DPTR,#SLAVEI ;写右液晶
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#SLAVED
MOV R4,DPL
MOV R5,DPH
MOV R6,#STARTCOL
MOV R7,#STARTPAGE
LCALL WRITEHZ ;写“使”字
MOV R6,#STARTCOL+16
MOV R7,#STARTPAGE
LCALL WRITEHZ ;写“用”字
MOV DPTR,#MASTERI ;写左液晶
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#MASTERD
MOV R4,DPL
MOV R5,DPH
MOV R6,#STARTCOL+21
MOV R7,#STARTPAGE+2
LCALL WRITEA ;写"E"
MOV R6,#STARTCOL+29
MOV R7,#STARTPAGE+2
LCALL WRITEA ;写"A"
MOV R6,#STARTCOL+37
MOV R7,#STARTPAGE+2
LCALL WRITEA ;写"T"
MOV R6,#STARTCOL+45
MOV R7,#STARTPAGE+2
LCALL WRITEA ;写"9"
MOV R6,#STARTCOL+53
MOV R7,#STARTPAGE+2
LCALL WRITEA ;写"8"
MOV DPTR,#SLAVEI ;写右液晶
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#SLAVED
MOV R4,DPL
MOV R5,DPH
MOV R6,#STARTCOL
MOV R7,#STARTPAGE+2 ;置起始页:第2页
LCALL WRITEA ;写"5"
MOV R6,#STARTCOL+8 ;写"实"
MOV R7,#STARTPAGE+2
LCALL WRITEHZ
MOV R6,#STARTCOL+24 ;写"验"
MOV R7,#STARTPAGE+2
LCALL WRITEHZ
MOV R6,#STARTCOL+40 ;写"仪"
MOV R7,#STARTPAGE+2
LCALL WRITEHZ
SJMP $
CLEARLCD:
MOV R0,#02H ;分别清除左右液晶
WRITEMORS:
LCALL WRITELCDCMD1
MOV R1,#00H ;分0~3页写
WRITEPAGE:
LCALL WRITELCDCMD2
MOV R2,#00H ;分61列写
LCALL WRITELCDDATA
CJNE R1,#04H,WRITEPAGE
DJNZ R0,WRITEMORS
RET
WRITELCDCMD1:
MOV A,R0
CJNE A,#01H,MASTER1
MOV DPTR,#SLAVEI
LCALL AA
SJMP EXIT1
MASTER1:
MOV DPTR,#MASTERI
LCALL AA
EXIT1:
RET
AA:
MOV A,#STARTPAGE
MOVX @DPTR,A
MOV A,#STARTLINE
MOVX @DPTR,A
RET
WRITELCDCMD2:
MOV A,R0
CJNE A,#01H,MASTER2
MOV DPTR,#SLAVEI
LCALL BB
SJMP EXIT3
MASTER2:
MOV DPTR,#MASTERI
LCALL BB
EXIT3:
RET
BB:
MOV A,R1
CJNE A,#00H,MASTER21
MOV A,#STARTPAGE
MOVX @DPTR,A
SJMP EXIT2
MASTER21:
CJNE A,#01H,MASTER22
MOV A,#0B9H
MOVX @DPTR,A
SJMP EXIT2
MASTER22:
CJNE A,#02H,MASTER23
MOV A,#0BAH
MOVX @DPTR,A
SJMP EXIT2
MASTER23:
MOV A,#0BBH
MOVX @DPTR,A
EXIT2:
INC R1
RET
WRITELCDDATA:
MOV A,#STARTCOL
BDATA:
ADD A,R2
MOV DPTR,#MASTERI
MOVX @DPTR,A
MOV DPTR,#slaveI
MOVX @DPTR,A
MOV A,R0
CJNE A,#01H,MASTERD1
MOV DPTR,#SLAVED
MOV A,#00H
MOVX @DPTR,A
SJMP EXITD1
MASTERD1:
MOV DPTR,#MASTERD
MOV A,#00H
MOVX @DPTR,A
EXITD1:
CJNE R2,#61H,EXITD2
RET
EXITD2:
INC R2
LJMP BDATA
INITLCD:
MOV DPTR,#MASTERI
MOV A,#LCDON
MOVX @DPTR,A
MOV A,#STARTLINE
MOVX @DPTR,A
MOV A,#STARTPAGE
MOVX @DPTR,A
MOV DPTR,#SLAVEI
MOV A,#LCDON
MOVX @DPTR,A
MOV A,#STARTLINE
MOVX @DPTR,A
MOV A,#STARTPAGE
MOVX @DPTR,A
RET
WRITEHZ: ;写16*16点阵汉字子程序
MOV DPL,R2
MOV DPH,R3
MOV A,R6
MOVX @DPTR,A
MOV A,R7
MOVX @DPTR,A
MOV 40H,#16
LCALL TEMP
MOV DPL,R2
MOV DPH,R3
MOV A,R6
MOVX @DPTR,A
INC R7
MOV A,R7
MOVX @DPTR,A
MOV 40H,#16
LCALL TEMP
RET
WRITEA: ;写8*16点阵字符子程序
MOV DPL,R2
MOV DPH,R3
MOV A,R6
MOVX @DPTR,A
MOV A,R7
MOVX @DPTR,A
MOV 40H,#8
LCALL TEMP
MOV DPL,R2
MOV DPH,R3
MOV A,R6
MOVX @DPTR,A
INC R7
MOV A,R7
MOVX @DPTR,A
MOV 40H,#8
LCALL TEMP
RET
TEMP:
CLR A
MOV DPL,R0
MOV DPH,R1
MOVC A,@A+DPTR
LCALL DISP
INC R0
CJNE R0,#0FFH,TEMP1
INC R1
TEMP1:
DJNZ 40H,TEMP
RET
DISP:
MOV DPL,R4
MOV DPH,R5
MOVX @DPTR,A
RET
;16x16汉字写入顺序
;01 02 03 04 05 06 07 08
;09 10 11 12 13 14 15 16
CCTAB:
DB 004H,034H,0C4H,004H,0C4H,03CH,020H,010H,00FH,0E8H,008H,008H,028H,018H,000H,000H;欢
DB 010H,008H,006H,001H,082H,08CH,040H,030H,00CH,003H,00CH,010H,060H,0C0H,040H,000H
DB 040H,042H,044H,0C8H,000H,0FCH,004H,002H,002H,0FCH,004H,004H,004H,0FEH,004H,000H;迎
DB 000H,040H,020H,01FH,020H,047H,042H,041H,040H,07FH,040H,042H,044H,063H,020H,000H
DB 040H,020H,0F0H,01CH,007H,0F2H,094H,094H,094H,0FFH,094H,094H,094H,0F4H,004H,000H;使
DB 000H,000H,07FH,000H,040H,041H,022H,014H,00CH,013H,010H,030H,020H,061H,020H,000H
DB 000H,000H,000H,0FEH,022H,022H,022H,022H,0FEH,022H,022H,022H,022H,0FEH,000H,000H;用
DB 080H,040H,030H,00FH,002H,002H,002H,002H,0FFH,002H,002H,042H,082H,07FH,000H,000H
DB 008H,0F8H,088H,088H,0E8H,008H,010H,000H,020H,03FH,020H,020H,023H,020H,018H,000H;E
DB 000H,000H,0C0H,038H,0E0H,000H,000H,000H,020H,03CH,023H,002H,002H,027H,038H,020H;A
DB 018H,008H,008H,0F8H,008H,008H,018H,000H,000H,000H,020H,03FH,020H,000H,000H,000H;T
DB 000H,0F8H,008H,088H,088H,008H,008H,000H,000H,019H,021H,020H,020H,011H,00EH,000H;5
DB 000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,000H,031H,022H,022H,011H,00FH,000H;9
DB 000H,070H,088H,008H,008H,088H,070H,000H,000H,01CH,022H,021H,021H,022H,01CH,000H;8
DB 000H,010H,00CH,004H,04CH,0B4H,094H,005H,0F6H,004H,004H,004H,014H,00CH,004H,000H;实
DB 000H,082H,082H,042H,042H,023H,012H,00AH,007H,00AH,012H,0E2H,042H,002H,002H,000H
DB 002H,0FAH,082H,082H,0FEH,080H,040H,060H,058H,046H,048H,050H,020H,020H,020H,000H;验
DB 008H,008H,004H,024H,040H,03FH,022H,02CH,021H,02EH,020H,030H,02CH,023H,020H,000H
DB 040H,020H,0F0H,00CH,003H,000H,038H,0C0H,001H,00EH,004H,0E0H,01CH,000H,000H,000H;仪
DB 000H,000H,0FFH,000H,040H,040H,020H,010H,00BH,004H,00BH,010H,020H,060H,020H,000H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -