因此数码管的驱动方式十分灵活,可以分为静态驱动和动态驱动两类。
静态显示驱动:
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口太多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动。要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
现实应用中,绝大部分的数码管都是动态显示的,只是人眼看不出效果而已。但我们可以借助手机来验证这一点。当我们将快门速度调慢,拍下的数码管照片就是完整的显示数字;当快门速度调快到一定速度时,拍下的显示数字就是不完整的,这也就说明了这个数码管是采用动态显示的驱动方式。
快门速度1/24 时拍下的照片
快门速度1/625 时拍下的照片
模块介绍下面我们来着重介绍一下一个八位的LED数码管模块的结构和驱动方式。
八位数码管显示模块
一个八位的数码管总共有64个LED,我们不可能用64个I/O引脚去控制,因此需要一个驱动芯片。这个模块采用的是MAX7219芯片。它是一种集成化的串行输入/输出共阴极显示驱动器。它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只需要3个I/O口就能驱动8位数码管,可以说效率是很高了。整个模块的电路图如下: