;----------逐字依次输入方式-----------COM EQU 20H ; 指令寄存器DAT EQU 21H ; 数据寄存器CW_Add EQU 8000H ; 指令口写地址CR_Add EQU 8200H ; 指令口读地址DW_Add EQU 8100H ; 数据口写地址DR_Add EQU 8300H ; 数据口读地址 ORG 0000HMAIN:MOV SP,#60HMOV A,#30H ;功能指令设置 MOV DPTR,#CW_AddMOV R2,#03HL1:MOVX @DPTR,ALCALL DELAYDJNZ R2,L1MOV COM,#38H ;设置工作方式LCALL PR1MOV COM,#01H ;清屏LCALL PR1MOV COM,#06H ;设置输入方式LCALL PR1MOV COM,#0FH ;设置显示方式LCALL PR1MOV COM,#80H ;设置DDRAM地址00H LCALL PR1MOV DPTR,#TABMOV R2,#12 ;显示前8位MOV R3,#00WRIN: MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2LCALL DELAYINC R3DJNZ R2,WRINSJMP $;-------写指令代码子程序---------PR1: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR11: MOVX A,@DPTRJB ,PR11MOV A,COMMOV DPTR,#CW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRET;--------写显示数据子程序----------PR2: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR21:MOVX A,@DPTRJB ,PR21MOV A,DATMOV DPTR,#DW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRETDELAY:MOV R6,#00HMOV R7,#00HDELAY1:NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RETTAB: DB 43H,75H,72H,73H,6FH,72H,20H ;Cursor DB 57H,72H,69H,74H,65H ;writeEND;----------逐字依次输入,两行显示方式----------- COM EQU 20H ; 指令寄存器DAT EQU 21H ; 数据寄存器CW_Add EQU 8000H ; 指令口写地址CR_Add EQU 8200H ; 指令口读地址DW_Add EQU 8100H ; 数据口写地址DR_Add EQU 8300H ; 数据口读地址ORG 0000HMAIN:MOV SP,#60HMOV A,#30H ;功能指令设置MOV DPTR,#CW_ADDMOV R2,#03HL1:MOVX @DPTR,ALCALL DELAYDJNZ R2,L1MOV COM,#38H ;设置工作方式LCALL PR1MOV COM,#06H ;设置显示方式LCALL PR1MOV COM,#0fH ;清屏LCALL PR1MOV COM,#01H ;设置输入方式LCALL PR1MOV COM,#80H ;设置DDRAM地址00H LCALL PR1MOV DPTR,#TABMOV R2,#07 ;显示前8位MOV R3,#00HWRIN: MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2LCALL DELAYINC R3DJNZ R2,WRINMOV COM,#0C0H ;设置DDRAM地址40H LCALL PR1MOV R2,#05H ;显示后4位WRIN1: MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2LCALL DELAYINC R3DJNZ R2,WRIN1SJMP MAIN;-------写指令代码子程序---------PR1: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR11: MOVX A,@DPTRJB ,PR11MOV A,COMMOV DPTR,#CW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRET;--------写显示数据子程序----------PR2: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR21:MOVX A,@DPTRJB ,PR21MOV A,DATMOV DPTR,#DW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRETDELAY:MOV R6,#00HMOV R7,#00HDELAY1:NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RETTAB: DB 43H,75H,72H,73H,6FH,72H,20H ;Cursor DB 57H,72H,69H,74H,65H ;writeEND;----------光标左移输入,两行显示方式----------- COM EQU 20HDAT EQU 21HCW_ADD EQU 8000HCR_ADD EQU 8200HDW_ADD EQU 8100HDR_ADD EQU 8300HORG 0000HMAIN:MOV SP,#60HMOV A,#30H ;功能指令设置MOV DPTR,#CW_ADDMOV R2,#03HL1:MOVX @DPTR,ALCALL DELAYDJNZ R2,L1MOV COM,#38H ;设置工作方式LCALL PR1MOV COM,#01H ;清屏LCALL PR1MOV COM,#06H ;设置输入方式LCALL PR1MOV COM,#0FH ;设置显示方式LCALL PR1MOV COM,#04H ;设置输入方式,减方式 LCALL PR1MOV COM,#0C5H ;设置DDRAM地址44HLCALL PR1MOV DPTR,#TABMOV R2,#05 ;显示后5位MOV R3,#11 ;从第12位开始显示WRIN: MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2LCALL DELAYDEC R3DJNZ R2,WRINMOV COM,#87H ;设置DDRAM地址07H LCALL PR1MOV R2,#08H ;显示前8位WRIN1: MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2LCALL DELAYDEC R3DJNZ R2,WRIN1SJMP $;-------写指令代码子程序---------PR1: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR11: MOVX A,@DPTRJB ,PR11MOV A,COMMOV DPTR,#CW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRET;--------写显示数据子程序----------PR2: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR21:MOVX A,@DPTRJB ,PR21MOV A,DATMOV DPTR,#DW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRETDELAY:MOV R6,#00HMOV R7,#00HDELAY1:NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RETTAB: 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 0000HMAIN:MOV SP,#60HMOV A,#30H ;功能指令设置MOV DPTR,#CW_ADDMOV R2,#03HL1:MOVX @DPTR,ALCALL DELAYDJNZ R2,L1MOV COM,#38H ;设置工作方式LCALL PR1MOV COM,#01H ;清屏LCALL PR1MOV COM,#06H ;设置输入方式LCALL PR1MOV COM,#0EH ;设置显示方式LCALL PR1MOV COM,#07H ;设置输入方式,画面滚动 LCALL PR1MOV COM,#8cH ;设置DDRAM地址07HLCALL PR1MOV DPTR,#TABMOV R2,#012 ;显示前7位MOV R3,#00WRIN: MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2LCALL DELAYINC R3DJNZ R2,WRINSJMP $;-------写指令代码子程序---------PR1: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR11: MOVX A,@DPTRJB ,PR11MOV A,COMMOV DPTR,#CW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRET;--------写显示数据子程序----------PR2: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR21:MOVX A,@DPTRJB ,PR21MOV A,DATMOV DPTR,#DW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRETDELAY:MOV R6,#00HMOV R7,#00HDELAY1:NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RETTAB: DB 43H,75H,72H,73H,6FH,72H,20H ;CursorDB 57H,72H,69H,74H,65H ;writeEND;----------自定义字符库方式-----------COM EQU 20HDAT EQU 21HCW_ADD EQU 8000HCR_ADD EQU 8200HDW_ADD EQU 8100HDR_ADD EQU 8300HORG 0000HMAIN:MOV SP,#60HMOV A,#30H ;功能指令设置MOV DPTR,#CW_ADDMOV R2,#03HL1:MOVX @DPTR,ALCALL DELAYDJNZ R2,L1MOV COM,#38H ;设置工作方式LCALL PR1MOV COM,#01H ;清屏LCALL PR1MOV COM,#06H ;设置输入方式LCALL PR1MOV COM,#0FH ;设置显示方式LCALL PR1LCALL CG_WRITE ;调用自定义的字库子程序 MOV COM,#80H ;设置DDRAM地址LCALL PR1MOV DPTR ,#TABDY ;设置字表首地址MOV R2,#08MOV R3,#00HLOOP1:MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2INC R3DJNZ R2,LOOP1MOV COM,#0C0H ;设置DDRAM地址LCALL PR1MOV R2,#08HLOOP2:MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2INC R3DJNZ R2,LOOP2SJMP $CG_WRITE:MOV COM,#40H ;编字库LCALL PR1MOV R2,#64MOV R3,#00HMOV DPTR,#CGTAB ;设置字模数据的首地址 CG1:MOV A,R3MOVC A,@A+DPTRMOV DAT,ALCALL PR2INC R3DJNZ R2,CG1RET;-------写指令代码子程序---------PR1: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR11: MOVX A,@DPTRJB ,PR11MOV A,COMMOV DPTR,#CW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRET;--------写显示数据子程序----------PR2: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR21:MOVX A,@DPTRJB ,PR21MOV A,DATMOV DPTR,#DW_ADDMOVX @DPTR,APOP ACCPOP DPLPOP DPHRETDELAY:MOV R6,#00HMOV R7,#00HDELAY1:NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RETCGTAB:DB 08H,0FH,12H,0FH,0AH,1FH,02H,02H ;"年"代码=00HDB 0FH,09H,0FH,09H,0FH,09H,11H,00H ;"月"代码=01H DB 1FH,11H,11H,1FH,11H,11H,1FH,00H ;"日"代码=02HDB 11H,0AH,04H,1FH,04H,1FH,04H,00H ;"$"代码=03HDB 0EH,00H,1FH,0AH,0AH,0AH,13H,00H ;"元"代码=04HDB 18H,18H,07H,08H,08H,08H,07H,00H ;"摄氏度"代码=05H DB 04H,0AH,15H,04H,04H,04H,04H,00H ;"↑"代码=06HDB 17H,15H,15H,15H,15H,15H,17H,00H ;"10"代码=07HTABDY:DB 57H,46H,48H,30H,36H,00H,34H,01H ;WFH06年4月DB 33H,02H,54H,3DH,32H,33H,05H,06H ;3日T=23摄氏度↑ END。