📄 192_64cog_drv.a51
字号:
NAME LCD_Drv
?PR?_CLR_LCD?LCD_Drv SEGMENT CODE
?PR?_InitializationLcd?LCD_Drv SEGMENT CODE
?PR?_SET_LCD_LIGHT?LCD_Drv SEGMENT CODE
;?PR?_W_Lcd?LCD_Drv SEGMENT CODE
?PR?_W_DOT?LCD_Drv SEGMENT CODE
?PR?_R_ZK?LCD_Drv SEGMENT CODE
PUBLIC _CLR_LCD
PUBLIC _InitializationLcd
PUBLIC _SET_LCD_LIGHT
;PUBLIC _W_Lcd
PUBLIC _W_DOT
PUBLIC _R_ZK
EXTRN DATA (ROW,LINE)
EXTRN DATA (Bar)
LCD_SCK BIT P1.7;
LCD_SI BIT P1.5;
LCD_CMD BIT P3.5;
LCDCS1 BIT P1.6;
LCDCS2 BIT P1.3;
;ZJZKADDR DATA 01C40H ;用于存放自检时要用到的部份ASCII码的点阵
;读字库
;R7为字节数
;Page为开始页面,Address为开始地址
RSEG ?PR?_R_ZK?LCD_Drv
_R_ZK:
MOV DPTR, #ZJZKADDR
CLR C
MOV A, DPL
ADD A, r5
MOV DPL, A
MOV A, DPH
ADDC A, r4
MOV DPH, A
MOV R0,#Bar
R_ZK1:
CLR A
MOVC A,@A+DPTR
INC DPTR
MOV @R0,A
INC R0
DJNZ R7,R_ZK1
RET
;清屏
RSEG ?PR?_CLR_LCD?LCD_Drv
_CLR_LCD:
CLR LCDCS1
CLR LCDCS2
MOV 0,7
MOV R3,#0
CLR_LCD1:
MOV R7,#0
LCALL _SET_Y_ADDR
MOV 7,3
LCALL _SET_X_ADDR
MOV R1,#96 ;128
CLR_Lcd3:
MOV A,R0
LCALL SENDLCD_DATA
DJNZ R1,CLR_Lcd3
INC R3
CJNE R3,#8,CLR_LCD1
RET
;初始化液晶
;R7为液晶对比度值
RSEG ?PR?_InitializationLcd?LCD_Drv
_InitializationLcd:
MOV A, R7
PUSH ACC
CLR LCDCS1
CLR LCDCS2
MOV A,#0E2H ;Initialise the internal fuction
LCALL SENDLCD_ORD
MOV A,#0A2H ;Set LCD Bias
LCALL SENDLCD_ORD
MOV A,#0A0H ;ACD Seting (normal direction)
LCALL SENDLCD_ORD
MOV A,#0C8H ;Selects COM output scan direction
LCALL SENDLCD_ORD
MOV A,#2FH
LCALL SENDLCD_ORD
LCALL LDELAY
MOV A,#81H ;
LCALL SENDLCD_ORD
LCALL LDELAY
POP ACC
LCALL SENDLCD_ORD
LCALL LDELAY
MOV A,#23H
LCALL SENDLCD_ORD
LCALL LDELAY
MOV A,#0AFH
LCALL SENDLCD_ORD
MOV A,#60H
LCALL SENDLCD_ORD
LCALL LDELAY
RET
LDELAY:
MOV R2,#10
LDELAY1:
MOV R0,#50
DJNZ R0,$
DJNZ R2,LDELAY1
RET
SENDLCD_ORD:
CPL A
MOV R2,#8
CLR LCD_CMD
SJMP SENDLCD ;送命令
SENDLCD_DATA:
CPL A
MOV R2,#8
SETB LCD_CMD ;送数据
SENDLCD:
CLR C
SENDLCD1:
RLC A
clr LCD_SCK
NOP
MOV LCD_SI, C
nop
setb LCD_SCK
DJNZ R2,SENDLCD1
RET
;X页地址设置
;R7为X地址,R5为显示区域
_SET_X_ADDR:
MOV A,R7
MOV DPTR,#X_ADDR
MOVC A,@A+DPTR
ANL A,#0FH
ORL A,#0B0H
LCALL SENDLCD_ORD
RET
X_ADDR:
DB 4,5,6,7,0,1,2,3
;Y地址设置,R7为Y地址
_SET_Y_ADDR:
MOV A,R7
SWAP A
ANL A,#0FH
ORL A,#10H
LCALL SENDLCD_ORD
MOV A,R7
ANL A,#0FH
LCALL SENDLCD_ORD
RET
;液晶显示屏背光调节
RSEG ?PR?_SET_LCD_LIGHT?LCD_Drv
_SET_LCD_LIGHT:
CLR LCDCS1
CLR LCDCS2
MOV A,#81H ;
LCALL SENDLCD_ORD
LCALL LDELAY
MOV A,R7
LCALL SENDLCD_ORD
LCALL LDELAY
RET
;写显示数据
;R7为要写的数据 R5为显示字符个数
;RSEG ?PR?_W_Lcd?LCD_Drv
;_W_Lcd:
; MOV 0,7
; MOV R4,#2
; MOV A,LINE
; MOV B,#8
; MUL AB
; MOV R3,A
; MOV A,ROW
; ADD A,ROW
; MOV R1,A
;W_Lcd5:
; PUSH 5
; PUSH 3
; PUSH 1
;W_Lcd4:
; MOV A,R3
; CLR C
; SUBB A,#96
; JC W_LCD4_0
; SETB LCDCS1
; CLR LCDCS2
; MOV A,R3
; CLR C
; SUBB A,#96
; MOV B,A
; SJMP W_LCD4_1
;W_LCD4_0:
; MOV A,R3
; MOV B,A
; CLR LCDCS1
; SETB LCDCS2
;W_LCD4_1:
; MOV 7,B
; LCALL _SET_Y_ADDR
; MOV 7,1
; LCALL _SET_X_ADDR
;W_Lcd6:
; MOV R7,#8
;W_Lcd1:
; MOV A,R0
; LCALL SENDLCD_DATA
; DJNZ R7,W_Lcd1
; MOV A,R3
; ADD A,#8
; MOV R3,A
; CLR C
; SUBB A,#192
; JC W_Lcd2
; INC R1
; INC R1
; MOV R3,#0
; DJNZ R5,W_Lcd4
; SJMP W_Lcd3
;W_Lcd2:
; DJNZ R5,W_Lcd4 ;W_Lcd6
;W_Lcd3:
; POP 1
; POP 3
; POP 5
; INC R1
; DJNZ R4,W_Lcd5
; RET
;写字符点阵到液晶
;R7为点阵计数
RSEG ?PR?_W_DOT?LCD_Drv
_W_DOT:
MOV 5,7
MOV A,LINE
MOV B,#8
MUL AB
MOV R3,A
MOV A,ROW
ADD A,ROW
MOV R1,A
MOV R0,#Bar
MOV R4,#2
W_DOT2:
PUSH 1
PUSH 3
PUSH 5
W_DOT5:
MOV A,R3
CLR C
SUBB A,#96
JC W_DOT5_0
SETB LCDCS1
CLR LCDCS2
MOV A,R3
CLR C
SUBB A,#96
MOV B,A
SJMP W_DOT5_1
W_DOT5_0:
CLR LCDCS1
SETB LCDCS2
MOV A,R3
MOV B,A
W_DOT5_1:
MOV 7,B
LCALL _SET_Y_ADDR
MOV 7,1
LCALL _SET_X_ADDR
W_DOT1:
MOV A,R3
CLR C
SUBB A,#192
JNC W_DOT3
MOV R7,#8
W_DOT4:
MOV A,@R0
LCALL SENDLCD_DATA
INC R0
DJNZ R7,W_DOT4
MOV A,R3
ADD A,#8
MOV R3,A
DJNZ R5,W_DOT5 ;WDOT1
POP 5
POP 3
POP 1
INC R1
DJNZ R4,W_DOT2
RET
W_DOT3:
INC R1
INC R1
MOV R3,#0
SJMP W_DOT5
RET
ZJZKADDR:
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,38H,0FCH,0FCH,38H,00H,00H,00H,00H,00H,0DH,0DH,00H,00H,00H
DB 00H,0EH,1EH,00H,00H,1EH,0EH,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 20H,0F8H,0F8H,20H,0F8H,0F8H,20H,00H,02H,0FH,0FH,02H,0FH,0FH,02H,00H
DB 38H,7CH,44H,47H,47H,0CCH,98H,00H,06H,0CH,08H,38H,38H,0FH,07H,00H
DB 30H,30H,00H,80H,0C0H,60H,30H,00H,0CH,06H,03H,01H,00H,0CH,0CH,00H
DB 80H,0D8H,7CH,0E4H,0BCH,0D8H,40H,00H,07H,0FH,08H,08H,07H,0FH,08H,00H
DB 00H,10H,1EH,0EH,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,0F0H,0F8H,0CH,04H,00H,00H,00H,00H,03H,07H,0CH,08H,00H,00H
DB 00H,00H,04H,0CH,0F8H,0F0H,00H,00H,00H,00H,08H,0CH,07H,03H,00H,00H
DB 80H,0A0H,0E0H,0C0H,0C0H,0E0H,0A0H,80H,00H,02H,03H,01H,01H,03H,02H,00H
DB 00H,80H,80H,0E0H,0E0H,80H,80H,00H,00H,00H,00H,03H,03H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,10H,1EH,0EH,00H,00H,00H
DB 80H,80H,80H,80H,80H,80H,80H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,0CH,0CH,00H,00H,00H
DB 00H,00H,00H,80H,0C0H,60H,30H,00H,0CH,06H,03H,01H,00H,00H,00H,00H
DB 0F0H,0F8H,0CH,0C4H,0CH,0F8H,0F0H,00H,03H,07H,0CH,08H,0CH,07H,03H,00H
DB 00H,10H,18H,0FCH,0FCH,00H,00H,00H,00H,08H,08H,0FH,0FH,08H,08H,00H
DB 08H,0CH,84H,0C4H,64H,3CH,18H,00H,0EH,0FH,09H,08H,08H,0CH,0CH,00H
DB 08H,0CH,44H,44H,44H,0FCH,0B8H,00H,04H,0CH,08H,08H,08H,0FH,07H,00H
DB 0C0H,0E0H,0B0H,98H,0FCH,0FCH,80H,00H,00H,00H,00H,08H,0FH,0FH,08H,00H
DB 7CH,7CH,44H,44H,44H,0C4H,84H,00H,04H,0CH,08H,08H,08H,0FH,07H,00H
DB 0F0H,0F8H,4CH,44H,44H,0C0H,80H,00H,07H,0FH,08H,08H,08H,0FH,07H,00H
DB 0CH,0CH,04H,84H,0C4H,7CH,3CH,00H,00H,00H,0FH,0FH,00H,00H,00H,00H
DB 0B8H,0FCH,44H,44H,44H,0FCH,0B8H,00H,07H,0FH,08H,08H,08H,0FH,07H,00H
DB 38H,7CH,44H,44H,44H,0FCH,0F8H,00H,00H,08H,08H,08H,0CH,07H,03H,00H
DB 00H,00H,00H,30H,30H,00H,00H,00H,00H,00H,00H,06H,06H,00H,00H,00H
DB 00H,00H,00H,30H,30H,00H,00H,00H,00H,00H,08H,0EH,06H,00H,00H,00H
DB 00H,80H,0C0H,60H,30H,18H,08H,00H,00H,00H,01H,03H,06H,0CH,08H,00H
DB 00H,20H,20H,20H,20H,20H,20H,00H,00H,01H,01H,01H,01H,01H,01H,00H
DB 00H,08H,18H,30H,60H,0C0H,80H,00H,00H,08H,0CH,06H,03H,01H,00H,00H
DB 18H,1CH,04H,0C4H,0E4H,3CH,18H,00H,00H,00H,00H,0DH,0DH,00H,00H,00H
DB 0F0H,0F8H,08H,0C8H,0C8H,0F8H,0F0H,00H,07H,0FH,08H,0BH,0BH,0BH,01H,00H
DB 0E0H,0F0H,98H,8CH,98H,0F0H,0E0H,00H,0FH,0FH,00H,00H,00H,0FH,0FH,00H
DB 04H,0FCH,0FCH,44H,44H,0FCH,0B8H,00H,08H,0FH,0FH,08H,08H,0FH,07H,00H
DB 0F0H,0F8H,0CH,04H,04H,0CH,18H,00H,03H,07H,0CH,08H,08H,0CH,06H,00H
DB 04H,0FCH,0FCH,04H,0CH,0F8H,0F0H,00H,08H,0FH,0FH,08H,0CH,07H,03H,00H
DB 04H,0FCH,0FCH,44H,0E4H,0CH,1CH,00H,08H,0FH,0FH,08H,08H,0CH,0EH,00H
DB 04H,0FCH,0FCH,44H,0E4H,0CH,1CH,00H,08H,0FH,0FH,08H,00H,00H,00H,00H
DB 0F0H,0F8H,0CH,84H,84H,8CH,98H,00H,03H,07H,0CH,08H,08H,07H,0FH,00H
DB 0FCH,0FCH,40H,40H,40H,0FCH,0FCH,00H,0FH,0FH,00H,00H,00H,0FH,0FH,00H
DB 00H,00H,04H,0FCH,0FCH,04H,00H,00H,00H,00H,08H,0FH,0FH,08H,00H,00H
DB 00H,00H,00H,04H,0FCH,0FCH,04H,00H,07H,0FH,08H,08H,0FH,07H,00H,00H
DB 04H,0FCH,0FCH,0C0H,0E0H,3CH,1CH,00H,08H,0FH,0FH,00H,01H,0FH,0EH,00H
DB 04H,0FCH,0FCH,04H,00H,00H,00H,00H,08H,0FH,0FH,08H,08H,0CH,0EH,00H
DB 0FCH,0FCH,38H,70H,38H,0FCH,0FCH,00H,0FH,0FH,00H,00H,00H,0FH,0FH,00H
DB 0FCH,0FCH,38H,70H,0E0H,0FCH,0FCH,00H,0FH,0FH,00H,00H,00H,0FH,0FH,00H
DB 0F8H,0FCH,04H,04H,04H,0FCH,0F8H,00H,07H,0FH,08H,08H,08H,0FH,07H,00H
DB 04H,0FCH,0FCH,44H,44H,7CH,38H,00H,08H,0FH,0FH,08H,00H,00H,00H,00H
DB 0F8H,0FCH,04H,04H,04H,0FCH,0F8H,00H,07H,0FH,08H,0EH,3CH,3FH,27H,00H
DB 04H,0FCH,0FCH,44H,0C4H,0FCH,38H,00H,08H,0FH,0FH,00H,00H,0FH,0FH,00H
DB 18H,3CH,64H,44H,0C4H,9CH,18H,00H,06H,0EH,08H,08H,08H,0FH,07H,00H
DB 00H,1CH,0CH,0FCH,0FCH,0CH,1CH,00H,00H,00H,08H,0FH,0FH,08H,00H,00H
DB 0FCH,0FCH,00H,00H,00H,0FCH,0FCH,00H,07H,0FH,08H,08H,08H,0FH,07H,00H
DB 0FCH,0FCH,00H,00H,00H,0FCH,0FCH,00H,01H,03H,06H,0CH,06H,03H,01H,00H
DB 0FCH,0FCH,00H,0C0H,00H,0FCH,0FCH,00H,07H,0FH,0EH,03H,0EH,0FH,07H,00H
DB 0CH,3CH,0F0H,0E0H,0F0H,3CH,0CH,00H,0CH,0FH,03H,01H,03H,0FH,0CH,00H
DB 00H,3CH,7CH,0C0H,0C0H,7CH,3CH,00H,00H,00H,08H,0FH,0FH,08H,00H,00H
DB 1CH,0CH,84H,0C4H,64H,3CH,1CH,00H,0EH,0FH,09H,08H,08H,0CH,0EH,00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -