;----------逐字依次输入方式-----------
COM EQU 20H ; 指令寄存器
DAT EQU 21H ; 数据寄存器
CW_Add EQU 8000H ; 指令口写地址
CR_Add EQU 8200H ; 指令口读地址
DW_Add EQU 8100H ; 数据口写地址
DR_Add EQU 8300H ; 数据口读地址 ORG 0000H
MAIN:MOV SP,#60H
MOV A,#30H ;功能指令设置 MOV DPTR,#CW_Add
MOV R2,#03H
L1:MOVX @DPTR,A
LCALL DELAY
DJNZ R2,L1
MOV COM,#38H ;设置工作方式
LCALL PR1
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0FH ;设置显示方式
LCALL PR1
MOV COM,#80H ;设置DDRAM地址00H LCALL PR1
MOV DPTR,#TAB
MOV R2,#12 ;显示前8位
MOV R3,#00
WRIN: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
INC R3
DJNZ R2,WRIN
SJMP $
;-------写指令代码子程序---------
PR1: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR11: MOVX A,@DPTR
JB ,PR11
MOV A,COM
MOV DPTR,#CW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
;--------写显示数据子程序----------
PR2: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR21:MOVX A,@DPTR
JB ,PR21
MOV A,DAT
MOV DPTR,#DW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
DELAY:MOV R6,#00H
MOV R7,#00H
DELAY1:NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
TAB: DB 43H,75H,72H,73H,6FH,72H,20H ;Cursor DB 57H,72H,69H,74H,65H ;write
END
;----------逐字依次输入,两行显示方式----------- COM EQU 20H ; 指令寄存器
DAT EQU 21H ; 数据寄存器
CW_Add EQU 8000H ; 指令口写地址
CR_Add EQU 8200H ; 指令口读地址
DW_Add EQU 8100H ; 数据口写地址
DR_Add EQU 8300H ; 数据口读地址
ORG 0000H
MAIN:MOV SP,#60H
MOV A,#30H ;功能指令设置
MOV DPTR,#CW_ADD
MOV R2,#03H
L1:MOVX @DPTR,A
LCALL DELAY
DJNZ R2,L1
MOV COM,#38H ;设置工作方式
LCALL PR1
MOV COM,#06H ;设置显示方式
LCALL PR1
MOV COM,#0fH ;清屏
LCALL PR1
MOV COM,#01H ;设置输入方式
LCALL PR1
MOV COM,#80H ;设置DDRAM地址00H LCALL PR1
MOV DPTR,#TAB
MOV R2,#07 ;显示前8位
MOV R3,#00H
WRIN: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
INC R3
DJNZ R2,WRIN
MOV COM,#0C0H ;设置DDRAM地址40H LCALL PR1
MOV R2,#05H ;显示后4位
WRIN1: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
INC R3
DJNZ R2,WRIN1
SJMP MAIN
;-------写指令代码子程序---------
PR1: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR11: MOVX A,@DPTR
JB ,PR11
MOV A,COM
MOV DPTR,#CW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
;--------写显示数据子程序----------
PR2: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR21:MOVX A,@DPTR
JB ,PR21
MOV A,DAT
MOV DPTR,#DW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
DELAY:MOV R6,#00H
MOV R7,#00H
DELAY1:NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
TAB: DB 43H,75H,72H,73H,6FH,72H,20H ;Cursor DB 57H,72H,69H,74H,65H ;write
END
;----------光标左移输入,两行显示方式----------- COM EQU 20H
DAT EQU 21H
CW_ADD EQU 8000H
CR_ADD EQU 8200H
DW_ADD EQU 8100H
DR_ADD EQU 8300H
ORG 0000H
MAIN:MOV SP,#60H
MOV A,#30H ;功能指令设置
MOV DPTR,#CW_ADD
MOV R2,#03H
L1:MOVX @DPTR,A
LCALL DELAY
DJNZ R2,L1
MOV COM,#38H ;设置工作方式
LCALL PR1
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0FH ;设置显示方式
LCALL PR1
MOV COM,#04H ;设置输入方式,减方式 LCALL PR1
MOV COM,#0C5H ;设置DDRAM地址44H
LCALL PR1
MOV DPTR,#TAB
MOV R2,#05 ;显示后5位
MOV R3,#11 ;从第12位开始显示
WRIN: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
DEC R3
DJNZ R2,WRIN
MOV COM,#87H ;设置DDRAM地址07H LCALL PR1
MOV R2,#08H ;显示前8位
WRIN1: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
DEC R3
DJNZ R2,WRIN1
SJMP $
;-------写指令代码子程序---------
PR1: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR11: MOVX A,@DPTR
JB ,PR11
MOV A,COM
MOV DPTR,#CW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
;--------写显示数据子程序----------
PR2: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR21:MOVX A,@DPTR
JB ,PR21
MOV A,DAT
MOV DPTR,#DW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
DELAY:MOV R6,#00H
MOV R7,#00H
DELAY1:NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
TAB: DB 43H,75H,72H,73H,6FH,72H,20H ;Cursor DB 57H,72H,69H,74H,65H ;write END
;----------左滚动输入方式-----------
COM EQU 20H ; 指令寄存器
DAT EQU 21H ; 数据寄存器
CW_Add EQU 8000H ; 指令口写地址
CR_Add EQU 8200H ; 指令口读地址
DW_Add EQU 8100H ; 数据口写地址
DR_Add EQU 8300H ; 数据口读地址 ORG 0000H
MAIN:MOV SP,#60H
MOV A,#30H ;功能指令设置
MOV DPTR,#CW_ADD
MOV R2,#03H
L1:MOVX @DPTR,A
LCALL DELAY
DJNZ R2,L1
MOV COM,#38H ;设置工作方式
LCALL PR1
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0EH ;设置显示方式
LCALL PR1
MOV COM,#07H ;设置输入方式,画面滚动 LCALL PR1
MOV COM,#8cH ;设置DDRAM地址07H
LCALL PR1
MOV DPTR,#TAB
MOV R2,#012 ;显示前7位
MOV R3,#00
WRIN: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
INC R3
DJNZ R2,WRIN
SJMP $
;-------写指令代码子程序---------
PR1: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR11: MOVX A,@DPTR
JB ,PR11
MOV A,COM
MOV DPTR,#CW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
;--------写显示数据子程序----------
PR2: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR21:MOVX A,@DPTR
JB ,PR21
MOV A,DAT
MOV DPTR,#DW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
DELAY:MOV R6,#00H
MOV R7,#00H
DELAY1:NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
TAB: DB 43H,75H,72H,73H,6FH,72H,20H ;Cursor
DB 57H,72H,69H,74H,65H ;write
END
;----------自定义字符库方式-----------
COM EQU 20H
DAT EQU 21H
CW_ADD EQU 8000H
CR_ADD EQU 8200H
DW_ADD EQU 8100H
DR_ADD EQU 8300H
ORG 0000H
MAIN:MOV SP,#60H
MOV A,#30H ;功能指令设置
MOV DPTR,#CW_ADD
MOV R2,#03H
L1:MOVX @DPTR,A
LCALL DELAY
DJNZ R2,L1
MOV COM,#38H ;设置工作方式
LCALL PR1
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0FH ;设置显示方式
LCALL PR1
LCALL CG_WRITE ;调用自定义的字库子程序 MOV COM,#80H ;设置DDRAM地址
LCALL PR1
MOV DPTR ,#TABDY ;设置字表首地址
MOV R2,#08
MOV R3,#00H
LOOP1:MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R3
DJNZ R2,LOOP1
MOV COM,#0C0H ;设置DDRAM地址
LCALL PR1
MOV R2,#08H
LOOP2:MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R3
DJNZ R2,LOOP2
SJMP $
CG_WRITE:MOV COM,#40H ;编字库
LCALL PR1
MOV R2,#64
MOV R3,#00H
MOV DPTR,#CGTAB ;设置字模数据的首地址 CG1:MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R3
DJNZ R2,CG1
RET
;-------写指令代码子程序---------
PR1: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR11: MOVX A,@DPTR
JB ,PR11
MOV A,COM
MOV DPTR,#CW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
;--------写显示数据子程序----------
PR2: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_ADD
PR21:MOVX A,@DPTR
JB ,PR21
MOV A,DAT
MOV DPTR,#DW_ADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
DELAY:MOV R6,#00H
MOV R7,#00H
DELAY1:NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
CGTAB:DB 08H,0FH,12H,0FH,0AH,1FH,02H,02H ;"年"代码=00H
DB 0FH,09H,0FH,09H,0FH,09H,11H,00H ;"月"代码=01H DB 1FH,11H,11H,1FH,11H,11H,1FH,00H ;"日"代码=02H
DB 11H,0AH,04H,1FH,04H,1FH,04H,00H ;"$"代码=03H
DB 0EH,00H,1FH,0AH,0AH,0AH,13H,00H ;"元"代码=04H
DB 18H,18H,07H,08H,08H,08H,07H,00H ;"摄氏度"代码=05H DB 04H,0AH,15H,04H,04H,04H,04H,00H ;"↑"代码=06H
DB 17H,15H,15H,15H,15H,15H,17H,00H ;"10"代码=07H
TABDY:DB 57H,46H,48H,30H,36H,00H,34H,01H ;WFH06年4月
DB 33H,02H,54H,3DH,32H,33H,05H,06H ;3日T=23摄氏度↑ END