74hc573可以驱动几位共阴数码管?74hc573驱动数码管应用解析

电子说

1.3w人已加入

描述

74hc573能够驱动几位共阴数码管取决于你使用几片74hc573,如果用两片,一片锁存段码,一片锁存位码,就可以驱动8位数码管。在讲解74hc573驱动数码管问题之前我们要清楚,什么是74hc573及什么是数码管?

数码管

数码管是一种半导体发光器件,其基本单元是发光二极管,文章用到的是2位连体共阴数码管。这种数码管有8根段码引脚和2根位码引脚,段码决定了显示的是什么字符,位码决定了哪位数码管被点亮。对于共阴数码管来讲,位码引脚为低电平时,相应的数码管被点亮。

74hc573锁存器

74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。具有8个数据输入端、8个数据输出端和3个控制端。1脚(OE)为输出使能端,11脚(LE)为锁存使能端。锁存器的工作原理:当OE为高时,输出为高阻态,即锁存器不能正常工作。当OE为低且LE为高时,输出Q将随输入D而变,此时锁存器工作在直通模式下。当OE为低且LE为低时,输出Q将不随输入D而变,此时锁存器工作在锁存模式下,输出Q保持上一时刻数值不变。

74hc573可以驱动几位共阴数码管?

理论上说只要你74hc573使用得够多,就能驱动更多的数码管,下面来分享74hc573驱动数码管的应用电路及程序分享

74hc573驱动2位数码管

在程序开头部分先定义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驱动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;

}

}

结论:经电路测试,电路工作正常

74hc573驱动6位数码管

1.共阴数码管的每一位(WEI1,WEI2,WEI3......)都是公共的阴极,只有输入低电平的时候才有可能被点亮,所以位选的时候被选中的位必须是低电平。

2,选段的时候只有输入高电平才能点亮数码管

3,74hc573-1是控制段选的,74hc573-2是控制位选的,P2.6和P2.7端口是锁存使能位,置高电平时锁存器透明(即输入和输出相同),置低电平时锁存

4,控制第一个数码管显示数字1,代码如下:

共阴数码管

结论:经测试,电路正常工作,无数据异常

74hc573驱动8位数码管

程序分享

共阴数码管

共阴数码管

结论:电路正常工作

总结

74HC573是锁存器,用于数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。

驱动数码管需要两个信号,一个是段选信号,一个是片选信号。段选信号是固定的8个(对于普通7段数码管),而片选信号数量是与数码管位数相同的。对于8位数码管的动态扫描来说,片选信号要8根线,这样仅仅驱动数码管就占用了2组共16个IO口,非常浪费

使用573锁存器后,只占用8+2=10个IO口,其中2个用于控制锁存器使能,另外8个输出信号。先关闭控制片选信号的573芯片的锁存功能,然后单片机输出片选信号,随后开启锁存,此时无论573的输入端如何变化,输出端都是不变的,也就是原来输入的信号被锁住了。然后,再关闭控制段选的573的锁存功能,输出段选信号,再锁存,这样就巧妙的实现了数据线的复用,让一组IO口既输出段选又输出片选。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分