
使用单片机驱动LED数码管的方法多样,主要可以分为静态显示和动态显示两大类。静态显示的特点是其显示驱动电路具备输出锁存功能,单片机传输完所需显示的数据后,就不再干预,直至下一次数据更新时再重新发送一次新数据,这种显示方式的优点是数据稳定,对CPU的占用时间极小。而动态显示则需要CPU持续刷新显示数据,虽然占用的CPU时间较多,但优点在于使用的硬件较少,能够节省线路板空间。
此外,驱动方式还包括硬件译码和软件译码两种。硬件译码指的是显示的段码完全由硬件处理,CPU只需发送标准的BCD码即可。而软件译码则是通过软件来完成硬件的功能,硬件构造相对简单,接线方式也更为灵活,显示段码的处理完全依赖软件,这也是当前较为常用的一种显示驱动方式。
常用的显示驱动芯片种类繁多,包括74LS164、CD4094+ULN2003(2803)、74HC595+ULN2003(2803)、TPIC6B595、AMT9095B、AMT9595等。市场上还有一些专门的LED扫描驱动显示模块,如MAX7219,它们的功能强大,但价格略高。
为了消除74LS164在数据传输过程中出现的闪烁现象,可以在驱动电路中加入一个PNP型三极管来控制数码管的电源。由于164没有数据锁存端,数据在传输过程中对输出端来说是透明的,导致数码管在数据传输过程中闪烁。为了解决这一问题,可以在数据传输过程中关闭三极管使数码管无电不显示,数据传输完成后立即导通三极管,从而实现锁存功能,这样可以驱动多个164显示而不出现闪烁现象。
另一个例子是使用4094做位选,使用89C2051的P1口线做段驱动来扫描驱动9位数码管的显示。由于4094只有8个输出口线,第九位则通过CPU的口线直接进行位选。所有相同位置的段口线连接在一起,然后接到单片机的一个口线上,总共8段,使用8条CPU口线。通过软件控制,首先将1的段码送到P1口线上,然后向4094送位选数据01,使4094的Q1口线输出高电平,选择第一位数码管,使阳极得电,从而在第一位上显示出1,如此循环,直到显示所有数字,不断重复这一过程,即可实现扫描显示。