📄 lcd_test.asm
字号:
;******************************Copyright (c)******************************
;** 广州周立功单片机发展有限公司
;** 研 究 所
;** 产品一部
;** http://www.zlgmcu.com
;**-------------------------------文件信息--------------------------------
;文件名:LCD_TEST.ASM
;功能 :在DP-51+实验板完成LCD点阵字符液晶显示。在第1行显示DP-51+,在第2行
; 显示2003年9月10日。
;说明 :
; 1.LCD液晶显示屏数据口地址为F80xH~F80xH之间。
; 2.这里只对LCD进行写操作。
;最后修改时间:2003年9月10日
;***************************************************************************
WR_COM EQU 0F800H ;写指令地址
RD_STA EQU 0F802H ;读状态地址
WR_DAT EQU 0F801H ;写数据地址
RD_DAT EQU 0F803H ;读数据地址
ORG 4000H
AJMP MAIN
ORG 4100h
MAIN:
MOV SP,#60h ;设置SP
ACALL DELAY ;延时
ACALL INIT_LCD ;初始化液晶模块
ACALL WRITE_CGRAM ;设置CGRAM
MOV A,#84H ;从第一行第5位开始
ACALL WRITE_COM
MOV R6,#06 ;显示DP-51+
MOV DPTR,#TABLE1 ;读取DP-51+数据表地址
DISP1:
CLR A
MOVC A,@A+DPTR
ACALL WRITE_DAT
INC DPTR
DJNZ R6,DISP1
MOV A,#0C2H ;第二行第二位开始显示
ACALL WRITE_COM
MOV R6,#13 ;显示ZLG2003年3月26日
MOV DPTR,#TABLE2 ;读取数据表2地址
DISP2:
CLR A
MOVC A,@A+DPTR
ACALL WRITE_DAT
INC DPTR
DJNZ R6,DISP2
DISP_LOOP:
MOV A,#07H ;设置左移模式
ACALL WRITE_COM
MOV A,#8FH ;从第一行第16位开始
ACALL WRITE_COM
MOV R6,#16 ;左移16个 空格
DISP_LEFT:
MOV A,#10H
ACALL WRITE_DAT
ACALL DELAY ;延时
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
DJNZ R6,DISP_LEFT
MOV A,#05H ;设置右移模式
ACALL WRITE_COM
MOV A,#80H ;从第一行第1位开始
ACALL WRITE_COM
MOV R6,#16
DISP_RIGHT:
MOV A,#10H
ACALL WRITE_DAT
ACALL DELAY ;延时
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
DJNZ R6,DISP_RIGHT
SJMP DISP_LOOP ;循环移动
;初始化液晶模块
INIT_LCD:
MOV A,#38H ;设置为8位数据总线,16*2,5*7点阵
ACALL WRITE_COM
MOV A,#01H ;清屏幕
ACALL WRITE_COM
MOV A,#06H ;光标移动,显示区不移动,读写操作后AC加1
ACALL WRITE_COM
MOV A,#0CH ;开显示,关光标,不闪烁
ACALL WRITE_COM
RET
;写指令子程序
WRITE_COM:
PUSH DPH ;保存DPTR
PUSH DPL
MOV DPTR,#WR_COM ;设置写指令地址
MOVX @DPTR,A ;输出指令
ACALL DELAY ;延时
POP DPL ;恢复DPTR
POP DPH
RET
;写数据子程序
WRITE_DAT:
PUSH DPH ;保存DPTR
PUSH DPL
MOV DPTR,#WR_DAT ;设置写数据地址
MOVX @DPTR,A ;输出数据
ACALL DELAY ;延时
POP DPL ;恢复DPTR
POP DPH
RET
;设置自定义字符
WRITE_CGRAM:
PUSH ACC ;保护现场
PUSH DPL
PUSH DPH
PUSH PSW
MOV A,#40H ;设置CGRAM开始地址为00H
ACALL WRITE_COM
MOV R7,#24 ;输出3个自定义字符(3×8=24)
MOV DPTR,#CGRAM_TABLE
WRITE_CGRAM1:
CLR A
MOVC A,@A+DPTR ;读取表数据
ACALL WRITE_DAT ;把数据写到CGRAM中
INC DPTR
DJNZ R7,WRITE_CGRAM1
ACALL DELAY ;延时
POP PSW ;现场恢复
POP DPH
POP DPL
POP ACC
RET
;延时子程序
DELAY:
MOV R5,#100
DELAY1:
MOV R4,#100
DJNZ R4,$
DJNZ R5,DELAY1
RET
;定义代码
CGRAM_TABLE:
DB 08H,0FH,12H,0FH,0AH,1FH,02H,02H ;年
DB 0FH,09H,0FH,09H,0FH,09H,11H,00H ;月
DB 0FH,09H,09H,0FH,09H,09H,0FH,00H ;日
TABLE1:
DB 44H,50H,2DH,35H,31H,2BH;DP-51+
TABLE3:
DB 10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H;空格
TABLE2:
DB 5AH,4CH,47H,32H,30H,30H,33H,00H,39H,01H,31H,30H,02H
; Z l G 2 0 0 3 年 9 月 1 0 日
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -