文档库 最新最全的文档下载
当前位置:文档库 › LCD汇编程序示例

LCD汇编程序示例

LCD汇编程序示例
LCD汇编程序示例

;----------逐字依次输入方式-----------

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

相关文档