0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

74hc573在应用电路作用解析 74hc573驱动数码管动态扫描

ss 作者:工程师谭军 2018-07-28 10:19 次阅读

74HC573D是8位三态锁存器,一般在实际应用电路中用于地址或数据的锁存。本文主要探讨了74HC573D在实际应用电路中的作用以及如何驱动数码管动态显示,下面就来一一介绍74HC573D。

大家都知道74HC573D是一种锁存器,那么锁存器是干嘛用的呢?

锁存器辨析

所谓锁存器,就是输出端的状态不会随输入端的状态变化而变化,仅在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号到来时才改变。典型的锁存器逻辑电路是 D 触发器电路。 PS:锁存信号(即对LE赋高电平时Data端的输入信号)。锁存,就是把信号暂存以维持某种电平状态。

锁存器的最主要作用

1:缓存、

2:完成高速的控制其与慢速的外设的不同步问题、

3:是解决驱动的问题(提供的电流比51IO口输出电流大)

4:拓展I/O口(可以很猥琐的用锁存器幂叠加方法,即锁存器的Q再接锁存器~ 实现IO口的无限拓展···)

锁存器应用实例:

I/O口复用:当单片机连接片外存储器时,要接上锁存器,这是为了实现地址的复用。假设,MCU 端口其中的 8 路的 I/O 管脚既要用于地址信号又要用于数据信号,这时就可以用锁存器先将地址锁存起来。(具体操作:先送地址信息,由ALE使能锁存器将地址信息锁存在外设的地址端,然后送数据信息和读写使能信号,在指定的地址进行读写操作)

如果单片机的总线接口只作一种用途,不需要接锁存器;如果单片机的总线接口要作两种用途,就要用到锁存器。例如:一个I/O口要控制两个 LED,对第一个 LED 送数据时,“打开”第一个锁存器而“锁住”第二个锁存器,使第二个 LED 上的数据不变。对第二个 LED 送数据时,“打开”第二个锁存器而“锁住”第一个锁存器,使第一个 LED 上的数据不变。如果单片机的一个口要做三种用途,则可用三个锁存器,操作过程相似。就这一种用法而言,可以把锁存器视为单片机的 I/O 口的扩展器。

74hc573在应用电路作用解析 74hc573驱动数码管动态扫描

74HC573引脚分布图

数据锁存

当输入的数据消失时,在芯片的输出端,数据仍然保持;这个概念在并行数据扩展中经常用到。

74hc573在应用电路作用解析 74hc573驱动数码管动态扫描

由上边这个真值表可以看出:OE为高时,输出始终为高阻态,此时芯片处于不可控制状态,所以在一般应用中,我们必须将OE接低电平。

LE则是输出端状态改变使能端,当LE为低电平,输出端Q始终保持上一次存储的信号(从D端输入),当LE为高电平时,Q紧随D的状态变化,并将D的状态锁存。

也就是说当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。

另外:对锁存器的输入是和标准 CMOS 输出兼容的;若再加上上拉电阻,他们能和 LS/ALSTTL 输出兼容。

锁存器的电路连接及使用详解:

(结合上面的锁存器引脚说明)

0:vcc gnd 供电不用多说吧?

1:OE接地

2:D0-D7接我们的信号发射端 (一般为单片机用来传输数据的I/O口)

3:Q0-Q7接我们要接受信息的终端(数码管,液晶,or anyother device)

4:LE接一个I/O口(此I/O脚可视为锁存器 锁存功能 的开关,高电平为更新Q端信号(要更新的信号从D输入)低电平则不更新)

74hc573在电路中的实际应用

74hc573在应用电路作用解析 74hc573驱动数码管动态扫描

在这里就以脉冲数据采集电路为例,如上图所示,采用AT89S52与两个74HC573锁存器传输信息使用,AT89S52具有低功耗、高性能、8K字节的Flash及32位I/O口线、全双工串行通信口等优点。其中U10锁存器做位选功能,U9锁存器做段选功能,这样就可以有效扩展AT89S52单片机P2的I/O端口,使程序控制信息与脉冲数据信息在传输过程中能够非常有效的控制,这为多路脉冲数据的采集提供了重要的基础。

74hc573驱动数码管动态扫描

数码管由于发光亮度强,指示效果好,非常适合于电梯楼层等数值显示应用中。对于一位数码管,可以采用静态显示,但实际应用中都是需要显示多位数值,数码管模块也只能动态显示。在实际应用电路中,74hc573驱动数码管中都不是简单的直连就可以的,这个需要分具体应用场景。具体情形则要看是仿真,还是实物。仿真,74HC573是可以直接连接数码管的。实物,是不可以的,数码管的每一段,都必须串联一个限流电阻。在这里我们仅仅讨论74hc573在数码管动态显示中的连接。

数码管

数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。数码管根据内部接法又可分成共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管(如下图SM*10501),共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管如下图(SM*20501)。以共阳数码管为例,要想显示数字2,需把A、B、G、E、D段点亮,即公共端接上正电源,ABGED段阴极拉低,其余段拉高即可显示数字2。

74hc573在电路中应用设计

此处以四位一体共阳数码管显示为例讲解其大概设计。

微控制器的IO口均不能流过过大的电流,LED点亮时有约10ms的电流,因此数码管的段码输出不要直接接单片机IO口,应先经过一个缓冲器74HC573。单片机IO口只需很小的电流控制74HC573即可间接的控制数码管段的显示,而74HC573输出也能负载约10ms的电流。设置数码管段的驱动电流为ID=15ma,这个电流点亮度好,并且有一定的裕度,即使电源输出电压偏高也不会烧毁LED,限流电阻值

R = (VCC- VCE– VOL– VLED) / ID

VCC为5v供电,VCE为三极管C、E间饱和电压,估为0.2v, VOL为74hc573输出低电平时电压,不同灌电流,此值不一样,估为0.2v,具体查看规格书,VLED为红光驱动电压,估为1.7v,根据上式可算出限流电阻为R = 200R。

数码管需接收逐个扫描信号,扫描到相应数码管时,对应的段码数据有效,即显示这个数码管的数值。笔者采用三线八线译码器74HC138来产生对应的扫描线信号。

当各个段码均点亮时,电流约15max8=90ma流过数码管公共端,74HC138无法直接驱动这个电流,需加三极管驱动,由于74HC138输出低电平有效,此处只有PNP三极管适合作为驱动。三极管基极电流设为2ma即可让三极管饱和,最大驱动电流远大于90ma。基极偏置电阻阻值

Rb=(VCC- VEB– VOL) / IB

VCC为5v供电,VEB为三极管E、B间的导通电压0.7v,VOL为74hc138输出低电平时电压,可根据规格书估为0.3v,故Rb= 2k即可。

74hc573在应用电路作用解析 74hc573驱动数码管动态扫描

四位一体数码管原理图

74hc573驱动实现

数码管段码接P0口,位码接P2口第0~2位。对于LED显示器都是有一个刷新频率的,同样对于数码码动态扫描也需要一个扫描频率。扫描频率下限为50HZ,低于一定的扫描频率,显示会闪烁。频率过高,则亮度较差且占用cpu资源。一般整个数码管扫描一遍时间为约10ms较合适(即扫描频率100HZ),我们用的是四位数码管,每个数码管点亮时间为2ms,扫描一遍时间为8ms。为保证这个刷新频率,通过是通过定时器来周期性进行数码管刷新。笔者在此以四位一体数码管实现秒表计数显示为例来作代码开发。

数码管动态显示功能实现模块文件DigitalTubeTable.c内容如下:

#include "reg52.h"

#include"DigitalTube.h"

// 数值相对应的段码,共阳极

static unsigned char codeDigitalTubeTable[12]= { // 共阳LED段码表

0xc0, 0xf9, 0xa4, 0xb0, 0x99,0x92, 0x82, 0xf8, 0x80, 0x90, 0xff, 0xbf

//"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-"

};

// 每个数码管需一个字节的内存保存对应数码管数据

