一、LED显示器

一、LED显示器

(一)7段码LED显示器的结构

LED显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是由7段LED所构成8字形,另外,还有一个用以显示小数点的发光二极管。这种显示器有共阴极与共阳极两种,如图7-8所示。发光二极管的阴极连在一起的(公共端COM)称为共阴极显示器,如图7-8(a)所示;阳极连在一起的称为共阳极显示器,如图7-8(b)所示。一位显示器由8个发光二极管组成,其中,7个发光二极管构成8字形的各个笔画(段)a~g;另一个发光二极管dp用以显示小数点,如图7-8(c)所示。当在某段发光二极管上施加一定的正向电压时,该段笔画即亮;不加电压则暗。为了保护各段LED不被损坏,须外加限流电阻。

图7-8 LED 7段显示器

近年来,由于生产器件工艺的进步,也出现了十六段码LED显示器和点阵式单色和双色显示器,这些LED显示器被广泛应用于电梯、大屏幕LED显示器、公共汽车报站器、车站车次显示等领域,特别是点阵式双色显示器的出现,极大地方便了汉字的显示和图形显示,应用范围很广。

7段显示器与单片机接口比较容易,只要将一个8位并行输出口与显示块的发光二极管引脚直接相连即可。8位并行输出口输出不同的字节数据即可显示不同的数字或字符。通常将控制发光二极管的8位字节数据称为段选码,见表7-1,共阳极与共阴极的段选码互为反码。

表7-1 共阴极和共阳极7段LED显示字形代码表

(二)7段码LED显示器的工作方式

LED显示器有静态显示和动态显示两种方式。

1.静态显示方式

所谓静态显示,就是当显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。即每一个显示器的每位段选线(a~dp)分别与一个8位锁存器的输出口相连,显示器中的各位相互独立。LED显示器工作于静态显示方式时,若采用共阴极LED,则共端COM接地;若为共阳极,公共端COM则接+5V电源,如图7-9所示。

图7-9 LED静态显示接口电路

例如,若要在图7-9的LED显示器中显示字符2,则把段选码A4H送往P1口输出。若该LED显示器采用共阴极接法,则将段选码5BH送往P1口输出;显示字符对应的段选码可通过查表7-1获得。

静态显示方式下,由于每一个LED显示器由一个8位输出口控制段选码,故在同一时间里每一位显示的字符可以各不相同,且显示器的亮度较高。这种静态显示方式编程容易,管理也较简单,占用CPU时间少,硬件电路开销大。在显示位数较少时,可采用静态显示方式。

2.动态显示方式

所谓动态扫描显示,就是CPU轮流向各位显示器送出字形码和相应的位选,利用发光管的余晖和人眼视觉暂留效应,使人感觉好像各位显示器同时都在显示。其特点是将所有LED显示器的段选线并联在一起,由位选线控制是哪一位显示器有效。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的阻值。

图7-10是一个LED动态显示电路。图中,动态显示电路只需要两个8位I/O口,其中一个I/O口1控制段选;另一个I/O口2控制位选。由于6个LED显示器的段选码都由I/O口1控制,因此,同一时刻,这些LED只可能显示相同的字符。要使得每位LED显示不同字符,则在一瞬间只使某一位LED显示器点亮,即位选I/O口2只选通一位LED显示器。如此轮流,每位LED显示器只显示一段时间后熄灭,经过一定时间间隔后又重新点亮。如果每位显示的时间间隔不超过20ms,利用LED惰性特点以及人眼的视觉暂留效应,人们是感觉不到LED显示器是在不断地亮灭的。实际经验表明,如果需要良好的视觉效果,每个LED显示器至少需要刷新30~40次/s,否则,从视觉上给人感觉到闪烁或者亮度不够,这需要在实际设计中引起注意。

图7-10 LED动态显示接口电路

例如,若要求在6个LED显示器上显示“EE0-20”,则应依次向图7-10的段选I/O口1和位选I/O口2输入如表7-2中的段选码和位选码(假定为共阴极)。显示过程中,逐位轮流点亮各个LED,每一位保持1ms,在10~20ms之内再一次点亮,重复不止。这样,利用人的视觉暂留,好像6个LED同时点亮一样。这种方式就是动态扫描显示。

表7-2 动态扫描显示状态

(三)LED显示器接口实例

图7-11是89C51利用P0和P1口控制6位共阴极LED动态显示的接口电路。图中,P0口输出段选码,P1口输出位选码,位选码占用输出口的线数决定于显示器位数。89C51的P1口正逻辑输出的位控与共阴极LED点亮所要求的低电平正好相反,即当P1口位控线输出高电平时,点亮一位LED。图中75452(或7406)是反相驱动器,7407是同相OC门,作段选码驱动器。

图7-11 6只LED动态显示接口

图7-12是扫描显示器流程图,其功能是将片内RAM 79 H~7EH存储单元显示缓冲区的显示字符逐一送往6个LED显示器显示,每个字符显示时间约为1ms。

DIS显示子程序清单如下:

图7-12 扫描显示子程序流程图