图附.4.1 常见数码管
我们常见的LED数码管(LED Segment Displays)是由8个发光二极管构成,如图附1.4.1所示。按照一定的图形及排列封装在一起的显示器件。其中7个LED构成8字形,1个LED构成小数点,因为由8个LED组成,所以通常又叫做八段数码管。这些段分别由字母a,b,c,d,e,f,g,dp来表示,如图附1.4.2所示。当数码管特定的段加上电压后,这些特定的段就会亮起,以形成我们眼睛看到“8.”的字样了。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的每个显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成一个笔画,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。在实际的使用中还有其他多段的数码管,比如能显示“米”字型的数码管,如图附1.4.3所示。
图附1.4.2 数码管各段代表字母
图附1.4.3 “米”字型数码管
数码管的分类
通过LED的连接方式不同,可以把数码管分为两类。数码管中的所有发光二极管的阳极连接到一起的叫做共阳数码管,发光二极管的阴极连接到一起的叫做共阴数码管。如图附1.4.4所示。在电路连接时,共阳数码管中公共端一般需要接电源正极,然后需要哪一段亮,就把对应段的控制引脚设为低电平,而在共阴数码管中,公共端需要接电源地,然后需要哪一段亮,就把对应段的控制引脚设为高电平。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。了解LED数码管的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的,显示字符时候的字符库也是不一样的。
图附1.4.4 数码管原理
数码管的驱动方式
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
1.静态显示驱动:
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段都由一个Arduino的I/O进行驱动。静态驱动的优点是编程简单,显示亮度高,无闪烁;缺点是占用I/O多,比如驱动4个数码管静态显示则需要4×8=32个I/O口来驱动,这样对Arduino的I/O口是极大的浪费。故实际应用时必须增加外在的驱动电路进行驱动,然而又增加了硬体电路的复杂性,所以在我们设计驱动电路和选择驱动方式时需要做取舍的选择。数码管静态显示电路原理图如图附1.4.5所示。 <br /><br />图附1.4.5数码管静态显示电路原理图
2.动态显示驱动:
数码管动态显示是在实际应用中较为广泛的一种显示方式,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另外为每一位数码管的公共极COM增加位选通电路控制,位选通电路由Arduino的I/O口控制。当Arduino在笔画连接的引脚上输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于Arduino对COM端的位选通电路的控制,只有当位选通电路选通时,当前位才会显示我们输出的字形码。所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~5ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。数码管动态显示电路原理图如图附1.4.6所示。<br /><br />图附1.4.6数码管静态显示电路原理图