📄 1.19无联机有错误码版本.asm
字号:
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DLY10MS
RET
;##########液晶驱动子程序-PR1,PR2,PR3,PR4,PR5,PR6################
; 直接驱动子程序由6个子程序组成:
; 1. 写指令代码子程序(左屏E1)PR1
; 2. 写显示数据子程序(左屏E1)PR2
; 3. 读显示数据子程序(左屏E1)PR3
; 4. 写指令代码子程序(右屏E2)PR4
; 5. 写显示数据子程序(右屏E2)PR5
; 6. 读显示数据子程序(右屏E2)PR6
; 占用内部寄存器:A,COM:液晶模块指令缓存,DAT1:液晶数据缓存
; 占用系统接口资源: CWADD1,CRADD1,DWADD1,DRADD1,CWADD2,CRADD2,DWADD2,DRADD2
; 入口参数:COM 或 DAT1
; 出口参数: 无
;需调用子程序:无
;###############################################################
;------------写指令子程序(E1)-------------------------
PR1: PUSH DPL
PUSH DPH
MOV DPTR,#CRADD1 ;设置读状态字地址 地
PR11: MOVX A,@DPTR ;读状态字
JB ACC.7,PR11 ;判"忙"标志为"0"否, 否再读
MOV DPTR,#CWADD1 ;设置写指令代码地址
MOV A,COM ;取指令代码
MOVX @DPTR,A ;写指令代码
POP DPH
POP DPL
RET
;=============写数据子程序(E1)===========================
PR2: PUSH DPL
PUSH DPH
MOV DPTR,#CRADD1 ;设置读状态字地址
PR21: MOVX A,@DPTR ;读状态字
JB ACC.7,PR21 ;判"忙"标志为"0"否, 否再读
MOV DPTR,#DWADD1 ;设置写显示数据地址
MOV A,DAT1 ;取数据
MOVX @DPTR,A ;写数据
POP DPH
POP DPL
RET
;=============读数据子程序(E1)===========================
PR3: PUSH DPL
PUSH DPH
MOV DPTR,#CRADD1 ;设置读状态字地址
PR31: MOVX A,@DPTR ;读状态字
JB ACC.7,PR31 ;判"忙"标志为"0"否, 否再读
MOV DPTR,#DRADD1 ;设置读显示数据地址
MOVX A,@DPTR ;读数据
MOV DAT1,A ;存数据
POP DPH
POP DPL
RET
;=============写指令子程序(E2)===========================
PR4: PUSH DPL
PUSH DPH
MOV DPTR,#CRADD2 ;设置读状态字地址
PR41: MOVX A,@DPTR ;读状态字
JB ACC.7,PR41 ;判"忙"标志为"0"否, 否再读
MOV DPTR,#CWADD2 ;设置写指令代码地址
MOV A,COM ;取指令代码
MOVX @DPTR,A ;写指令代码
POP DPH
POP DPL
RET
;=============写数据子程序(E2)===========================
PR5: PUSH DPL
PUSH DPH
MOV DPTR,#CRADD2 ;设置读状态字地址
PR51: MOVX A,@DPTR ;读状态字
JB ACC.7,PR51 ;判"忙"标志为"0"否, 否再读
MOV DPTR,#DWADD2 ;设置写显示数据地址
MOV A,DAT1 ;取数据
MOVX @DPTR,A ;写数据
POP DPH
POP DPL
RET
;=============读数据子程序(E2)===========================
PR6: PUSH DPL
PUSH DPH
MOV DPTR,#CRADD2 ;设置读状态字地址
PR61: MOVX A,@DPTR ;读状态字
JB ACC.7,PR61 ;判"忙"标志为"0"否, 否再读
MOV DPTR,#DRADD2 ;设置读显示数据地址
MOVX A,@DPTR ;读数据
MOV DAT1,A ;存数据
POP DPH
POP DPL
RET
;###############显示标题程序段-DISTITL ####################
;入口参数:无
;出口参数:无
;需调用函子程序:16*16点阵中文写入程序-CCW_PR
;################################################
DISTITL:MOV O_YL,#02H
MOV O_XL,#18H
MOV CODE,#00H ;莱
LCALL CCW_PR
MOV O_YL,#02H
MOV O_XL,#28H
MOV CODE,#01H ;芜
LCALL CCW_PR
MOV O_YL,#02H
MOV O_XL,#38H
MOV CODE,#02H ;双
LCALL CCW_PR
MOV O_YL,#02H
MOV O_XL,#48H
MOV CODE,#03H ;威
LCALL CCW_PR
MOV O_YL,#00H
MOV O_XL,#08H
MOV CODE,#04H ;红
LCALL CCW_PR
MOV O_YL,#00H
MOV O_XL,#18H
MOV CODE,#05H ;外
LCALL CCW_PR
MOV O_YL,#00H
MOV O_XL,#28H
MOV CODE,#06H ;抄
LCALL CCW_PR
MOV O_YL,#00H
MOV O_XL,#38H
MOV CODE,#07H ;表
LCALL CCW_PR
MOV O_YL,#00H
MOV O_XL,#48H
MOV CODE,#08H ;系
LCALL CCW_PR
MOV O_YL,#00H
MOV O_XL,#58H
MOV CODE,#09H ;统
LCALL CCW_PR
RET
;############显示汉字"机号"子程序-DISJH ##########
;入口参数:无
;出口参数:无
;调用子程序:16乘16点阵字中文写入子程序-CNW_PR
;################################################
DISJH: MOV O_YL,#02H
MOV O_XL,#00H
MOV CODE,#1DH
LCALL CCW_PR ;"机"
MOV O_YL,#02H
MOV O_XL,#10H
MOV CODE,#18H
LCALL CCW_PR ;"号"
RET
;###########8*16点阵字符写入程序-CNW_PR #################
; 程序参数选择:PARA1 PARA1 EQU 3DH ;液晶模块参数 MGLS12232 用于判断在左半边显示还是在右半边显示
; 占用内部资源:O_XL,O_YL,CODE,COUNT1,A,DPTR
; 入口参数:列地址:O_XL,页地址的D0,D1: O_YL,字符字库偏移量:CODE
; 出口参数: 无
; 内部调用子程序:
; 1. 写指令代码子程序(左屏E1)PR1
; 2. 写显示数据子程序(左屏E1)PR2
; 3. 写指令代码子程序(右屏E2)PR4
; 4. 写显示数据子程序(右屏E2)PR5
; 连接字库:CCTAB
;###########################################################
CCW_PR: MOV DPTR,#CCTAB ;确定汉字字符字模块首地址
MOV A,CODE ;取代码
MOV B,#20H ;字模块宽度为32个字节
MUL AB ;代码x32
ADD A,DPL ;字符字模块首地址
MOV DPL,A ;=字模库首地址+代码x32
MOV A,B
ADDC A,DPH
MOV DPH,A
PUSH O_XL ;列地址入栈
PUSH O_XL ;列地址入栈
MOV CODE,#00H ;代码寄存器借用为间址寄存器
CCW_1: MOV COUNT1,#10H ;计数器设置为16
MOV A,O_YL ;读页地址寄存器
ANL A,#03H
ORL A,#0B8H ;"或"页地址设置代码
MOV COM,A ;写页地址设置指令
LCALL PR1
LCALL PR4
POP O_XL ;取列地址值
MOV A,O_XL ;读列地址寄存器
CLR C
SUBB A,#PARA1 ;列地址-模块参数
JC CCW_2 ;〈0为左半屏显示区域(E1)
MOV O_XL,A ;≥0为右半屏显示区域(E2)
MOV A,O_YL
SETB ACC.3 ;设置区域标志位.
MOV O_YL,A ;"0"为E1,"1"为E2
CCW_2: MOV COM,O_XL ;设置列地址值
MOV A,O_YL ;判区域标志以确定设置哪个控制器
JNB ACC.3,CCW_3
LCALL PR4 ;区域E2
LJMP CCW_4
CCW_3: LCALL PR1 ;区域E1
CCW_4: MOV A,CODE ;取间址寄存器值
MOVC A,@A+DPTR ;取汉字字模数据
MOV DAT1,A ;写数据
MOV A,O_YL
JNB ACC.3,CCW_5
LCALL PR5 ;区域E2
LJMP CCW_6
CCW_5: LCALL PR2 ;区域E1
CCW_6: INC CODE ;间址寄存器加1
INC O_XL ;列地址寄存器加1
MOV A,O_XL ;判列地址是否超出区域范围
CJNE A,#PARA1,CCW_7
CCW_7: JC CCW_8 ;未超出则继续
MOV A,O_YL ;超出则判是否在区域E2
JB ACC.3,CCW_8 ;在区域E2则退出
SETB ACC.3 ;在区域E1则修改成区域E2
MOV O_YL,A
MOV COM,#00H ;设置区域E2列地址为"0"
LCALL PR4
CCW_8: DJNZ COUNT1,CCW_4 ;当页循环
MOV A,O_YL ;读页地址寄存器
JB ACC.7,CCW_9 ;判完成标志D7位, "1"则完成退出
INC A ;否则页地址加1
SETB ACC.7 ;置完成位为"1"
CLR ACC.3
MOV O_YL,A
MOV CODE,#10H ;间址寄存器设置为16
LJMP CCW_1 ;大循环
CCW_9: RET
;==============================================================
; 中文字符库
CCTAB:
;莱 CCFF2 00H
DB 000H,004H,024H,0E4H,024H,03FH,024H,0F4H
DB 024H,024H,03FH,0E4H,024H,024H,004H,000H
DB 002H,082H,022H,012H,00BH,006H,002H,0FFH
DB 002H,006H,00BH,012H,022H,042H,082H,082H
;芜 CD1F4 01H
DB 004H,004H,004H,024H,02FH,0E4H,024H,024H
DB 024H,02FH,024H,024H,004H,004H,004H,004H
DB 000H,081H,041H,021H,011H,009H,007H,001H
DB 03FH,041H,041H,041H,041H,079H,001H,000H
;双 CB5E7 02H
DB 000H,012H,022H,042H,082H,002H,0FEH,000H
DB 000H,012H,022H,0C2H,082H,002H,0FEH,000H
DB 020H,010H,008H,004H,002H,001H,002H,004H
DB 028H,010H,008H,004H,003H,00DH,010H,020H
;威 CD7D3 03H
DB 000H,000H,0F8H,028H,0E8H,028H,028H,028H
DB 008H,0FFH,00AH,00CH,008H,0C0H,000H,000H
DB 040H,030H,00FH,041H,027H,019H,019H,027H
DB 000H,011H,00AH,004H,00AH,011H,020H,018H
;红 CBAEC 04H
DB 020H,030H,02CH,0A3H,060H,018H,000H,008H
DB 008H,008H,0F8H,008H,008H,00CH,008H,000H
DB 022H,066H,023H,012H,012H,052H,040H,040H
DB 040H,040H,07FH,040H,040H,060H,040H,000H
;外 CCDE2 05H
DB 080H,040H,020H,058H,087H,004H,0C4H,03CH
DB 000H,000H,0FFH,020H,040H,080H,000H,000H
DB 040H,020H,010H,008H,005H,003H,000H,000H
DB 000H,000H,0FFH,000H,000H,000H,003H,000H
;抄 CB3AD 06H
DB 008H,008H,008H,0FFH,088H,048H,080H,040H
DB 030H,000H,0FFH,000H,010H,0A0H,060H,000H
DB 002H,042H,081H,07FH,000H,040H,040H,020H
DB 020H,011H,00BH,004H,002H,001H,000H,000H
;表 CB1ED 07H
DB 000H,040H,044H,054H,054H,054H,0D4H,0FFH
DB 054H,054H,054H,054H,054H,044H,040H,000H
DB 008H,008H,004H,004H,0FEH,043H,021H,010H
DB 003H,004H,008H,014H,023H,062H,020H,000H
;系 CCFB5 08H
DB 000H,000H,002H,022H,0B2H,0AAH,066H,062H
DB 022H,011H,04DH,081H,001H,001H,000H,000H
DB 000H,040H,021H,013H,009H,005H,041H,081H
DB 07FH,001H,005H,009H,013H,062H,000H,000H
;统 CCDB3 09H
DB 020H,030H,02CH,0A3H,060H,010H,084H,0C4H
DB 0A4H,09DH,086H,084H,0A4H,0C4H,084H,000H
DB 020H,022H,023H,012H,012H,092H,040H,030H
DB 00FH,000H,000H,03FH,040H,041H,070H,000H
;正 CD5FD 0AH
DB 000H,002H,002H,0C2H,002H,002H,002H,002H
DB 0FEH,082H,082H,082H,082H,082H,002H,000H
DB 020H,020H,020H,03FH,020H,020H,020H,020H
DB 03FH,020H,020H,020H,020H,020H,020H,000H
;在 CD4DA 0BH
DB 000H,004H,004H,0C4H,064H,09CH,087H,084H
DB 084H,0E4H,084H,084H,084H,084H,004H,000H
DB 004H,002H,001H,07FH,000H,020H,020H,020H
DB 020H,03FH,020H,020H,020H,020H,020H,000H
;请 CC7EB 0CH
DB 040H,042H,04CH,0C4H,000H,022H,0AAH,0AAH
DB 0AAH,0BFH,0AAH,0AAH,0AAH,022H,020H,000H
DB 000H,000H,000H,07FH,020H,010H,0FFH,00AH
DB 00AH,00AH,04AH,08AH,07FH,000H,000H,000H
;稍 CC9D4 0DH
DB 000H,012H,092H,072H,0FFH,051H,081H,0F2H
DB 09CH,090H,09FH,090H,098H,0F4H,002H,000H
DB 008H,006H,001H,000H,0FFH,000H,000H,0FFH
DB 004H,004H,004H,044H,084H,07FH,000H,000H
;侯 CBAEE 0EH
DB 040H,020H,0F8H,007H,012H,010H,0F2H,052H
DB 052H,0D2H,052H,05EH,050H,050H,010H,000H
DB 000H,000H,0FFH,000H,082H,043H,022H,012H
DB 00AH,007H,01AH,022H,062H,0C2H,042H,000H
;成 CB3C9 0FH
DB 000H,000H,0F8H,048H,048H,048H,0C8H,008H
DB 0FFH,008H,009H,00AH,0C8H,088H,008H,000H
DB 040H,030H,00FH,000H,008H,050H,04FH,020H
DB 010H,00BH,00CH,012H,021H,040H,0F0H,000H
;功 CB9A6 10H
DB 000H,004H,004H,004H,0FCH,004H,014H,014H
DB 010H,090H,07FH,010H,010H,0F0H,000H,000H
DB 004H,00CH,004H,004H,003H,042H,022H,011H
DB 00CH,023H,020H,060H,020H,01FH,000H,000H
;失 CCAA7 11H
DB 000H,040H,020H,018H,016H,010H,010H,0FFH
DB 010H,010H,010H,010H,010H,000H,000H,000H
DB 000H,001H,081H,041H,021H,011H,00DH,003H
DB 005H,009H,031H,061H,0C1H,041H,001H,000H
;败 CB0DC 12H
DB 000H,000H,0FEH,002H,0F2H,002H,0FEH,020H
DB 0F8H,017H,012H,010H,0F0H,010H,010H,000H
DB 000H,040H,031H,00CH,003H,004H,0B9H,050H
DB 020H,013H,00CH,013H,060H,0C0H,040H,000H
;设 CB4F2 13H
DB 020H,022H,024H,028H,020H,000H,040H,020H
DB 0DCH,044H,044H,044H,05CH,0E0H,020H,020H
DB 000H,000H,000H,000H,07FH,020H,050H,040H
DB 021H,016H,080H,080H,016H,021H,040H,040H
;置 CD3A1 14H
DB 000H,020H,02FH,0A9H,0AFH,0AFH,0E9H,0B9H
DB 0A9H,0AFH,0A9H,0A9H,02FH,020H,000H,000H
DB 080H,080H,080H,0FFH,0AAH,0AAH,0AAH,0AAH
DB 0AAH,0AAH,0AAH,0FFH,080H,080H,080H,000H
;完 CCDEA 15H
DB 000H,090H,08CH,0A4H,0A4H,0A4H,0A5H,0A6H
DB 0A4H,0A4H,0A4H,0A4H,094H,08CH,004H,000H
DB 000H,080H,040H,020H,018H,007H,000H,000H
DB 000H,03FH,040H,040H,040H,070H,000H,000H
;联 CC1AA 16H
DB 002H,0FEH,092H,092H,092H,0FEH,012H,011H
DB 012H,01CH,0F0H,018H,017H,012H,010H,000H
DB 008H,01FH,008H,008H,004H,0FFH,005H,081H
DB 041H,031H,00FH,011H,021H,0C1H,041H,000H
;户 CBBA7 17H
DB 000H,000H,000H,0F8H,088H,088H,088H,089H
DB 08AH,08EH,088H,088H,088H,0F8H,000H,000H
DB 080H,040H,030H,00FH,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
;号 CBAC5 18H
DB 040H,040H,040H,05FH,0D1H,051H,051H,051H
DB 051H,051H,051H,05FH,040H,040H,040H,000H
DB 000H,000H,000H,002H,007H,002H,002H,022H
DB 042H,082H,042H,03EH,000H,000H,000H,000H
;用 CD3C3 19H
DB 000H,000H,000H,0FEH,022H,022H,022H,022H
DB 0FEH,022H,022H,022H,022H,0FEH,000H,000H
DB 080H,040H,030H,00FH,002H,002H,002H,002H
DB 0FFH,002H,002H,042H,082H,07FH,000H,000H
;量 CC1BF 1AH
DB 040H,040H,040H,0DFH,055H,055H,055H,0D5H
DB 055H,055H,055H,0DFH,040H,040H,040H,000H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -