怎么点亮段码屏_段码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液晶屏和LED屏,它们有什么不同之处
市面上的液晶屏种类有很多,LCD.LED.OLED等.但多数人对LCD显示屏和LED显示屏的了解还不是很清晰,在选购液晶屏时经常会很迷茫,今天就由液晶屏厂家详细介绍LCD液晶屏与LED屏之间的区别和它 ...
- 怎么点亮段码屏_段码LCD液晶屏驱动方法
TFT 液晶屏: http://www.hzjingxian.com 段码 LCD 液晶屏驱动方法 段码 LCD 液晶屏驱动方法 首先,不要以为用单片机来驱动就以为段码屏是直流驱动的,其实,段码屏是交 ...
- 段码LCD液晶屏如何斑马条改PIN脚?
至于段码LCD液晶屏的常用的连接方式我们都是知道的,一般客户也都是根据自身的产品需求在开模打样的时候就已经确定好了本产品的连接方式了. 而有些客户在针对样品验证的快速简便和批量产品的成本管控的不同需求 ...
- 【嵌入式】MCU(HC32F460)+SPI接口LCD液晶屏ILI9341 移植emWin记录1----点亮LCD屏
目录 一 SPI屏的接线 二 SPI屏驱动初始化 三 SPI屏点亮 四 附录 一 SPI屏的接线 SPI屏的特点在于接线简单,只需要四根SPI线以及几个GPIO口即可驱动工作,但是由于非并口的,所以当 ...
- LCD 液晶屏驱动详解
LCD液晶屏驱动详解 开发环境 开发板:JZ2440V3 CPU:samsunS3C2440 内核:Linux3.4.2 编译工具:arm-linux-gcc 4.3.2 LCD:4.3存液晶屏AT0 ...
- 如何区分单色LCD液晶屏的显示模式和玻璃型号
如何区分单色LCD液晶屏的显示模式和玻璃型号?下面由深圳兴宇合技术人员给大家讲解下,希望有所帮助. 一.从显示模式上分为: (1)正显,即浅色背景深色字符,对比度比较高,在正常情况下看的清楚些.(白底 ...
- LCD液晶屏的问题总结
问题一 使用过程中出现缺划现象? 选定大品牌,在生产过程控制方面有较好的能力,有自主研发的产品检测方法,保证产品质量,维护客户质量系统形象. 问题二 LCD液晶屏缺划使用一段时间后的现象? 主要原因是 ...
- ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能
最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...
- LCD液晶屏和LED液晶屏的较量
一.LED定义 LED是发光二极管Light Emitting Diode的英文缩写.LED应用可分为两大类:一是LED显示屏:二是LED单管应用,包括背光源 LED,红外线LED等.现在就LED显示 ...
- LCD液晶屏接口和显示器接口介绍
LCD液晶屏主流显示接口介绍 屏的接口类型种类以及接口定义分析(绝对收藏) I2C.SPI.UART.RGB.LVDS,MIPI,EDP和DP等显示屏接口简要总结 LCD主流显示接口介绍_这个ID洒家 ...
最新文章
- JavaScript instanceof 运算符深入剖析【转载】
- Linux系统解决SSH登录慢的详细步骤
- 21款网页版html5小游戏源码
- iOS上架app store下载步骤
- 您可能不了解JS:JavaScript圣经的见解
- CAN FD Bit Timing
- ceph pg peering和恢复 (2)
- 小柏实战学习Liunx(图文教程二十一)
- Excalidraw:开源趣味画图工具(在线和本地均可)
- windows xp 系统CMD命令大全(一)
- 游戏笔记本电脑推荐 多功能游戏本你见过吗?
- reactive函数实现响应式数据
- 【愚公系列】2022年10月 微信小程序-电商项目-微信支付小程序确认支付结果和退款功能实现(node)
- Packet Tracer 入门教程
- Java的思考01 - 当大老板还是小老板
- node写数据并实现数据跨域(不是用插件解决的)
- Thiago2(TPO AI.ROSTO):集成式AI换脸软件(Autodesk Flame)
- 丢包、拆包、粘包的原因及解决办法
- Kubernetes — 核心资源对象 — Namespace
- 第十四届蓝桥杯三月真题刷题训练——第 21 天