技术文档

单片机段码 详解数码管显示控制

小编 2024-11-24 技术文档 23 0

详解数码管显示控制

数码管种类繁多,按外观来划分,可以分为七段数码管、米字型数码管、点阵块等。图8-5所示为各种不同形状的数码管。

图8-5 各种不同形状的数码管

LED数码管结构与工作原理

单片机系统中常用的是七段数码管,它由8个发光二极管(以下简称字段)构成,如图8-6(a)图所示(注:由于小数点字段不常用,所以一般称为七段),通过不同的组合可以显示数字0~9、字符A~F、H、L、P、U、符号“-”及小数点“.”。

根据发光二极管物理连接的不同,七段数码管可以分为共阴极和共阳极两种结构。共阴极型数码管如图8-6(b)所示,所有字段的阴极均连接低电平,因此在使用共阴极数码时,需要在相应字段上加高电平,才会使其发光。共阳极数码管如图8-6(c)所示,所有字段的阳极均连接高电平,在使用时,需要在相应字段上加低电平。

图8-6 7段数码管结构

LED数码管字型编码

在单片机与数码管组成的应用系统中,一般将单片机的一个并口与数码管的8个段控制引脚连接,且按照口线位的顺序由低到高与a、b、c、d、e、f、g、h连接,这样,若要显示不同字符,只需应用单片机的口线输出相应的控制的电平就可以实现。向口线送的数据就是LED的字型编码。共阴和共阳的字型编码如表8-2所示。

表8-2 共阴和共阳的字型编码表

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态显式和动态显式两类。

LED数码管静态显示

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口线进行驱动,或者使用如BCD码、二–十进位解码器解码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口较多,如驱动5个数码管静态显示则需要5×8=40根I/O口线来驱动,而1个89S51单片机可用的I/O口线才32个。

2位共阳极数码管的静态显示电路如图8-7所示。

图8-7 2位共阳极数码管的静态显示电路原理图

显示数字12的C51程序如下:

LED数码管动态显示

数码管动态显示是单片机中应用最为广泛的显示方式,动态驱动是将所有数码管的8个同名端“a,b,c,d,e,f,g,h”连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。

当单片机输出字形码时,所有数码管都接收到相同的字形码,究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示,不会有闪烁感,动态显示的效果和静态显示相同,并且能够节省大量的I/O口线,降低功耗。

2位共阳极数码管动态显示电路如图8-8所示。

显示数字12的C51程序如下:

图8-8 2位共阳极数码管动态显示电路原理图

段码屏的显示原理和HT1621驱动方法详解

最近在承接单片机系统、电路板、控制器、电子产品、工控测控传感自动化系统、仪器仪表、装置设备、软件EXE编程、安卓APP开发设计定制业务的时候(业务Q Q:2531263726),一个客户联系到沙鸥,打算对一个市面上现有的测试仪器进行升级改进,电话初步交流了一下,当时一想,仪器无非就是探头加二次电路,应该SO EASY,客户发来产品资料,于是简单调研了一下这个仪器,发现光是这种类型仪器的测试探头就有千百种,呃,夸张了,好几种是有的,比如微波、射频、电磁波、电容等各种各样的探测方法都有,原来不是那么简单,小瞧了。那么直接拆解现有探头再开发新的适配电路板将是困难和费时间的事,因为原厂的电路板一般都有编程器件,没有程序代码也就不知道原厂板对探头是怎么进行的信号分析和处理,将是无从下手的,就像习武之人只学招式无非就是一些花架子,没有深厚的内功一切都做不成。

左思思右想想,测试仪有显示屏,能不能够从显示屏的接口获取传输显示的数据呢,因为一般显示屏显示的数据是已经经过处理得出的有效的可用的结果,这也许还是个好的思路。

一看,这是一个段码屏,段码屏一般都是定制的产品,每个屏的结构很可能都是不一样的。要想获取屏上的数据,肯定首先要做的事情就是了解显示的原理和结构,通过调研技术资料,从厂家获取相关帮助信息,获得了一点点的经验。不过这篇文章不是讲解怎么从段码屏获取数据,因为目前还没有做到那一步,这个还是有点难度的事,本文先来一些简单轻松的东西,主要说明段码屏的一般结构、原理、驱动方法和使用HT1621驱动段码屏的方法。