static unsigned charFrameBuffer[DigitalTubeNumber];

unsigned char*DigitalTube_GetBuffer()

{

return FrameBuffer;

}

void DigitalTube_Scan()

{

static unsigned char Select = 0; // 记录扫描的选择线

unsigned char Code;

// 从对应选择线中找到显存数据,并得到相应的段码

Code = DigitalTubeTable[FrameBuffer[Select]];

// 段码实际输出到数码管接口

DigitalTube_Data(Code);

// 位选实际输出到数码管接口

DigitalTube_Select(Select);

Select++; // 进入到下一位选扫描

if (Select >= DigitalTubeNumber) {

Select = 0; // 所有数码管已扫描,从第一个数码管再次开始扫描

}

}

我们在数码管模块头文件DigitalTube.h中实现模块的接口访问宏实现,使之方便移植及修改接口配置。模块头文件同时也引出模块的接口函数,void DigitalTube_Scan(void)为数码管刷新函数,需周期性调用刷新数码管显示。unsigned char *DigitalTube_GetBuffer(void)用来获得数码管显存,从而更新数码管显存数据。其内容如下:

#ifndef __DigitalTube_H__

#define __DigitalTube_H__

#ifdef __cplusplus

extern "C" {

#endif

// 数码管模块中的个数,最大为8

#define DigitalTubeNumber 4

// 输出数码管位选

#defineDigitalTube_Select(Select) {P2 = (P2&0xf8) + (Select);}

// 输出数码管段码

#define DigitalTube_Data(Dat) {P0 =(Dat);}

// 数码管刷新函数,必须保证以一定周期调用刷新

void DigitalTube_Scan(void);

// 获得数码管显存,以作显示的数据更新

unsigned char*DigitalTube_GetBuffer(void);

#ifdef __cplusplus

}

#endif

#endif /*__DigitalTube_H__*/

外部模块通过引入数码管的模块头文件DigitalTube.h来实现调用数码管驱动函数,简单测试调用(秒表数码管显示计数)实现如下:

#include"reg52.h"

#include"DigitalTube.h"

// 以定时器时间为计时标准,记录时间间隔

static volatile unsignedint SystemTick = 0;

// 定时器2ms中断处理进行数码管刷新

void T0_Interrupt()interrupt 1

{

TH0 = (65536-2000) / 256;

TL0 = (65536-2000) % 256;

SystemTick++; // 记录时间间隔

DigitalTube_Scan(); //刷新数码管

}

void T0_Init()

{

TMOD = 0x01; // 定时器0工作方式1

// 2ms计时中断(12M)

TH0 = (65536-2000) / 256;

TL0 = (65536-2000) % 256;

ET0 = 1; // 定时器T0中断允许

EA = 1; // 总中断允许

}

void main()

{

unsigned char *pBuffer;

unsigned char i;

// 定时器初始化

T0_Init();

// 获得数码管显存,以作更新数据显示

pBuffer = DigitalTube_GetBuffer();

// 数据管显存初始化显示0

for (i=0; i

pBuffer[i] = 0;

}

// 开启定时器进行计时以及数码管刷新

TR0 = 1;

while(1) {

// SystemTick读数到500时为1s间隔到

if (SystemTick > 500) {

SystemTick =0; // 重新计秒

// 更新数码管秒表计数显存

for (i=0; i

pBuffer[DigitalTubeNumber-1-i]++;

if (pBuffer[DigitalTubeNumber-1-i] <10) {

break; // 未到10,不用进位更新高位显存,退出

} else {

总结

对于74hc573锁存器来说,在实际的应用电路中,如果单片机的总线接口只作一种用途,不需要接锁存器;如果单片机的总线接口要作两种用途,就要用两个锁存器。对于74hc573的介绍就到这里了,希望此文能对你有所帮助。

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

    关注

    32

    文章

    1874

    浏览量

    90882
  • 74HC573
    +关注

    关注

    4

    文章

    58

    浏览量

    22452
收藏 人收藏

    评论

    相关推荐

    74HC573

    74L系列芯片74HC573
    发表于 08-17 17:00

    关于74hc573焊接问题

    我用74hc573做个板子,通上电之后,手指放到 上边数码管就亮,挪动就不亮,这是为什么求救
    发表于 12-03 18:11

    使用2个74hc573加2个74ls138驱动四个***数码管的问题

    使用2个74hc573加2个74ls138驱动四个***数码管的问题
    发表于 11-13 11:41

    74HC573锁存器如何控制数码管静态显示?

    74HC573锁存器如何控制数码管静态显示?
    发表于 09-29 08:30

    74HC573功能说明

    74HC573功能说明。
    发表于 03-23 17:05 0次下载

    74HC573

    74HC573
    发表于 05-10 15:12 32次下载

    74HC573驱动8位数码管连接图及程序代码分享

    74HC573包含八路3态输出的非反转透明锁存器,笔者介绍了74hc573内部结构图及其原理,主要给出了74HC573驱动8位数码管连接图和
    发表于 10-23 11:01 5.1w次阅读
    <b class='flag-5'>74HC573</b><b class='flag-5'>驱动</b>8位<b class='flag-5'>数码管</b>连接图及程序代码分享

    74hc573驱动4位数码管电路连接图及程序代码分享

    74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。用74HC573驱动4位数码管的段选,用74HC573
    发表于 11-17 09:18 4.3w次阅读
    <b class='flag-5'>74hc573</b><b class='flag-5'>驱动</b>4位<b class='flag-5'>数码管</b><b class='flag-5'>电路</b>连接图及程序代码分享

    74hc573是什么_74hc573封装

    /ALSTTL输出兼容。 74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时, 新的数据也可以置入。这种电路
    发表于 11-27 12:24 1.4w次阅读

    基于74HC573为架构的LED数码管应用

    基于74HC573为架构的LED数码管应用,本文介绍了数码管的结构及工作原理;锁存器的作用及原理;at89c52单片机驱动led
    发表于 12-08 16:42 4670次阅读

    74hc573使用方法(74hc573引脚图及功能_工作原理_封装尺寸及应用电路

    本文介绍了74hc573使用方法(74hc573引脚图及功能_工作原理_封装尺寸及应用电路),74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输
    发表于 12-08 17:10 32w次阅读
    <b class='flag-5'>74hc573</b>使用方法(<b class='flag-5'>74hc573</b>引脚图及功能_工作原理_封装尺寸及应<b class='flag-5'>用电路</b>)

    74hc573怎么使用 74hc573可以仿真吗

    本文主要探讨了关于74hc573的使用方法以及74hc573能否仿真的问题。
    的头像 发表于 07-26 15:48 1.7w次阅读
    <b class='flag-5'>74hc573</b>怎么使用 <b class='flag-5'>74hc573</b>可以仿真吗

    74hc57374hc595有什么不同?该怎样区分74hc57374hc595

    实际应用电路74hc57374hc595都可用,都可实现行扫描,看你电路怎么连接,程序如何
    的头像 发表于 07-27 14:27 2.7w次阅读
    <b class='flag-5'>74hc573</b>和<b class='flag-5'>74hc</b>595有什么不同?该怎样区分<b class='flag-5'>74hc573</b>和<b class='flag-5'>74hc</b>595

    74hc573怎么连接数码管74hc573连接数码管的应用解析

    事实上实际应用电路中,74hc573连接数码管都不是简单的直连就可以的,这个需要分具体应用场景。
    的头像 发表于 07-27 16:48 2.3w次阅读
    <b class='flag-5'>74hc573</b>怎么连接<b class='flag-5'>数码管</b>?<b class='flag-5'>74hc573</b>连接<b class='flag-5'>数码管</b>的应用<b class='flag-5'>解析</b>

    51单片机汇编学习例程(6)——74HC573数码管

    6.ASM6_Seg_57374HC573锁存器控制数码管静态显示
    发表于 11-16 20:06 20次下载
    51单片机汇编学习例程(6)——<b class='flag-5'>74HC573</b><b class='flag-5'>数码管</b>篇