四位数码管动态驱动显示及接线引脚图

1、静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

2、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

开发实例

下面电工之家讲解一下四位数码管的动态驱动显示,首先看一下接线引脚图如下。

四位数码管动态驱动显示及接线引脚图

接下来用51单片机设计目标:通过编写c语言程序经编译连接后下载到单片机中,使四位数码管依次显示1,2,3,4

#define uchar usigned char

#define uint usigned int

//位选控制端口

sbit p20=P2^0;

sbit p21=P2^1;

sbit p22=P2^2;

sbit p23=P2^3;

//数码管段选编码数组,分别为显示:1,2,3,4的编码

uchar code BianMa[] ={0x7,0xb,0xd,0xe};

//延时1ms函数(用于数码管动态刷新)

void Delay1ms(int time);

void main()

{

while(1)

{

p20 =0; //共阴极数码管低位选有效,表示已选中第一位数码管

P0 =BianMa[0];//通过I/O口P0向数码管送段选编码

Delay1ms(500);//第一位数码管显示0.5秒,然后换到第二位,依次下去,由于视觉停留和数码管余辉,所以感觉四位都在显示

p20 =1;

p21 =0; //第二位亮

P0 =BianMa[1];

Delay1ms(500);

p21 =1;

p22 =0; //第三位亮

P0 =BianMa[2];

Delay1ms(500);

p22 =1;

p23 =0; //第四位亮

P0 =BianMa[3];

Delay1ms(500);

p23 =1;

}

//延时函数体

void Delay1ms(int time

{

int i,j;

for(i =time;i>0;i--)

for(j =110;j>0;j--)

}

关于亮度和锁存器

一般来说静态驱动的亮度要高于动态驱动的亮度,但不影响使用。实际使用中为了达到更好的效果,会配合锁存器如74HC573一起使用,可以记忆先前状态数据直到有新数据覆盖。对做51单片机应用开发来说,相对LCD液晶,液晶模块编程更方便,样式更多样,但是其缺点亮度不够。这也恰恰是数码管的优势,如果做简单的计数显示,数码管是最好选择。

使用中注意事项

数码管的基本组成是发光二极管,因此其可以通过的电流只有几mA,接5V直流电源做测试的时候一定要串上一个几十K大小的电阻。否则,很容易烧掉,此外用万用表的测电阻档就可将其点亮,足以说明其电流之小。