深圳市佳显电子技术有限公司

10年专注LCD、LCM中文字库液晶研发生产

全国咨询服务热线: 0760-85884496

联系方式
LCM中文字库液晶联系我们

传真:0760-855884496
座机:0760-85884496  0760-85884486
邮箱:jxdlx107@goodview-lcd.com
地址:广东省深圳市宝安区福永镇塘尾富华工业区第11栋3楼


电话:0755-29769890  0755-27315661  

工厂地址:广东省中山市三乡镇万里路1号平铺工业区B栋








段码LCD液晶屏参考程序

来源:lcd液晶模块,lcd液晶屏定制,lcm液晶模组厂家   发布时间:2017-12-04   点击量:2182

lcd液晶模块

段码液晶参考程序
;程序清单
;*********************************************************************************
;文件名: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液晶屏参考程序,lcd液晶模块,lcd液晶屏定制,lcm液晶模组厂家

传真:  0760-85884486    0755-29769890
座机:  0760-85884496    0755-27315661
邮箱:jxdlx107@goodview-lcd.com

工厂地址:广东省中山市三乡镇万里路1号平铺工业区B栋

办公地址:深圳市宝安区福永塘尾富华工业区11栋3楼






Copyrights©2017 深圳市佳显电子技术有限公司 All Rights Reserved
备案号: 粤ICP备17051216号

阿里巴巴二维码

阿里巴巴二维码

网站二维码

网站二维码