LCD汇编程序示例lm016l.docx
《LCD汇编程序示例lm016l.docx》由会员分享,可在线阅读,更多相关《LCD汇编程序示例lm016l.docx(9页珍藏版)》请在冰豆网上搜索。
LCD汇编程序示例lm016l
;----------逐字依次输入方式-----------
COM EQU 20H;指令寄存器
DAT EQU 21H;数据寄存器
CW_Add EQU 8000H;指令口写地址
CR_Add EQU 8200H;指令口读地址
DW_Add EQU 8100H;数据口写地址
DR_Add EQU 8300H;数据口读地址
ORG0000H
MAIN:
MOVSP,#60H
MOVA,#30H ;功能指令设置
MOVDPTR,#CW_Add
MOVR2,#03H
L1:
MOVX@DPTR,A
LCALLDELAY
DJNZR2,L1
MOV COM,#38H ;设置工作方式
LCALLPR1
MOVCOM,#01H ;清屏
LCALLPR1
MOVCOM,#06H ;设置输入方式
LCALL PR1
MOVCOM,#0FH ;设置显示方式
LCALL PR1
MOVCOM,#80H ;设置DDRAM地址00H
LCALLPR1
MOVDPTR,#TAB
MOVR2,#12 ;显示前8位
MOVR3,#00
WRIN:
MOVA,R3
MOVCA,@A+DPTR
MOVDAT,A
LCALLPR2
LCALL DELAY
INCR3
DJNZ R2,WRIN
SJMP$
;-------写指令代码子程序---------
PR1:
PUSH DPH
PUSH DPL
PUSHACC
MOVDPTR,#CR_ADD
PR11:
MOVXA,@DPTR
JBACC.7,PR11
MOVA,COM
MOVDPTR,#CW_ADD
MOVX@DPTR,A
POP ACC
POP DPL
POP DPH
RET
;--------写显示数据子程序----------
PR2:
PUSHDPH
PUSHDPL
PUSHACC
MOVDPTR,#CR_ADD
PR21:
MOVXA,@DPTR
JBACC.7,PR21
MOVA,DAT
MOVDPTR,#DW_ADD
MOVX@DPTR,A
POPACC
POPDPL
POPDPH
RET
DELAY:
MOVR6,#00H
MOVR7,#00H
DELAY1:
NOP
DJNZR7,DELAY1
DJNZR6,DELAY1
RET
TAB:
DB43H,75H,72H,73H,6FH,72H,20H ;Cursor
DB57H,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;数据口读地址
ORG0000H
MAIN:
MOVSP,#60H
MOVA,#30H ;功能指令设置
MOVDPTR,#CW_ADD
MOVR2,#03H
L1:
MOVX@DPTR,A
LCALLDELAY
DJNZR2,L1
MOV COM,#38H ;设置工作方式
LCALLPR1
MOVCOM,#06H ;设置显示方式
LCALL PR1
MOVCOM,#0fH ;清屏
LCALLPR1
MOVCOM,#01H ;设置输入方式
LCALL PR1
MOVCOM,#80H ;设置DDRAM地址00H
LCALLPR1
MOVDPTR,#TAB
MOVR2,#07 ;显示前8位
MOVR3,#00H
WRIN:
MOVA,R3
MOVCA,@A+DPTR
MOVDAT,A
LCALLPR2
LCALL DELAY
INCR3
DJNZ R2,WRIN
MOVCOM,#0C0H ;设置DDRAM地址40H
LCALL PR1
MOVR2,#05H ;显示后4位
WRIN1:
MOVA,R3
MOVCA,@A+DPTR
MOVDAT,A
LCALLPR2
LCALLDELAY
INCR3
DJNZR2,WRIN1
SJMPMAIN
;-------写指令代码子程序---------
PR1:
PUSH DPH
PUSH DPL
PUSHACC
MOVDPTR,#CR_ADD
PR11:
MOVXA,@DPTR
JBACC.7,PR11
MOVA,COM
MOVDPTR,#CW_ADD
MOVX@DPTR,A
POP ACC
POP DPL
POP DPH
RET
;--------写显示数据子程序----------
PR2:
PUSHDPH
PUSHDPL
PUSHACC
MOVDPTR,#CR_ADD
PR21:
MOVXA,@DPTR
JBACC.7,PR21
MOVA,DAT
MOVDPTR,#DW_ADD
MOVX@DPTR,A
POPACC
POPDPL
POPDPH
RET
DELAY:
MOVR6,#00H
MOVR7,#00H
DELAY1:
NOP
DJNZR7,DELAY1
DJNZR6,DELAY1
RET
TAB:
DB43H,75H,72H,73H,6FH,72H,20H ;Cursor
DB57H,72H,69H,74H,65H ;write
END
;----------光标左移输入,两行显示方式-----------
COMEQU20H
DATEQU21H
CW_ADD EQU8000H
CR_ADD EQU8200H
DW_ADD EQU8100H
DR_ADD EQU8300H
ORG0000H
MAIN:
MOVSP,#60H
MOVA,#30H ;功能指令设置
MOVDPTR,#CW_ADD
MOVR2,#03H
L1:
MOVX@DPTR,A
LCALLDELAY
DJNZR2,L1
MOV COM,#38H ;设置工作方式
LCALLPR1
MOVCOM,#01H ;清屏
LCALLPR1
MOVCOM,#06H ;设置输入方式
LCALL PR1
MOVCOM,#0FH ;设置显示方式
LCALL PR1
MOV COM,#04H ;设置输入方式,减方式
LCALLPR1
MOVCOM,#0C5H ;设置DDRAM地址44H
LCALLPR1
MOVDPTR,#TAB
MOVR2,#05 ;显示后5位
MOVR3,#11 ;从第12位开始显示
WRIN:
MOVA,R3
MOVCA,@A+DPTR
MOVDAT,A
LCALLPR2
LCALL DELAY
DECR3
DJNZ R2,WRIN
MOVCOM,#87H ;设置DDRAM地址07H
LCALL PR1
MOVR2,#08H ;显示前8位
WRIN1:
MOVA,R3
MOVCA,@A+DPTR
MOVDAT,A
LCALLPR2
LCALLDELAY
DECR3
DJNZR2,WRIN1
SJMP$
;-------写指令代码子程序---------
PR1:
PUSH DPH