⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_test.asm

📁 dp51的实验程序
💻 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 + -