📄 zy886a.asm
字号:
; FILE:ZY886A.ASM
; 功能:ZY886A液晶显示模块显示控制。启动程序即进入正常显示状态(循环显示一系列数字0~F)。
; 说明:将跳线器题J6、J19、J20分别短接到LCM_/WR、LCM_DAT、LCM_/CS端。
; 通过跳线器J8、J9选择高频晶振6MHZ。
; 在DP-932下载实验仪上,通过JP2与ZY886A液晶模块进行连接。
$NOMOD51
$INCLUDE (REG932.INC)
;定义显示数据计数变量
DCONT DATA 23H ;用于显示位的计数
;***********************************************************************
; 程序开始
;***********************************************************************
ORG 0000H
AJMP RESET
ORG 0080H
RESET: MOV P0M1,#00H
MOV P0M2,#00H
MOV P1M1,#00H
MOV P1M2,#00H
MOV DIVM,#1
MOV SP,#56H ;设堆栈指针
MOV DCONT,#0 ;显示数据计数器初化
MAIN: ;LCD工作方式设定
ACALL INTI1621
MOV LCDCOMMAND,#TONE4K ;设置音频输出频率为4KHZ
ACALL SEND1621COM ;由U1输出音频信号
;进入正常显示状态
ACALL RUNOK
;进入全显示状态
;ACALL RUNALL
;进入掉电模式
;ACALL RUNDOWN
SJMP MAIN
;RUNOK
;从0到F循环显示LCD数位
RUNOK:
ACALL LOADDAT ;装载数据
CLR C
MOV A,#9
SUBB A,DCONT ;判断DCONT是否大于9,大于9则打开蜂鸣器
JNC RUNOK_L1
MOV LCDCOMMAND,#TONEON
ACALL SEND1621COM
RUNOK_L1:
ACALL BRUSHLCD
ACALL DELAY_1S
MOV LCDCOMMAND,#TONEOFF ;关闭蜂鸣器
ACALL SEND1621COM
ACALL DELAY_1S ;延时
INC DCONT ;计数器加1
CLR C
MOV A,#10H ;若DCONT的值大于10H,则复位为0
SUBB A,DCONT
JNC RUNOK_L2
MOV DCONT,#0
ACALL INTI1621 ;重新设置1621
MOV LCDCOMMAND,#TONE4K ;设置音频输出频率为4KHZ
ACALL SEND1621COM
RUNOK_L2: SJMP RUNOK
;数据装载程序
;将计数数据进行字模转换后放入显示缓冲区,包括状态字段。
LOADDAT:
MOV R0,#DISBUFFER ;指定显示地址为SEG0开始
MOV R1,DCONT
MOV R7,#16
LOAD_L1: MOV A,R1
MOV DPTR,#LCDDATA
MOVC A,@A+DPTR ;字模转换
ORL A,#10H
MOV @R0,A ;将数据写显示缓冲区
INC R0 ;缓冲区的下一个地址
DJNZ R7,LOAD_L1
RET
;RUNALL
;全显示输出,调试用
RUNALL:
MOV R7,#16
MOV R0,#DISBUFFER
RUNALL_L1:
MOV @R0,#0FFH ;装入数据0FFH
INC R0
DJNZ R7,RUNALL_L1
ACALL BRUSHLCD ;刷新LCD显示
SJMP $
;RUNDOWN
;掉电方式,调试用
RUNDOWN:
ACALL HT1621DOWN ;进入掉电状态
SJMP $
; 软件延时子程序
DELAY_1S:
PUSH 07H
PUSH 06H
PUSH 05H
MOV R7,#5
DELAY_L1: MOV R6,#0
DELAY_L2: MOV R5,#0
DJNZ R5,$
DJNZ R6,DELAY_L2
DJNZ R7,DELAY_L1
POP 05H
POP 06H
POP 07H
RET
;========================================================
;表格区
;供用户转换使用,此处以ZY886A型LCD数字显示表(0-F)为例。
LCDDATA:
DB 0EBH,60H,0C7H,0E5H,6CH,0ADH,0AFH,0E0H,0EFH,0EDH,0EEH,2FH,8BH,67H,8FH,8EH,00H,00H
;=========================================================
;包含HT1621操作软件包
$INCLUDE(D1621.INC) ;包含头文件,头文件内已定义SPI接口,显示缓冲区,
;及各操作变量
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -