电子说
74hc573能够驱动几位共阴数码管取决于你使用几片74hc573,如果用两片,一片锁存段码,一片锁存位码,就可以驱动8位数码管。在讲解74hc573驱动数码管问题之前我们要清楚,什么是74hc573及什么是数码管?
数码管是一种半导体发光器件,其基本单元是发光二极管,文章用到的是2位连体共阴数码管。这种数码管有8根段码引脚和2根位码引脚,段码决定了显示的是什么字符,位码决定了哪位数码管被点亮。对于共阴数码管来讲,位码引脚为低电平时,相应的数码管被点亮。
74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。具有8个数据输入端、8个数据输出端和3个控制端。1脚(OE)为输出使能端,11脚(LE)为锁存使能端。锁存器的工作原理:当OE为高时,输出为高阻态,即锁存器不能正常工作。当OE为低且LE为高时,输出Q将随输入D而变,此时锁存器工作在直通模式下。当OE为低且LE为低时,输出Q将不随输入D而变,此时锁存器工作在锁存模式下,输出Q保持上一时刻数值不变。
理论上说只要你74hc573使用得够多,就能驱动更多的数码管,下面来分享74hc573驱动数码管的应用电路及程序分享
在程序开头部分先定义1个数组,数组元素为数码管的段码:uchar+code+table[]={0x3f,0x06,0x5b,0x4f,0x66%,0x6d,0x7d,0x07,0x7f,0x6f}关键代码及注释如下。
数据拆分和显示函数
该函数在具体实现时,不停地先送显个位数,然后送显十位数,即采用了数码管动态扫描法。扫描间隔不宜太长,文章为1毫秒,用delay(1)实现这个间隔,若扫描间隔太长,会导致扫描刷新不及时,出现个位和十位交替闪烁的现象。
定时计数器的初始化及其中断函数
结论
本电路采用单片机作为主控制器,设计了0-99循环计数并显示的电路,采用了锁存器实现2位数码管动态扫描显示。通过测试,电路工作正常
用74HC573驱动4位数码管的段选,
用74HC573驱动4位数码管的段选,如果数码管选用共阴的, 这个电路可行。
补充: 74HC573输出那里串接个小电阻, 再接到数码管的段码端。
我的数码管是共阴的,位选就是接地,那直接接单片机就可以了。
位选接单片机P2.7, P2.6, P2.5, P2.4 。
段选接74HC573 输出端Q0 ~ Q7 (中间最好是串个300欧左右电阻)。
74HC573 输入端D0 ~ D7接单片机P0口。
74hc573驱动4位数码管程序代码
在proteus中用74hc573,做数码管显示的仿真。
#include《reg52.h》
#include《intrins.h》
#define uint unsigned int
#define uchar unsigned char
void delay(uint z);
uchar temp,aa,numdu,numwe,bai,shi,ge;
uint shu;
void init();
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f , 0x06 , 0x5b , 0x4f ,
0x66 , 0x6d , 0x7d ,
0x07, 0x7f , 0x6f ,
0x77, 0x7c , 0x39 ,0x5e ,0x79 ,
0x71 ,0x00
};
void display(uchar bai,uchar shi,uchar ge);
void main()
{
shu=219;
init();
while(1)
{
display(bai,shi,ge);
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);
}
void display(uchar bai,uchar shi,uchar ge)
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[bai];
dula=0;
delay(1);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[shi];
dula=0;
delay(1);
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[ge];
dula=0;
delay(1);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void TImer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==2)
{
aa=0;
shu--;
if(shu==10)
{
TR0=0;
ET0=0;
}
bai=shu/100;
shi=shu%100/10;
ge=shu%10;
}
}
结论:经电路测试,电路工作正常
1.共阴数码管的每一位(WEI1,WEI2,WEI3......)都是公共的阴极,只有输入低电平的时候才有可能被点亮,所以位选的时候被选中的位必须是低电平。
2,选段的时候只有输入高电平才能点亮数码管
3,74hc573-1是控制段选的,74hc573-2是控制位选的,P2.6和P2.7端口是锁存使能位,置高电平时锁存器透明(即输入和输出相同),置低电平时锁存
4,控制第一个数码管显示数字1,代码如下:
结论:经测试,电路正常工作,无数据异常
程序分享
结论:电路正常工作
74HC573是锁存器,用于数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。
驱动数码管需要两个信号,一个是段选信号,一个是片选信号。段选信号是固定的8个(对于普通7段数码管),而片选信号数量是与数码管位数相同的。对于8位数码管的动态扫描来说,片选信号要8根线,这样仅仅驱动数码管就占用了2组共16个IO口,非常浪费
使用573锁存器后,只占用8+2=10个IO口,其中2个用于控制锁存器使能,另外8个输出信号。先关闭控制片选信号的573芯片的锁存功能,然后单片机输出片选信号,随后开启锁存,此时无论573的输入端如何变化,输出端都是不变的,也就是原来输入的信号被锁住了。然后,再关闭控制段选的573的锁存功能,输出段选信号,再锁存,这样就巧妙的实现了数据线的复用,让一组IO口既输出段选又输出片选。
全部0条评论
快来发表一下你的评论吧 !