?? lcd.txt
字號:
XPOS EQU 20H ;列方向地址指針(用于LCDPOS子程序)
YPOS EQU 21H ;行方向地址指針(用于LCDPOS子程序)
RWADDR EQU 0800H ;P2.3
CS1ADDR EQU 0200H ;P2.2
CS2ADDR EQU 0400H ;P2.1
RSADDR EQU 0100H ;P2.0
CSADDR EQU 8000H ;P2.7
ORG 0000H
SJMP START
ORG 0003H
RETI
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
RETI
ORG 0040H
START:
MOV SP,#60H
LCALL LCDRESET
MOV A,#00h
LCALL LCDFILL
LCALL LCDINIT
LCALL LCDRESET
MOV A,#00h
LCALL LCDFILL
MAIN:
MOV A,#00h
LCALL LCDFILL
MOV A,#01H
LCALL LCDLINE
LCALL LCDSIN
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
LJMP MAIN
LCDINIT:
LCALL LCDRESET
MOV A,#00h
LCALL LCDFILL
LCALL LCDRESET
MOV DPTR,#STRING1
MOV XPOS,#30
MOV YPOS,#0
LCALL PUTSTR
MOV XPOS,#10
MOV YPOS,#3
LCALL PUTSTR
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
MOV A,#00h
LCALL LCDFILL
MOV XPOS,#0
MOV YPOS,#0
LCALL PUTSTR
MOV XPOS,#80
MOV YPOS,#2
LCALL PUTSTR
MOV XPOS,#80
MOV YPOS,#4
LCALL PUTSTR
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
MOV A,#00h
LCALL LCDFILL
MOV XPOS,#0
MOV YPOS,#6
LCALL PUTSTR
MOV XPOS,#80
MOV YPOS,#2
LCALL PUTSTR
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
MOV XPOS,#80
MOV YPOS,#0
LCALL PUTSTR
MOV A,#00h
LCALL LCDFILL
MOV XPOS,#0
MOV YPOS,#3
LCALL PUTSTR
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
MOV A,#00h
LCALL LCDFILL
MOV XPOS,#0
MOV YPOS,#0
LCALL PUTSTR
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
LCALL DELAY11
ret
GETSTRCHAR:
GSC_PA:
CLR A
MOVC A,@A+DPTR
INC DPTR
MOV B,A
INC A
CLR C
JZ GSC_LAX
CLR A
MOVC A,@A+DPTR
INC DPTR
SETB C
GSC_LAX:
RET
PUTSTR:
CALL LCDRESET
CALL DELAY
CALL GETSTRCHAR
PUSH DPL
PUSH DPH
JNC PSR_LAX
JNB B.7,PSR_LBY
;CHINESE:
CALL HZKPOS
CALL PUTCHARDOT
CALL PUTCHARDOT
JMP PSR_LBX
PSR_LBY:
;ENGLISH:
CALL HZKPOS
CALL PUTCHARDOT
PSR_LBX:
POP DPH
POP DPL
JMP PUTSTR
PSR_LAX:POP DPH
POP DPL
RET
HZKPOS:
MOV R2,#5
HTP_PA:
CLR C
RLC A
XCH A,B
RLC A
XCH A,B
DJNZ R2,HTP_PA
MOV DPTR,#HZKDOT
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
RET
DELAY:
MOV R6,#2
DLY_PA: MOV R5,#0
DLY_PB: MOV R4,#0
DJNZ R4,$
DJNZ R5,DLY_PB
DJNZ R6,DLY_PA
RET
LCDFILL: ;LCD整屏顯示A的內(nèi)容
MOV R7,A
MOV YPOS,#0
LFL_PB: MOV XPOS,#0
LFL_PA: MOV A,R7
LCALL LCDWRITE ;定位并寫數(shù)據(jù)
INC XPOS
MOV A,XPOS
CJNE A,#128,LFL_PA ;XPOS<128則循環(huán)(128列)
INC YPOS
MOV A,YPOS
CJNE A,#8,LFL_PB ;YPOS<8則循環(huán)(8頁)
MOV XPOS,#0
MOV YPOS,#0
RET
LCDLINE: ;LCD整屏顯示A的內(nèi)容
MOV R7,A
MOV YPOS,#4
MOV XPOS,#40
LFL_PA1: MOV A,R7
LCALL LCDWRITE ;定位并寫數(shù)據(jù)
INC XPOS
MOV A,XPOS
CJNE A,#128,LFL_PA1 ;XPOS<128則循環(huán)(128列)
MOV XPOS,#0
MOV YPOS,#0
RET
LCDSIN: ;LCD整屏顯示A的內(nèi)容
PUSH 0
MOV R0,#00H
MOV XPOS,#40
MOV YPOS,#0
LFL_PA11: CJNE R0,#255,XIA1
MOV R0,#00H
XIA1: MOV DPTR,#SIN
MOV A,R0
MOVC A,@A+DPTR
MOV B,A
CLR C
SUBB A,#224
JC COM192
MOV YPOS,#7
LCALL COM_A
LJMP LCD_END
COM192:MOV A,B
CLR C
SUBB A,#192
JC COM160
MOV YPOS,#6
LCALL COM_A
LJMP LCD_END
COM160:MOV A,B
CLR C
SUBB A,#160
JC COM128
MOV YPOS,#5
LCALL COM_A
LJMP LCD_END
COM128:MOV A,B
CLR C
SUBB A,#128
JC COM96
MOV YPOS,#4
LCALL COM_A
LJMP LCD_END
COM96:MOV A,B
CLR C
SUBB A,#96
JC COM64
MOV YPOS,#3
LCALL COM_A
LJMP LCD_END
COM64: MOV A,B
CLR C
SUBB A,#64
JC COM32
MOV YPOS,#2
LCALL COM_A
LJMP LCD_END
COM32: MOV A,B
CLR C
SUBB A,#32
JC COM0
MOV YPOS,#1
LCALL COM_A
LJMP LCD_END
COM0 : MOV A,B
CLR C
MOV YPOS,#0
LCALL COM_A
LCD_END:
LCALL LCDWRITE ;定位并寫數(shù)據(jù)
INC XPOS
MOV A,XPOS
INC R0
INC R0
INC R0
INC R0
INC R0
INC R0
INC R0
INC R0
INC R0
INC R0
INC R0
INC R0
SUBB A,#128 ;XPOS<128則循環(huán)(128列)
JNC XIA
LJMP LFL_PA11
XIA: MOV XPOS,#0
MOV YPOS,#0
RET
COM_A: PUSH 1
MOV R1,A
CLR C
SUBB A,#80H
JC COM40H
MOV A,#0E0H
LJMP COM_END
COM40H: MOV A,R1
CLR C
SUBB A,#40H
JC COM20H
MOV A,#70H
LJMP COM_END
COM20H: MOV A,R1
CLR C
SUBB A,#20H
JC COM10H
MOV A,#38H
LJMP COM_END
COM10H: MOV A,R1
CLR C
SUBB A,#10H
JC COM08H
MOV A,#1CH
LJMP COM_END
COM08H: MOV A,R1
CLR C
SUBB A,#08H
JC COM04H
MOV A,#0EH
LJMP COM_END
COM04H: MOV A,R1
CLR C
SUBB A,#04H
JC COM02H
MOV A,#07H
LJMP COM_END
COM02H: MOV A,R1
CLR C
SUBB A,#02H
JC COM01H
MOV A,#03H
LJMP COM_END
COM01H: MOV A,#01H
COM_END:POP 1
RET
COM_A1: PUSH 1
MOV R1,A
CLR C
SUBB A,#28
JC COM40H1
MOV A,#01H
LJMP COM_END1
COM40H1: MOV A,R1
CLR C
SUBB A,#24
JC COM20H1
MOV A,#02H
LJMP COM_END1
COM20H1: MOV A,R1
CLR C
SUBB A,#20
JC COM10H1
MOV A,#01H
LJMP COM_END1
COM10H1: MOV A,R1
CLR C
SUBB A,#16
JC COM08H1
MOV A,#08H
LJMP COM_END1
COM08H1: MOV A,R1
CLR C
SUBB A,#12
JC COM04H1
MOV A,#10H
LJMP COM_END1
COM04H1: MOV A,R1
CLR C
SUBB A,#8
JC COM02H1
MOV A,#20H
LJMP COM_END1
COM02H1: MOV A,R1
CLR C
SUBB A,#4
JC COM01H1
MOV A,#40H
LJMP COM_END1
COM01H1: MOV A,#80H
COM_END1:POP 1
RET
LCDWRITE: ;定位并寫數(shù)據(jù)子程序
LCALL LCDPOS ;內(nèi)部寫數(shù)指針定位
LCALL LCDWD ;寫數(shù)據(jù)
RET
LCDPOS: ;內(nèi)部寫數(shù)指針定位子程序
PUSH ACC
MOV A,XPOS
JB ACC.6,LPS_LAY
MOV A,YPOS ;XPOS列方向小于64則對CS1操作
ANL A,#07H
ADD A,#0B8H
CALL LCDWC1 ;設(shè)頁碼
MOV A,XPOS
ANL A,#3FH
ORL A,#40H
CALL LCDWC1 ;設(shè)列碼
JMP LPS_LAX
LPS_LAY:MOV A,YPOS ;XPOS列方向大于等于64則對CS2操作
ANL A,#07H
ADD A,#0B8H
CALL LCDWC2 ;設(shè)頁碼
MOV A,XPOS
ANL A,#3FH
ORL A,#40H
CALL LCDWC2 ;設(shè)列碼
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -