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

📄 ex26a_lcd.asm

📁 多款单片机外围电路源码(7290、Bazz、Bell、E2PROM和LCD)
💻 ASM
字号:
;********************************Copyright (c)********************************
;**                      广州周立功单片机发展有限公司
;**                            研    究    所
;**                        http://www.zlgmcu.com
;*********************************文件信息************************************
;文件名:
;	EX26A_LCD.asm
;目的  :
;	1.学习使用DP-51h实验的仿真调试程序的方法;
;	2.学习LCD液晶显示器的驱动方法和程序设计方法;
;	3.在第1行显示"DP-51H",在第2行
;	显示"2003年7月12日"并不断滚动。
;硬件设置:
;	LCD液晶显示屏数据口地址为400xH~4FFxH之间,在此数据地址为4002H,而命令口地址
;	为4000H。
;最后修改时间:
;	2003年7月2	
;******************************************************************************

WR_COM			EQU			4000H			;写指令地址
RD_STA			EQU			4002H			;读状态地址
WR_DAT			EQU			4001H			;写数据地址
RD_DAT			EQU			4003H			;读数据地址


	ORG	8000H
	AJMP	MAIN

	ORG	8100h
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-51S
	MOV	DPTR,#TABLE1		;读取DP-51S数据表地址
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,48H;DP-51H
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,37H,01H,31H,32H,02H
	;   Z   l   G   2   0   0   3   年  7  月   1   2   日


	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -