首页 理论教育 MCS-51单片机与LED数码管显示器的接口技术及应用

MCS-51单片机与LED数码管显示器的接口技术及应用

时间:2026-01-26 理论教育 筱悦 版权反馈
【摘要】:下面先介绍目前最常用的8段LED数码管显示器。LED数码管共计8段。本章均以“8”字形的LED数码管为例。译码驱动电路对锁存器的4位二进制进行译码,产生送往LED数码管的7位字段码。LED数码管的显示方式有静态显示方式和动态显示方式两种。

在单片机应用系统中,为了便于观察和监视单片机系统的运行情况,常需要用显示器显示运行的中间结果及状态等信息。单片机系统中常用的显示器有发光二极管(单个LED)、8段发光数码管(LED)显示器、LED点阵显示器、液晶(LCD)显示器等。其中:①发光二极管组成的显示器是单片机应用产品中最常用的廉价输出显示设备;②LED数码管显示器因具有使用电压低、耐振动、寿命长、显示清晰、亮度高、配置灵活、与单片机接口方便等特点,而被单片机应用系统广泛使用;③发光二极管或8段数码管都不能显示字符(含汉字)及更为复杂的图形信息,LED点阵显示是把很多的LED按矩阵方式排列在一起,通过对各LED发光与不发光的控制来完成各种字符或图形的显示,常见的LED点阵显示模块有5×7,7×9,8×8等结构;④LCD显示器是以电流刺激液晶分子产生点、线、面配合背部灯管构成平面画面,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。由于LCD显示器功耗很低,因此备受工程师青睐。

下面先介绍目前最常用的8段LED数码管显示器(简称LED显示器)。

8.1.2.1 LED显示器的结构与原理

1.LED显示器的外形及两种结构

LED显示器是由发光二极管按一定结构组合起来显示字段的显示器件,也称为数码管。在单片机应用系统中通常使用的是“8”字形的8段式LED数码显示器,其外形结构和引脚如图8-9(a)所示,它由8个发光二极管构成,通过不同的组合可显示0~9、A~F及小数点“.”等字符,其中7段发光二极管构成7笔的“8”字形,1段组成小数点。数码管按其外形尺寸有多种形式,使用较多的是0.5″和0.8″,显示的颜色也有多种形式,主要有红色和绿色,亮度强弱可分为超亮、高亮和普亮。数码管的正向压降一般为1.4~2.3V,额定电流一般为10m A,最大电流约为40m A。

图8-9 LED数码管

LED数码管有共阴极和共阳极两种结构,图8-9(b)所示为共阴极结构,8段发光二极管的阴极端连接在一起作为公共端COM,阳极端分开控制。使用时公共端接地,此时当某个发光二极管的阳极为高电平时,则此发光二极管点亮;图8-9(c)所示为共阳极结构,8段发光二极管的阳极端连接在一起作为公共端COM,阴极端分开控制。使用时公共端接电源,此时当某个发光二极管的阴极为低电平(通常接地)时,则此发光二极管点亮。

显然,要显示某种字形就应使此字形的相应字段点亮,即从图8-9(a)中a~g和dp(或称h)引脚输入不同的8位二进制编码,可显示不同的数值或字符。例如,a、b、c、d、e、f导通,g和dp截止时显示“0”。这种控制发光二极管使显示器显示字符的字形数据常称为段数据或称为“字段码”。LED数码管共计8段。正好是一个字节。习惯上是以“a”段对应段码字节的最低位。各段与字节中各位对应关系如表8-2所示。

表8-2 码段与字节中各位的对应关系表

不同字符字形的字段码不一样,而对于同一个数字或字符,共阴极连接和共阳极连接的字段码也不一样,共阴极和共阳极的字段码互为反码,表8-3所示为0~9数字的共阴极和共阳极的字段码。

表8-3 数字的共阴极和共阳极的字段码

表8-3只列出了部分段码,读者可以根据实际情况选用,或重新定义。除“8”字形的LED数码管外,市面上还有“±1”形、“米”字形和“点阵”形LED显示器。本章均以“8”字形的LED数码管为例。

2.LED显示器的译码方式

由显示数字或字符转换到相应字段码的方式称为译码方式。数码管是单片机的输出显示器件,单片机要输出显示的数字或字符,通常采有两种译码方式:硬件译码方式和软件译码方式。

(1)硬件译码方式。硬件译码方式是指利用专门的硬件电路来实现显示字符到字段码的转换,这样的硬件电路有很多,比如Motorola公司生产的MC14495芯片就是其中的一种,MC14495是共阴极1位十六进制数—字段码的转换芯片,能够输出用4位二进制表示形式的1位十六进制数的7位字段码,不带小数点,因此,它只能外接无小数点的7段LED数码管或小数点不连接的8段LED数码管。

MC14495的内部结构和外部连接如图8-10所示。它由内部锁存器和译码驱动电路两部分组成,在译码驱动电路部分还包含一个字段码ROM阵列。内部锁存器用于锁存输入的4位二进制数,以便提供给译码电路译码。译码驱动电路对锁存器的4位二进制进行译码,产生送往LED数码管的7位字段码。硬件译码时,要显示一个数字,单片机只需送出这个数字的4位二进制编码,经I/O接口电路并锁存,然后通过显示译码器,就可以驱动LED显示器中的相应字段发光。

图8-10 MC14495硬件译码电路

硬件译码由于使用的硬件较多,显示器的段数和位数越多,电路越复杂,因此缺乏灵活性,且只能显示十六进制数,硬件电路也较为复杂。

(2)软件译码方式。软件译码方式就是通过编写软件译码程序(通常为查表程序)来得到要显示字符的字段码。由于软件译码不需外接显示译码芯片,则硬件电路简单,并且能显示更多的字符,因此在实际应用系统中经常采用。

3.LED显示器的显示方式

图8-11所示为显示4位字符的LED数码管的结构原理图。N位位选线和8×N条段码线。段码线控制显示字型,而位选线控制着该显示位的LED数码管的亮或暗。

LED数码管的显示方式有静态显示方式和动态显示方式两种。

(1)静态显示方式。静态显示方式是指当显示器显示某个字符时,相应的字段(发光二极管)一直导通或截止,直到显示另一个字符为止。数码管工作在静态显示方式时,其公共端直接接地(共阴极)或接电源(共阳极)。每位的字段选线(a~g,dp)与一个8位的并行接口相连,要显示字符,直接在I/O接口发送相应的字段码。这里的并行接口可以采用并行I/O接口,也可以采用串入/并出的移位寄存器或其他具有三态功能的锁存器等。

图8-11 4位LED数码管的结构原理图

图8-12 4位数码管静态显示图(https://www.xing528.com)

图8-12为4位数码管静态显示图。图中数码管为共阴极,公共端接地,若要显示一组4位的数字,则需通过4个8位的输出口分别控制每个数码管的字段码,因此在同一时刻4个数码管可以显示不同的字符。

静态显示的优点是显示稳定,显示无闪烁,显示器的亮度大,软件编程容易,且仅在需要更新显示内容时CPU才执行一次显示更新子程序,节省了CPU的时间。其缺点占用I/O接口线较多,显示位数较多时所需的电流比较大,对电源的要求也就随之增高,成本也较高。如N位静态显示器要求有N×8根I/O接口线,对图8-11电路,要占用4个8位I/O口。实际应用中,为了节省I/O口线,一般都采用动态显示方式。

(2)动态显示方式。LED动态显示是指各位显示器一位一位地轮流点亮(扫描),对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极电位只需一个8位口(称为扫描口),控制各位显示器所显示的字形也需一个8位口(称为段数据口)。数码管工作在动态显示方式时,将所有数码管的字段选线(a~g,dp)都并接在一起,接到一个8位的I/O接口上,每个数码管的公共端(称为位线)分别由相应的I/O接口线控制,图8-13是一个8位数码管动态显示图。

在图8-12中,由于每一位数码管的段选线都接在一个I/O接口上,所以每送一个字段码,8位数码管就显示同一个字符。为了能得到在8个数码管上显示不同字符的显示效果,利用人眼的视觉惰性,采用分时轮流点亮各个数码管的动态显示方式。具体方法是从段选线I/O接口上按位分别送显示字符的字段码,再位选控制端口按相应次序分别选通相应的显示位(共阴极送低电平,共阳极送高电平),被选通位就显示相应字符(保持几个ms的延时),没选通的位不显示字符(灯熄灭),依此不断循环。从单片机工作的角度看,在一个瞬间只有一位数码管显示字符,其他位都是熄灭的,但由于余晖和人眼的“视觉暂留”作用,只要循环扫描的速度在一定频率以上,这种动态变化人眼是察觉不到的,可以造成“多位同时亮”的假象,达到同时显示的效果。从效果上看,就像8个数码管能连续和稳定地同时显示8个不同的字符。

图8-13 8位数码管动态显示图

LED动态显示方式由于各个数码管共用一个段码输出端口,分时轮流选通,从而大大简化了硬件电路,并且显示器越多优势越明显。但此方式的显示亮度不如静态显示的亮度高,数码管也不宜太多,一般在8个以内,否则每个数码管所分配到的实际导通时间会太少,显得亮度更加不足。此外,如果“扫描”速率较低,还会出现闪烁现象。

8.1.2.2 LED显示接口典型应用电路

1.LED静态显示接口电路

如图8-14所示为一种LED数码管静态显示与单片机的接口电路。设数码管为共阳极,故其公共端都接高电平。考虑到若采用并行I/O接口占用I/O资源较多,因此静态显示器接口中常采用图8-14所示的串行口扩展并行口方式,外接74LS64移位寄存器构成显示器静态接口电路。

图8-14 静态显示接口电路

2.LED动态显示接口电路

如图8-15所示为8位软件译码动态显示电路,8位数码管的段选线并接,经8位集成驱动芯片BIC8718与MCS-51单片机的P1端口相连,8位数码管的公共端(即各数码管的位选线)经BIC8718分别与MCS-51单片机的P2端口相连。

动态扫描显示子程序用延时方法控制一位的显示时间,CPU效率很低,并且仅当CPU能循环调用显示子程序时,显示器才能稳定地显示数据,若CPU忙于处理其他事务,显示器会抖动,甚至只显示某一位而其他位发黑。使用定时中断扫描显示器,就可以解决这个问题。其方法如下:

图8-15 动态显示接口电路

(1)设定MCS-51单片机的定时器/计数器使其产生1ms定时中断,由定时器/计数器的中断程序调用显示1位子程序,使CPU每隔1ms对显示器扫描1位。

(2)设置8个字节显示缓冲器DIRBUF~DIRBUF+7,和显示缓冲器指针DIRBFP,其初值指向DIRBUF。

(3)设计一个显示1位子程序,其功能为将DIRBFP指出的内容显示在显示器对应位上,修改DIRBFP。

这样即可使显示器显示稳定,而且CPU可以处理其他事务。

8.1.2.3 显示接口编程举例

【例8-3】 图8-16是一个8位软件译码动态显示的接口电路图。图中采用8255A扩展并行I/O口接数码管,数码管采用动态显示方式,8位数码管的段选线并联与8255A的A口通过74LS373相连,8位数码管的公共端通过74LS373分别与8255A的B口相连。也即8255A的B口输出位选码选择要显示的数码管,8255A的A口输出字段码使数码管显示相应的字符,8255A的A口和B口都工作于方式0输出。A口、B口、C口和控制口的地址分别为7F00H、7F01H、7F02H和7F03H。

设8个数码管的显示缓冲区为片内RAM的57H~50H单元,软件译码动态显示汇编语言程序为:

图8-16 采用8255的8位软件译码动态显示接口电路

软件译码动态显示C语言程序为:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