一、段码屏的显示原理和驱动方法

一般段码屏有段电极和公共极,就像在图 2中,SEG1~SEG5为段电极,COM为公共极。段码屏中的每个段,都填充了一种特殊的液态晶体。在电场的作用下,晶体的排列方向会发生扭转,因而改变其透光性,从而可以看到显示的内容。一般电场电压就加在段电极和公共极的两端。

但是段码液晶显示屏不像数码管,施以一定大小的直流正向电压就能显示,如果在SEG和COM两端加直流电压,将会导致液态晶体不可逆的损坏。那么正确的操作是怎样呢?资料上说要想液晶显示的话需要在SEG和COM两端需要施加一定压差的交流电,假如不要液晶显示的话也需要在SEG和COM两端施加电压,不过施加电压的压差很小或者为零就可以。举个例子,我们要点亮某个段时,只需要保证给其电极两端加的电压差为3.3V(如COM1=3.3V,SEG1=0V),并且间隔合适的时间,将这两极的电压反转输出(如COM1=0V,SEG1=3.3V);不点亮某个段时,只需要保证给其电极两端加的电压差为0V(如COM1=3.3V,SEG1=3.3V),并且间隔合适的时间,将这两极的电压反转输出(如COM1=0V,SEG1=0V)。

上面将的就是段码屏的原理,下面举个简单的例子,说一下段码屏的结构。这个段码屏能显示的字符是“888.E”,一共有10个引脚,1-4号引脚分别是COM4-COM1,5-10号引脚分别是SEG1-SEG6。假如我们想让第一个符号显示“8”,就需要第一个字符的ABCDEFG码段都点亮,就需要在COM1-SEG2,COM2-SEG1和SEG2, COM3-SEG1和SEG2, COM4-SEG1和SEG2,之间同时施加交流电压,就是图 4里左边的电压逻辑。可以看出,这个段码屏的驱动方式还是比较复杂的,所以,咱们为了简便,需要使用到一个段码屏驱动芯片HT1621,在下一节详细地讲一讲。

二、用HT1621来驱动段码屏

客官您看了在上一章节介绍的段码屏驱动原理吧,要想点亮一个码段就需要在它的两极施加交流电压,客官您是不是感觉太麻烦了,其实沙鸥也有这个感觉,不过其实厂家一般是用一些驱动芯片来做段码屏产品,比较常见的就是HT1621.

那HT1621又是干嘛的呢,来自百科的解释,HT1621是128 点内存映象和多功能的LCD驱动器,HT1621 的软件配置特性使它适用于多种LCD应用场合包括LCD模块和显示子系统,用于连接主控制器和HT1621的管脚只有4 或5 条,HT1621 还有一个节电命令用于降低系统功耗,一句话来说,HT1621就是用来驱动LCD的,它跟主控制器用几根线连接就可以了。那么问题来了,用HT1621怎么来驱动段码屏呢?

查阅了很多资料,有一篇文档非常值得推荐:《多功能LCD驱动器HT1621及其应用》,关于HT1621的具体参数、引脚配置等信息可以找一下它的datasheet看看,本文就直接讲一下怎么使用这个芯片。

HT1621有SEG0~SEG31一共32个段电极输出,COM0~COM3四个背电极输出,也就是能够驱动32*4=128个段码。在实际的应用中,一般我们是用不了这么多个段码的,可以先从低位向高位依次连接到段码屏。图 6又举了一个例子讲了一下单片机、HT1621和段码屏的接线。

线接好了,那问题来了,怎么让段码屏显示我们想要的字符呢?

看来还得从HT1621说起,HT1621内部有个RAM,大小是32*4=128,对应着32个SEG和4个COM电极组成的128个段码。将RAM中某一位置1,那么对应的段码就会被点亮,同样,置0的话,对应的段码就不显示,如图 7。举个例子,如图 8的段码屏,我们想让第一位显示字符“1”,根据图 5的逻辑表,我们需要让B和C码段的电极SEG2-COM2、SEG2-COM3两端有电压差,假如是用HT1621驱动并且按照图 5接线,那么只需要让HT1621 RAM中地址1中的数据位D1、D2为1,其余为0即可。

