📄 lcdshow.asm
字号:
EXTRN XDATA(FIRENUM,FAULTNUM,STARTNUM)
EXTRN DATA(MONTH,DAY,HOUR,MIN,SEC)
EXTRN BIT(NEGS)
PUBLIC _HLINE,SHOWSTARTIMG,_DISPNOEVENT,_OUTEVENT,CLEAR,INTLCD,OUTTIME,OUTSEC,_OUTTNUM,_OUTCUR
PUBLIC ZKPB
WDT EQU P1.6
WCAD1 EQU 0D000H
RSAD1 EQU 0D002H
WDAD1 EQU 0D001H
RDAD1 EQU 0D003H
WCAD2 EQU 0D800H
RSAD2 EQU 0D802H
WDAD2 EQU 0D801H
RDAD2 EQU 0D803H
WCAD3 EQU 0E000H
RSAD3 EQU 0E002H
WDAD3 EQU 0E001H
RDAD3 EQU 0E003H
HZBASE EQU 08000H
ZKPAGE EQU 0C000H
LCDCODE SEGMENT CODE
LCDDATA SEGMENT DATA
SBUFSEG SEGMENT XDATA
RSEG LCDDATA
COM: DS 1
DAT: DS 1
ZKPB: DS 1
TMP1: DS 1
TMP2: DS 1
TMP3: DS 1
TMP4: DS 1
RSEG SBUFSEG
STRBUF: DS 25
RSEG LCDCODE
PRL0: CPL WDT ;写指今代码子程序(左)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD1
PRL01: MOVX A,@DPTR
JB ACC.7,PRL01
MOV DPTR,#WCAD1
MOV A,COM
MOVX @DPTR,A
POP DPH
POP DPL
RET
PRL1: CPL WDT ;写显示数据子程序(左)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD1
PRL11: MOVX A,@DPTR
JB ACC.7,PRL11
MOV DPTR,#WDAD1
MOV A,DAT
JNB NEGS,PRL12
CPL A
PRL12: MOVX @DPTR,A
POP DPH
POP DPL
RET
PRL2: CPL WDT ;读显示数据子程序(左)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD1
PRL21: MOVX A,@DPTR
JB ACC.7,PRL21
MOV DPTR,#RDAD1
MOVX A,@DPTR
MOV A,DAT
POP DPH
POP DPL
RET
PRM0: CPL WDT ;写指令代码子程序(中)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD2
PRM01: MOVX A,@DPTR
JB ACC.7,PRM01
MOV DPTR,#WCAD2
MOV A,COM
MOVX @DPTR,A
POP DPH
POP DPL
RET
PRM1: CPL WDT ;写显示数据子程序(中)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD2
PRM11: MOVX A,@DPTR
JB ACC.7,PRM11
MOV DPTR,#WDAD2
MOV A,DAT
JNB NEGS,PRM12
CPL A
PRM12: MOVX @DPTR,A
POP DPH
POP DPL
RET
PRM2: CPL WDT ;写显示数据子程序(中)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD2
PRM21: MOVX A,@DPTR
JB ACC.7,PRM21
MOV DPTR,#RDAD2
MOVX A,@DPTR
MOV A,DAT
POP DPH
POP DPL
RET
PRR0: CPL WDT ;写指令代码子程序(右)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD3
PRR01: MOVX A,@DPTR
JB ACC.7,PRR01
MOV DPTR,#WCAD3
MOV A,COM
MOVX @DPTR,A
POP DPH
POP DPL
RET
PRR1: CPL WDT ;写显示数据子程序(右)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD3
PRR11: MOVX A,@DPTR
JB ACC.7,PRR11
MOV DPTR,#WDAD3
MOV A,DAT
JNB NEGS,PRR12
CPL A
PRR12: MOVX @DPTR,A
POP DPH
POP DPL
RET
PRR2: CPL WDT ;读显示数据子程序(右)
PUSH DPL
PUSH DPH
MOV DPTR,#RSAD3
PRR21: MOVX A,@DPTR
JB ACC.7,PRR21
MOV DPTR,#RDAD3
MOVX A,@DPTR
MOV A,DAT
POP DPH
POP DPL
RET
INTLCD: CPL WDT ;初始化MGLS19264
MOV COM,#0C0H
LCALL PRL0
LCALL PRM0
LCALL PRR0
MOV COM,#3FH
LCALL PRL0
LCALL PRM0
LCALL PRR0
RET
CLEAR: MOV R4,#00H ;清显示RAM子程序
CLEAR1: MOV A,R4
ORL A,#0B8H
MOV COM,A
MOV A,R4
CJNE A,#2,CLEAR0
CLEAR0: JNC CLEAR00
SETB NEGS
AJMP CLEAR000
CLEAR00:CLR NEGS
CLEAR000:
LCALL PRL0
LCALL PRM0
LCALL PRR0
MOV COM,#40H
LCALL PRL0
LCALL PRM0
LCALL PRR0
MOV R3,#40H
CLEAR2: MOV DAT,#00H
LCALL PRL1
LCALL PRM1
LCALL PRR1
CPL WDT
DJNZ R3,CLEAR2
INC R4
CPL WDT
CJNE R4,#08H,CLEAR1
RET
;画一条水平直线
;入口: R6R7 = 起点X、Y坐标,R4R5 = 终点X、Y坐标,X:0~191,Y:0~63
_HLINE: CPL WDT
INC R4
MOV A,R7
MOV B,#8
DIV AB
PUSH ACC
MOV A,#80H
MOV R0,B
INC R0
HLINE0: RL A
CPL WDT
DJNZ R0,HLINE0
MOV B,A
POP ACC
ORL A,#0B8H
MOV COM,A
LCALL PRL0
LCALL PRM0
LCALL PRR0
HLINE4: MOV A,R6
PUSH ACC
ANL A,#3FH
ORL A,#40H
MOV COM,A
POP ACC
JNB ACC.7,HLINE1
LCALL PRR0
LCALL PRR2
MOV A,DAT
ORL A,B
MOV DAT,A
LCALL PRR1
AJMP HLINE3
HLINE1: JNB ACC.6,HLINE2
LCALL PRM0
LCALL PRM2
MOV A,DAT
ORL A,B
MOV DAT,A
LCALL PRM1
AJMP HLINE3
HLINE2: LCALL PRL0
LCALL PRL2
MOV A,DAT
ORL A,B
MOV DAT,A
LCALL PRL1
HLINE3: INC R6
MOV A,R6
MOV B,R4
CJNE A,B,HLINE4
RET
;显示ASCII字符串
;入口:DPTR = 字符串首地址 R2 = 字符个数 R6 = 显示起点列号 R7 = 显示起点页号
OUTSTR: CPL WDT
MOV A,R7
PUSH ACC
MOV A,#0
MOVC A,@A+DPTR
INC DPTR
PUSH DPH
PUSH DPL
CLR C
MOV B,#20H
SUBB A,B
MOV B,#16
MUL AB
MOV DPTR,#CHTAB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
LCALL PCHAR
POP DPL
POP DPH
POP ACC
MOV R7,A
DJNZ R2,OUTSTR
RET
;显示汉字字符串
;入口:DPTR = 字符串首地址 R2 = 汉字数 R6 = 显示起点列号 R7 = 显示起点页号
OUTHZS: CPL WDT
MOV A,R7
PUSH ACC
MOV A,#0
MOVC A,@A+DPTR
CLR C
SUBB A,#0A0H
MOV B,A
INC DPTR
MOV A,#0
MOVC A,@A+DPTR
CLR C
INC DPTR
PUSH DPH
PUSH DPL
SUBB A,#0A0H
LCALL GETHZADD
LCALL PWZ
POP DPL
POP DPH
POP ACC
MOV R7,A
DJNZ R2,OUTHZS
RET
;计算汉字字模首地址
;入口: B = 区号 A = 位号
;出口: DPTR = 地址,页号有郊
GETHZADD:
CPL WDT
PUSH ACC
MOV A,B
DEC A
MOV B,#94
MUL AB
MOV R1,B
MOV R0,A
POP ACC
DEC ACC
ADD A,R0
MOV R0,A
MOV A,R1
ADDC A,#0
MOV R1,A
PUSH ACC
MOV B,#32
MOV A,R0
MUL AB
MOV R1,B
MOV R0,A
POP ACC
MOV B,#32
MUL AB
XCH A,B
PUSH ACC
XCH A,B
ADD A,R1
MOV R1,A
POP ACC
ADDC A,#0
ANL A,#03H
RL A
RL A
MOV B,A
MOV A,R1
MOV C,ACC.7
MOV 0F1H,C
MOV C,ACC.6
MOV 0F0H,C
ANL A,#3FH
ORL A,#80H
MOV R1,A
MOV DPTR,#ZKPAGE
MOVX A,@DPTR
ANL A,#0FH
MOV ZKPB,A
MOV A,B
SWAP A
ORL A,ZKPB
MOVX @DPTR,A
MOV DPH,R1
MOV DPL,R0
RET
;本子程序为显示一个字符
;入口;R6 = 列号,R7 = 页号,DPTR = 汉字字模首地址,R6:0~191,R7:0~7
PCHAR: CPL WDT
MOV A,R6 ;R6中为列号
MOV R5,A
MOV R3,#2
PCHAR4: MOV R4,#8
MOV A,R5
MOV R6,A
MOV A,R7 ;R7中为页号
ORL A,#0B8H
MOV COM,A
LCALL PRL0
LCALL PRM0
LCALL PRR0
PCHAR0: MOV A,R6
PUSH ACC
ANL A,#3FH
ORL A,#40H
MOV COM,A
POP ACC
JNB ACC.7,PCHAR1
LCALL PRR0
MOV A,#0
MOVC A,@A+DPTR
INC DPTR
INC R6
MOV DAT,A
LCALL PRR1
AJMP PCHAR3
PCHAR1: JNB ACC.6,PCHAR2
LCALL PRM0
MOV A,#0
MOVC A,@A+DPTR
INC DPTR
INC R6
MOV DAT,A
LCALL PRM1
AJMP PCHAR3
PCHAR2: LCALL PRL0
MOV A,#0
MOVC A,@A+DPTR
INC DPTR
INC R6
MOV DAT,A
LCALL PRL1
PCHAR3: DJNZ R4,PCHAR0
INC R7
DJNZ R3,PCHAR4
RET
;本子程序为显示一个汉字
;入口;R6 = 列号,R7 = 页号,DPTR = 汉字字模首地址,页号须有郊;R6:0~191,R7:0~7
PWZ: CPL WDT
MOV A,R6 ;R6中为列号
MOV R5,A
MOV R3,#2
PWZ4: MOV R4,#16
MOV A,R5
MOV R6,A
MOV A,R7 ;R7中为页号
ORL A,#0B8H
MOV COM,A
LCALL PRL0
LCALL PRM0
LCALL PRR0
PWZ0: MOV A,R6
PUSH ACC
ANL A,#3FH
ORL A,#40H
MOV COM,A
POP ACC
JNB ACC.7,PWZ1
LCALL PRR0
MOVX A,@DPTR
INC DPTR
INC R6
MOV DAT,A
LCALL PRR1
AJMP PWZ3
PWZ1: JNB ACC.6,PWZ2
LCALL PRM0
MOVX A,@DPTR
INC DPTR
INC R6
MOV DAT,A
LCALL PRM1
AJMP PWZ3
PWZ2: LCALL PRL0
MOVX A,@DPTR
INC DPTR
INC R6
MOV DAT,A
LCALL PRL1
PWZ3: DJNZ R4,PWZ0
INC R7
DJNZ R3,PWZ4
RET
;显示图片
;入口:R6 = 起点列号,R7 = 起点页号,R3 = 终点列号,R4 = 终点页号
SHOWIMG:CPL WDT
INC R3
; INC R4
SHOWIMG4:
MOV A,R6
PUSH ACC
MOV A,R7
ORL A,#0B8H
MOV COM,A
LCALL PRL0
LCALL PRM0
LCALL PRR0
SHOWIMG3:
MOV A,R6
PUSH ACC
ANL A,#3FH
ORL A,#40H
MOV COM,A
POP ACC
JNB ACC.7,SHOWIMG0
LCALL PRR0
MOV A,#0
MOVC A,@A+DPTR
MOV DAT,A
LCALL PRR1
INC DPTR
INC R6
AJMP SHOWIMG2
SHOWIMG0:
JNB ACC.6,SHOWIMG1
LCALL PRM0
MOV A,#0
MOVC A,@A+DPTR
MOV DAT,A
LCALL PRM1
INC DPTR
INC R6
AJMP SHOWIMG2
SHOWIMG1:
LCALL PRL0
MOV A,#0
MOVC A,@A+DPTR
MOV DAT,A
LCALL PRL1
INC DPTR
INC R6
SHOWIMG2:
MOV A,R6
MOV B,R3
CPL WDT
CJNE A,B,SHOWIMG3
POP ACC
MOV R6,A
INC R7
MOV A,R7
MOV B,R4
CPL WDT
CJNE A,B,SHOWIMG4
RET
SHOWSTARTIMG:
CPL WDT
MOV R2,#14
MOV R6,#80
MOV DPTR,#TIME
MOV R7,#0
SETB NEGS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -