段码液晶参考程序

;程序清单

;*********************************************************************************

;文件名: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液晶屏参考程序相关推荐

  1. 浅谈LCD液晶屏和LED屏,它们有什么不同之处

    市面上的液晶屏种类有很多,LCD.LED.OLED等.但多数人对LCD显示屏和LED显示屏的了解还不是很清晰,在选购液晶屏时经常会很迷茫,今天就由液晶屏厂家详细介绍LCD液晶屏与LED屏之间的区别和它 ...

  2. 怎么点亮段码屏_段码LCD液晶屏驱动方法

    TFT 液晶屏: http://www.hzjingxian.com 段码 LCD 液晶屏驱动方法 段码 LCD 液晶屏驱动方法 首先,不要以为用单片机来驱动就以为段码屏是直流驱动的,其实,段码屏是交 ...

  3. 段码LCD液晶屏如何斑马条改PIN脚?

    至于段码LCD液晶屏的常用的连接方式我们都是知道的,一般客户也都是根据自身的产品需求在开模打样的时候就已经确定好了本产品的连接方式了. 而有些客户在针对样品验证的快速简便和批量产品的成本管控的不同需求 ...

  4. 【嵌入式】MCU(HC32F460)+SPI接口LCD液晶屏ILI9341 移植emWin记录1----点亮LCD屏

    目录 一 SPI屏的接线 二 SPI屏驱动初始化 三 SPI屏点亮 四 附录 一 SPI屏的接线 SPI屏的特点在于接线简单,只需要四根SPI线以及几个GPIO口即可驱动工作,但是由于非并口的,所以当 ...

  5. LCD 液晶屏驱动详解

    LCD液晶屏驱动详解 开发环境 开发板:JZ2440V3 CPU:samsunS3C2440 内核:Linux3.4.2 编译工具:arm-linux-gcc 4.3.2 LCD:4.3存液晶屏AT0 ...

  6. 如何区分单色LCD液晶屏的显示模式和玻璃型号

    如何区分单色LCD液晶屏的显示模式和玻璃型号?下面由深圳兴宇合技术人员给大家讲解下,希望有所帮助. 一.从显示模式上分为: (1)正显,即浅色背景深色字符,对比度比较高,在正常情况下看的清楚些.(白底 ...

  7. LCD液晶屏的问题总结

    问题一 使用过程中出现缺划现象? 选定大品牌,在生产过程控制方面有较好的能力,有自主研发的产品检测方法,保证产品质量,维护客户质量系统形象. 问题二 LCD液晶屏缺划使用一段时间后的现象? 主要原因是 ...

  8. ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能

    最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...

  9. LCD液晶屏和LED液晶屏的较量

    一.LED定义 LED是发光二极管Light Emitting Diode的英文缩写.LED应用可分为两大类:一是LED显示屏:二是LED单管应用,包括背光源 LED,红外线LED等.现在就LED显示 ...

  10. LCD液晶屏接口和显示器接口介绍

    LCD液晶屏主流显示接口介绍 屏的接口类型种类以及接口定义分析(绝对收藏) I2C.SPI.UART.RGB.LVDS,MIPI,EDP和DP等显示屏接口简要总结 LCD主流显示接口介绍_这个ID洒家 ...

最新文章

  1. JavaScript instanceof 运算符深入剖析【转载】
  2. Linux系统解决SSH登录慢的详细步骤
  3. 21款网页版html5小游戏源码
  4. iOS上架app store下载步骤
  5. 您可能不了解JS:JavaScript圣经的见解
  6. CAN FD Bit Timing
  7. ceph pg peering和恢复 (2)
  8. 小柏实战学习Liunx(图文教程二十一)
  9. Excalidraw:开源趣味画图工具(在线和本地均可)
  10. windows xp 系统CMD命令大全(一)
  11. 游戏笔记本电脑推荐 多功能游戏本你见过吗?
  12. reactive函数实现响应式数据
  13. 【愚公系列】2022年10月 微信小程序-电商项目-微信支付小程序确认支付结果和退款功能实现(node)
  14. Packet Tracer 入门教程
  15. Java的思考01 - 当大老板还是小老板
  16. node写数据并实现数据跨域(不是用插件解决的)
  17. Thiago2(TPO AI.ROSTO):集成式AI换脸软件(Autodesk Flame)
  18. 丢包、拆包、粘包的原因及解决办法
  19. Kubernetes — 核心资源对象 — Namespace
  20. 第十四届蓝桥杯三月真题刷题训练——第 21 天

热门文章

  1. hdmi怎么支持2k分辨率_简单选择题!花3K买虚荣,还是2K买个踏实
  2. 破解希沃立知课堂——查看课件篇
  3. html5泡泡龙游戏开发随笔
  4. CREO草绘标注字体设置
  5. finalcut剪切快捷键_Final Cut Pro X 常用快捷键大全 FCPX快捷键
  6. MultiSigWallet实例
  7. 初入职场不得不掌握的6个好习惯
  8. cocos creator 绘制闪电特效
  9. dct图像压缩c语言实现,DCT变换在图像压缩中的实现
  10. Android Studio 设置打开layout.xml文件的默认视图