数码管原理与显示译码
数码管最为人接口中最为常用的显示器件,特别是在FPGA,嵌入式,单片机等领域几乎是必备的人机接口器件,也可说标配器件。正因为如此重要,本节内容将详细介绍数码管的结构、原理及驱动方法。
- 数码管的外观
如图1所示,6个数码管的排列形状,这是经常使用的一种一种方式。单个数码管的形状如图2所示。不同的设计对数码管的个数要求不同,但都大同小异,这里将介绍数码管的基本显示原理及选型。

图1
在图2中我们可以看到,数码管是分段的,数字部分分为A,B,C,D,E,F,G七个部分,右下角还有一段DP是个圆点,常用来显示小数点。早期的数码管没有DP段,只有7段因此也称为7段数码管。现在的数码管都是8段的,称为8段数码管,但有时习惯上仍称为7段数码管。数码管的每一段都对应一个发光二极管,想显示不同的内容,就要多个段组合使用,对应段的发光管点亮,就会按要求显示不同的数字。 
图2
2. 显示原理
按照图2的排列方式,如果数码管显示的数值为2,则应该点亮A,B,G,E,D等5段,如图3所示,其它的数字显示方式类似。7段数码管的各种组合,可以显示0–9,A,b,C,d,E,F等数字和字母,因此在10进制BCD码和16进制的应用中可以满足各种基本要求。
图3
成品的8段数码管内部一般有两种引脚共享的连接方式;一种是共阴极的连接方式如图4,另一种是共阳极的接法如图5。

图4,
图4中,将公共端COM接地,在每个段上接高、低电平,就可以控制每个发光管的点亮与关闭。当然一定要记住在驱动通路上要有限流电阻,以免把发光管或驱动电路损坏。如图5
图5

图6
在图6中,各个段的阳极接在一起,形成共阳极电路,一般情况下阳极接电源,阴极各段经过限流电阻接到控制器件上,最终经过控制器内部接地。
共阴极和共阳极的数码管市场上都有销售,因此在设计硬件电路之前一定要注意选定的型号是共阴极的还是共阳极的,因为在硬件电路中针对这两种型号有不同硬件电路对应。
FII-PRA006/010,以及FII-PRX100-D 的都是采用共阳极的数码管,本节后面会有硬件电路的设计介绍。
3. 数码管的段共享
由于每个数码管的管脚有8个(考虑到共享阴极或阳极),但是当数码管的数量较多时(如6个数码管),引脚的数量急剧增加,一般MCU或FPGA很难提供如此多的引脚给CPU使用。因此多个数码管的各段共享设计是非常必要的。如图7,4个共阴极的数码管的各段共享后只需要12个引脚就可以,比分离的4个数码管需要32个引脚,节省20个引脚。如图7所示

图7 数码管段共享
在图7中可以看出,4个数码管各个相应段都连在一起,因此4个数码管在同一时刻只有一个数码管的各段被点亮。否则各个数码管显示的内容相同。假设1234显示在DIG1到DIG4的4个数码管上。
操作步骤如下:
- 数字1经译码驱动A,B,C,D,E, F,G,DP各段,DIG1的共阴极为低电平,其它的共阴极为高电平,此时只有DIG1点亮。延迟一段时间(如2ms)。
- 数字2经译码驱动A,B,C,D,E, F,G,DP各段,DIG2的共阴极为低电平,其它的共阴极为高电平,此时只有DIG2点亮。延迟一段时间(如2ms)。
- 数字3经译码驱动A,B,C,D,E, F,G,DP各段,DIG3的共阴极为低电平,其它的共阴极为高电平,此时只有DIG3点亮。延迟一段时间(如2ms)。
- 数字4经译码驱动A,B,C,D,E, F,G,DP各段,DIG4的共阴极为低电平,其它的共阴极为高电平,此时只有DIG4点亮。延迟一段时间(如2ms)。
- 循环1-4的各个步骤。
因此上面的显示方式是各个数码管分时显示的方式。那么当在某个数码显示,其它数码管都处在非点亮状态,是否会出现明暗闪动现象?
4. 视觉滞留效应
从上面的描述可以看出,4个数码管每一时刻只有一个数码管点亮,从直觉上看会认为数码管的显示会亮暗闪烁,但观察已开发的程序,我们会发现其实并没有出现这种结果。这就是人的视觉滞留效应起到的作用。视觉滞留效应:就是人的眼睛在看到色彩时,当色彩消失后,人的视觉系统仍会保留20毫秒左右的时间在大脑的神经系统中,就像色彩或画面没有消失一样。如果超过这个时间,闪烁效果的确会被感觉到,这就是为什么电脑显示器或电视一般会采用>=50Hz的刷新率,即点亮某个点,在20ms秒内重新点亮该点(如果数据没变化,用上次的数据重复扫描)。数码管的显示也是采用不断刷新的原理达到稳定显示的效果。
在上面的操作步骤中希望刷新时间为16.7ms(60Hz),那么在每个数码管的驻留时间应为16.7ms/4ms,约4.2ms。当然刷新率越高,显示的效果会越好,这就是为什么当前显示屏不断最求120Hz,240Hz的刷新率的道理。但当刷新率提到一定程度后,再提高刷新率效果就不明显,反而会增加成本及功耗。因此根据实际情况决定刷新率。
5. FII-PRA010/006,FII-PRX100-D开发板的数码管硬件电路
开发板上采用6个段共享,共阳极数码管,型号为LG3661BH。从图8中可以看出,8段对应的引脚为A(11),B(7),C(4),D(1),E(3),F(10)),G(6),DP(2),数码管的共阳极端从右到左的引脚号分别为5,8,9,12,13,14.

图8
在图8中,SEG_PA 到SEG_PD 直接接到FPGA引脚上由FPGA灌电流驱动,共阳极由MOS管NDS336P驱动,MOS的栅极由FPAG管脚灌电流(sink)驱动。
6. 共阳极数码管段译码表
| 段选信号 | DP | G | F | E | D | C | B | A |
| · | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 2 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
| 3 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 4 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| 5 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 6 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 7 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
| 8 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 9 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| A | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| B | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| C | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
| D | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
| E | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| F | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |

