投诉热线:13148701893
联系人:邓小姐
传真:0755-27315661
0760-85884496
座机:0755-29769890-0
0760-85884486
办公地址:深圳市宝安区福永塘尾富华工业区11栋3楼
工厂地址:广东省中山市三乡镇万里路1号平铺工业区B栋三楼
段码LCD液晶屏参考程序
来源:lcd液晶模块,lcd液晶屏定制,lcm液晶模组厂家 发布时间:2017-12-04 点击量:6804
段码液晶参考程序
;程序清单
;*********************************************************************************
;文件名:CAT888.asm
;项目: IC卡水表LCD显示模块演示程序(1.1版)
;描述: 启动程序即进入正常显示状态(循环显示一系列数字0~F),并通过KEY按键进入全显示状态
; (测功耗)、掉电状态(测功耗)及关断LCM电源(GND端),依此循环。
;最后更新日期:2017/12/04
;*********************************************************************************
;特殊功能寄存器SFR和位地址定义
AUXR1 DATA 0A2H ;辅助功能寄存器,不可位寻址
DIVM DATA 95H ;MCU时钟除数控制寄存器,
P0M1 DATA 84H ;0口工作模式选择寄存器1
P0M2 DATA 85H ;0口工作模式选择寄存器1
P1M1 DATA 91H
P1M2 DATA 92H
PT0AD DATA 0F6H ;0口数字输入功能禁止寄存器
LED1 BIT P0.0 ;状态灯定义
LED2 BIT P1.7 ;正常显示状态时LED1点亮,全显示状态时
LED3 BIT P1.6 ;LED2点亮,掉电状态时LED3点亮,关断LCM电
LED4 BIT P1.4 ;源状态时LED4点亮。
LCMC BIT P0.7 ;LCM的GND控制输出端,实现LCM的电源控制
KEY BIT P1.1 ;KEY的IO定义
keyin BIT 10H ;定义有键盘输出标志位
;定义显示数据计数变量
DCONT DATA 50H ;用于显示位的计数
;状态标志位定义
FLAGS1 DATA 2EH ;状态标志寄存器1
EMI BIT FLAGS1.0;电磁干扰标志
PASS BIT FLAGS1.2;水阀打开/关闭标志位
OUT BIT FLAGS1.3;IC卡退出标志位(退卡后M3才显示)
SALEWATR BIT FLAGS1.4;剩余金额不足标志位(显示'请购水')
POWERDOWN BIT FLAGS1.5;电池电压不足标志位
CUR BIT FLAGS1.6;本次购水金额/剩余金额标志位
XPLAN BIT FLAGS1.7;超计划标志位
;***********************************************************************
; 程序开始
;***********************************************************************
ORG 0000H
AJMP RESET
ORG 0080H
RESET:
;安全设置
MOV DIVM,#1 ;CPU工作频率降至正常时的1/4
MOV SP,#59H ;设堆栈指针
MOV TMOD,#01H ;使能定时器0
;显示数据初化
MOV DCONT,#0
MOV FLAGS1,#00H
MAIN:
;LCD工作方式设定
CLR LCMC ;打开LCM电源
MOV P1M1,#00H ;将P1.7,P1.6,P1.4置为上拉输出
MOV P1M2,#0D0H
MOV P0M1,#00H ;将P0.7置为上拉输出
MOV P0M2,#01H
ACALL INTI1621
MOV LCDCOMMAND,#Tone4k ;设置音频输出频率为4KHZ
ACALL Send1621Com
;进入正常显示状态
;正常显示情况下,不发送数据时,把SPI口均置为高
SETB LED1 ;点亮LED1
CLR LED2
CLR LED3
CLR LED4
ACALL RUNOK
;进入全显示状态
;LCD各段均显示,然后SPI口设为高阻态,
CLR LED1
SETB LED2
ACALL RUNALL
;进入掉电状态
;掉电状态是把HT1621设置为掉电方式,以降低功耗
CLR LED2
SETB LED3
ACALL RUNDOWN
;进入关断电源状态
;关断HT1621电源,以降低功耗
CLR LED3
SETB LED4
ACALL RUNNOP
SJMP MAIN
;RUNOK
;从0到f循环显示LCD数位(数字右移)
;显示1秒后,所有数字均加1(即缓冲区加11H)
RUNOK: ;打开各标志符号
SETB EMI ;电磁干扰标志,显示
SETB PASS ;水阀打开/关闭标志位,显示开
SETB OUT ;IC卡退出标志位(退卡后M3才显示),显示退卡
SETB SALEWATR ;显示'请购水'
SETB POWERDOWN ;电池电压不足标志位,显示
SETB CUR ;本次购水金额/剩余金额标志位,显示本次金额
SETB XPLAN ;超计划标志位,显示
CLR keyin ;清除keyin标志位
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 ;延时并接收按键
ACALL DELAY_1S
ACALL DELAY_1S
INC DCONT ;计数器加1
CLR C
MOV A,#0FH ;若DCONT的值大于0FH,则复位为0
SUBB A,DCONT
JNC RUNOK_L2
MOV DCONT,#0
ACALL INTI1621 ;重新设置1621
MOV LCDCOMMAND,#Tone4k ;设置音频输出频率为4KHZ
ACALL Send1621Com
RUNOK_L2:
JNB keyin,RUNOK ;判断是否有按键,有则退出正常显示方式
RET
;数据装载程序
;将计数数据进行字模转换后放入显示缓冲区,包括状态字段。
LOADDAT:
MOV R0,#DISBUFFER ;指定显示地址为SEG0开始
MOV R1,DCONT
MOV R7,#10 ;写入12个数据
LOAD_L1: ;将数据填充显示缓冲区
MOV A,R1
MOV DPTR,#LCDData
MOVC A,@A+DPTR ;字模转换
MOV @R0,A
INC R0 ;缓冲区的下一个地址
DJNZ R7,LOAD_L1
JNB EMI,HOLD0 ;EMI=1时,
ORL DISBUFFER,#10H ;显示电磁干扰信号
HOLD0:
JNB PASS,HOLD1
ORL DISBUFFER+1,#10H ;PASS=1时,显示'开'
SJMP HOLD2
HOLD1:
ORL DISBUFFER+2,#10H ;否则显示'关'
HOLD2:
JNB OUT,HOLD3 ;OUT=1时
ORL DISBUFFER+3,#10H ;显示'退卡'
SJMP HOLD4
HOLD3:
ORL DISBUFFER+6,#10H ;否则显示'M3'
HOLD4:
JNB SALEWATR,HOLD5
ORL DISBUFFER+4,#10H ;显示'请购水'
HOLD5:
JNB XPLAN,HOLD6
ORL DISBUFFER+5,#10H ;'超计划'
HOLD6:
JNB POWERDOWN,HOLD7
ORL DISBUFFER+8,#10H ;电池缺电符号
HOLD7:
ORL DISBUFFER+9,#10H ;单位'元'
JNB CUR,HOLD8
MOV DISBUFFER+10,#05H ;'本次金额'
RET
HOLD8:
MOV DISBUFFER+10,#03H ;'剩余金额'
RET
;RUNALL
;全显示输出,把SPI接口置为高阻态,以便测量LCM功耗
RUNALL:
MOV R7,#12
MOV R0,#DISBUFFER
RUNALL_L1:
MOV @R0,#0FFH ;装入数据0FFH
INC R0
DJNZ R7,RUNALL_L1
ACALL BrushLcd ;刷新LCD显示
ORL P0M1,#2AH ;设置IO口为高阻态
ANL P0M2,#0D5H
MOV PT0AD,#2AH
RUNALL_L2: ;等待按键
JB KEY,$
MOV R7,#0FFH
DJNZ R7,$
JB KEY,RUNALL_L2
JNB KEY,$
ANL P0M1,#0D5H ;恢复IO口
MOV PT0AD,#00H
RET
;RUNDOWN
;掉电方式,把SPI接口置为高阻态,以便测量LCM功耗
RUNDOWN:
ACALL HT1621DOWN ;进入掉电状态
ORL P0M1,#2AH ;IO口置为高阻态
ANL P0M2,#0D5H
MOV PT0AD,#2AH
RUNDOWN_L1:
JB KEY,$ ;等待按键
MOV R7,#0FFH ;去抖动
DJNZ R7,$
JB KEY,RUNDOWN_L1
JNB KEY,$ ;等待按键放放开
RET
;RUNNOP
;关断LCD电源,把SPI接口置为高阻态。
RUNNOP:
SETB LCMC ;关断LCM电源
RUNNOP_L1: ;等待按键操作
JB KEY,$
MOV R7,#0FFH
DJNZ R7,$
JB KEY,RUNNOP_L1
JNB KEY,$
ANL P0M1,#0D5H ;恢复IO口设置
MOV PT0AD,#00H
CLR LCMC ;打开LCM电源
RET
;延时1S子程序
; 在延时过程序可以判断有无按键,有按键时置位keyin位,无按
;键时不对keyin操作。
DELAY_1S:
SETB TR0 ;启动定时器
MOV R0,#2
BACK:
MOV TL0,#0B0H ;置初值
MOV TH0,#3CH
DL:
JB KEY,DL_1
MOV R7,#0FFH ;有按键,进行去抖动处理
DJNZ R7,$
JB KEY,DL_1
SETB keyin ;是按键,置位keyin
DL_1:
JNB TF0,DL
CLR TF0
DJNZ R0,BACK ;等待定时时间到
JNB KEY,$ ;等待按键放开
RET
;包含1621操作软件包
$INCLUDE(LCD1621.INC) ;包含头文件,头文件内已定义SPI,显示缓冲区,
;及各操作变量,ZY886A型LCD数字显示表等
相关产品
热点资讯
- 广州lcd液晶模组生产厂家2021-08-23
- 佛山lcd液晶显示屏加工2021-08-23
- 上海12864中文字库液晶价格2021-08-22
- 湖南LCM中文字库液晶批发2021-08-22
- 湖北LCD液晶屏加工价格2021-08-21
- 惠州LCD液晶屏加工生产厂家2021-08-21
- 深圳lcd液晶显示屏加工2021-08-20
- 杭州lcd液晶模组价格2021-08-20