那么问题又来了,怎么让RAM中的数据变化呢?这就需要使用到单片机等微处理器,由单片机向HT1621传输数据改变RAM中内容,HT1621和单片机有四个引脚是连接的,CS、RD、WR和DATA,单片机就是通过这几个连接的引脚采用串行通讯的方式向HT1621传输数据。

它们之间通信的时序图如图 9,可见按照时序控制CS,WR,DATA引脚就能向HT1621的RAM中写入数据,从而改变段码屏中的显示内容。

以上为段码屏的显示原理和使用HT1621驱动的方法,本文的叙述没有来得及实践验证,可能有误,假如说错了话请不要见怪,恭迎指正。

欢迎关注微信公众号:永珂在线

参考资料:

https://wenku.baidu.com/view/1d1e3368a5e9856a56126075.html

https://wenku.baidu.com/view/e509b512910ef12d2bf9e77d.html

https://blog.csdn.net/sinat_31499981/article/details/78329287

https://wenku.baidu.com/view/0b3e1e4f2b160b4e767fcf61.html

相关问答

位码和 段码 区别?

位码是多个数码管显示的时候,尤其是动态显示的时候用的,就是数码管上显示的字形,设定对应的公共端的值。段码是单片机的一个数码管上有八个LED灯,分别为七条...

单片机 C语言中数码管的断码和位码定义起什么作用?

在单片机C语言中,数码管的段码定义了数码管的显示内容,比如0~9的显示段码分别定义为:共阳:ucharcodeledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7...

如何确定数码管 段码表 - 189****5620 的回答 - 懂得

确定数码管段码表方法如下:共阴:0、0x3f1、0x062、0x5b3、0x4f4、0x665、0x6d6、0x7d7、0x078、0x7f9、0x6fA、0x77B、0x7cC、0x39D、0x5...

单片机 中数码管显示时位控和段控的信号怎么输进来?

显示分静态/动态2种,动态需定时循环刷新位控码和段码,静态时不用段码一般由2种方式驱动,一种是并口直接驱动或者并口加锁存器驱动,一种是串口转并口驱动这...

单片机 中r1,r2r3是什么寄存器就是在51芯片逻辑结构中对应那...

[最佳回答]51单片机中r1,r2r3是寄存器组中的,共有四组寄存器组,每组都有r0,r1,r2,r3到r7,通过psw中的寄存器组选择字,来选用哪一组.51单片机中r1,r2r3是...

51 单片机 数码管段选怎么记?

关于51单片机数码管段选怎么记问题。实际中的写法,差不多都是先送数据再送使能的。这个区别,没有原理可以说的,按照实际效果决定的非要说原理,就是使能之...

淘宝上带LCD 段码 液晶屏显示的电子手表是用什么 单片机 驱动的?

板载芯片封装:COB这种电子表的方案不是用的单片机,单片机做不到那么低的功耗,他们都是用专用的电子手表芯片。如果把电子手表拆开,就会看到液晶的背面有一...

(1)手工焊接出 单片机 的最小系统,至少包括 单片机 的时钟电路...

[最佳回答]电路图的话:P0口接数码管七个段码引脚,P2口接段码选通位,K0接P3.5,K1接P3.6,K4接P3.7,K3接P3.2,K2接P3.3.最小系统其实就是复位电路和晶振起振电路,...

sck应该连在 单片机 哪里?

1,笔段别接限流电阻单片机P口相连。2,位选信号通IO口加三极管放相连共四组具体应考核数码管共阴共阳结构2.1)共阳型采用PNP管发射极接电源集电极连接位选基极...

单片机 编写音乐程序中DB表示什么意思?程序中的一段如下?

DB是单片机汇编语言中的指令DB指令以表达式的值的字节形式初始化代码空间。格式:[标号:]DB表达式表表达式中可包含符号、字符串、或表达式等项,各个项之间用逗...

猜你喜欢