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

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引脚分布图

数据锁存

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

由上边这个真值表可以看出: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在电路中的实际应用

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


数码管由于发光亮度强,指示效果好,非常适合于电梯楼层等数值显示应用中。对于一位数码管,可以采用静态显示,但实际应用中都是需要显示多位数值,数码管模块也只能动态显示。在实际应用电路中,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驱动实现 数码管段码接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] 对于74hc573锁存器来说,在实际的应用电路中,如果单片机的总线接口只作一种用途,不需要接锁存器;如果单片机的总线接口要作两种用途,就要用两个锁存器。对于74hc573的介绍就到这里了,希望此文能对你有所帮助。


数码管不变化,小灯一直在闪是什么原因 数码管一直不变化,仿真没有问题,但是我在74ls160的clk端接了非门,不懂是不是这个原因... 发表于 06-23 19:44 • 1144次
8位数码管显示-verilog-xlinx ARTIX7-xlinx 版本FPGA开发,8位数码管模块 发表于 06-20 11:06 •
两位数码管显示00-59 为什么我上面那个数码管不亮呢,代码如下Second EQU 30HORG 0START:MOV Second,#00HNEXT:M... 发表于 06-17 10:28 • 4107次
基于WT588F02KD-24SS语音芯片的多功能烧水壶设计 现代人除了写字楼及个别家庭在使用饮水机消费纯净水或蒸馏水外,大多数的家庭仍然是饮用烧开的自来水。而早.... 发表于 06-15 10:49 •
关于WT588E02B语音芯片的基本信息 WT588E02B语音芯片是一款SPI通讯方式的语音芯片、最大的特点便是客户可以自行通过SPI协议,.... 发表于 06-09 11:04 • 314次
如何用ARM代码操控数码管的显示并用数码显示出hello字样 实验目的:1掌握JXARM9-244(1)0教学实验平台系统使用。2. 熟悉ADT IDE ARM开发环境。实验内容(含步骤):... 发表于 05-19 15:22 • 5127次
微控制器在功放数码管显示屏的应用 该产品为音箱扩音设备显示装置集成电路,核心使用自研微控制器(MCU-SOP-14),采用多段交互扫描.... 发表于 05-10 14:13 •
儿童摸高器,是一款可以充分锻炼儿童大腿肌肉,增强儿童一定的协调性,对孩子的身高增长有促进作用,为此许.... 唯创知音电子 发表于 05-07 12:00 • 348次
基于单片机的共阴极数码管驱动方案 刚开始的时候选择这块板子,让全部用插件,因为在是大二的时候就要接触单片机,所以很多东西,都还没有讲到.... 发表于 04-29 10:13 • 448次
基于单片机的16位智能抢答器设计 ​最近抽空做了一个抢答器设计,感兴趣的可以看看,它的功能有:基于单片机16位智能抢答器设计(裁判功能.... 发表于 04-29 09:13 • 621次
WT0031数码管显示驱动芯片概述及特点 led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器.... 发表于 04-28 10:41 • 162次
LED数码管显示驱动芯片在智能闹钟的应用 现在我们一些人早上叫醒我们的不是自己的妈妈就是闹钟,传统的闹钟方案,需要通过MCU+充电芯片+触摸芯.... 发表于 04-26 10:40 • 347次
WT2003H数码管驱动语音芯片的功能特点 一氧化碳检测仪可用于检测工况环境下一氧化碳的浓度,并在浓度超出设定值时发出声光保证的仪器设备,一氧化.... 发表于 04-20 15:48 •
基于单片机的光照度(光敏电阻)测量系统设计 基于单片机的光照度(光敏电阻)测量系统设计——数码管显示资料分享。 发表于 04-19 17:37 • 290次
4位LED数码管驱动芯片WT588F02KD-24SS介绍 WT588F02KD-24SS(SSOP24 封装)是一种带键盘扫描接口 LED(4 位 LED 数.... 唯创知音电子 发表于 04-18 09:29 • 1152次
WT2003H4语音芯片概述及功能特点 LED驱动芯片,大多数用于智能闹钟、智能锁、音响等,深圳唯创知音电子有限公司推出一款:可驱动4位数码.... 发表于 03-24 09:48 • 286次
基于WT588F02KD芯片的语音播报系统设计 数码管显示驱动,多数用于:智能闹钟、智能水杯、雾化器等需要显示驱动的产品,小编为大家介绍一款由深圳唯.... 发表于 03-18 13:48 • 305次
如何实现多个数码管同时显示呢 文章目录前言一、基础二、代码部分1.数码管数字显示部分2.译码器的选择部分3.数码管的显示前言用一个小题目来演示数码管的显示:... 发表于 03-02 07:30 • 3161次
基于数码管的手持电风扇基本功能描述 一、基本功能功能描述优势风扇模式(按键单击切换)低-中-高-自然风-阵风自然风和阵风效果比市面上的假风真实手电筒(按键双击切... 发表于 03-02 07:29 • 1629次
如何去实现一种基于数码管的红外入户人数记录仪设计 /*实现功能:入户人数记录,并用两位数码管显示当前人数,计数到99人报警,数码管恢复初值00。采用T0计数,假设在P3.4接入红外... 发表于 03-02 07:08 • 822次
采用IIC接口程序实时读取温度值并通过四位数码管实时显示 程序开发环境为IAR FOR STM8 1.40主控MCU为STM8S103F3P6温度采集芯片位TMP275,采用IIC接口显示采用四位... 发表于 03-02 07:07 • 1427次
简单地分析一下数码管和蜂鸣器 随着时间渐渐地深入,我们会接触到板子上更多的元件和芯片。本次就来简单地分析一下数码管和蜂鸣器。数码管其实也就是由很多灯管... 发表于 03-02 06:55 • 688次
如何去实现基于单片机CT107D的数码管显示呢 蓝桥杯单片机CTD107 数码管显示定义display.h#ifndef_display_h#define _display_h#include "common.h"&nb... 发表于 03-02 06:51 • 418次
或许手中没有元件,阻挡了你的创作,使用linkboy就好了!linkboy不仅可以编程,自带的仿真功.... linkboy知多少 发表于 02-21 08:53 • 2865次
常用数码管,你了解多少? 数码管是嵌入式开发中比较常用的一个模块,本篇文章根据查阅的资料以及学习笔记整理成文,尽可能详尽的讲解.... 发表于 02-09 09:55 • 227次
micropython四位数码管程序代码(YX55759-+4位数码管模块) micropython 4位数码管程序代码(YX55759-+4位数码管模块)成品代码实验器材&接线.... 发表于 01-18 11:30 • 166次
单片机实验三:外部中断控制数码管循环显示0~9 设计单片机的Proteus仿真电路,实现如下功能:控制P0口数码管循环显示0-9; 按下上面开关,控.... 发表于 01-18 10:17 • 545次
单片机---数码管和独立按键基础知识 单片机—数码管和独立按键的基础知识1.8段数码管中有8个LED灯,想要显示特定的数字只需要让对应的灯.... 发表于 12-31 19:33 • 226次
蓝桥杯单片机记录_第三篇_数码管 数码管1.先要选择Y6C,进行位选选择Y7C,进行端选段选的原理:P00~P07分别控制a,b,c,.... 发表于 12-29 19:15 • 100次
STM32单片机(四).LED、蜂鸣器和数码管的操作 在进行一款单片机学习时,最基本也是最简单的外设就是控制I/O口的高低电平。LED、蜂鸣器以及数码管这.... 发表于 12-24 19:26 • 174次
STC8系列学习笔记(一) 数码管的驱动设计 STC8系列学习笔记(一) 数码管的驱动设计暑假从实验室借了一块stc8的开发板,简单的记录下自己.... 发表于 12-22 18:48 • 225次
带小数点数码管的显示 带小数点数码管的显示数码管的示意图如上,通过点亮a-g七个led来拼成对应的数字或字符,数码管有共阳.... 发表于 12-16 16:59 • 279次
动态数码管显示(proteus仿真图和程序) 一、基础理解本博客基于STC89C52RC单片机进行编程。采用四位一体动态数码管显示。二、共阳极数码.... 发表于 12-16 16:59 • 415次
显示面板硬件案例分析(基于TM1650) 随着家电行业的发展,家电产品功能越来越丰富,有很多飞外网电需要显示一些功能参数,例如:温湿度、PM2.... 发表于 12-08 19:21 • 242次
51 单片机 pcf8591 四路ADC 读取 数码管显示 LCD1602显示 程序 步骤1 写入0x90,然后写入控制字0x44。控制字0x04表示开启自动增。控制字0x40表示使能D.... 发表于 12-04 09:36 • 200次
数码管动态显示 #include "reg52.h"#define led P0int code light[]={.... 发表于 12-01 10:06 •
PMMA光扩散粉颗粒形貌观察和直径测量分析 光扩散粉是将其添加到高透明塑料后, 经挤出或射出注塑,强光源的扩散性和漫射性,遮住点光源变成面光源,.... 发表于 11-26 16:24 • 293次
Stm32 四位数码管 - 数码管原理- 四位数码管- 驱动程序- 测试程序 发表于 11-26 15:36 • 574次
LED数码管结构与工作原理 一.什么是数码管LED数码管(LED Segment Displays)是由8个发光二极管构成,并按.... 发表于 11-25 18:36 • 425次
STM32F103单片机驱动TM1637数码管显示模块 最近项目中需要用到数码管显示,于是买了一个TM1637芯片驱动的四位数码显示模块,现将调试过程记录一.... 发表于 11-25 10:51 • 473次
蓝桥杯单片机 赛后资料整理(一)——573锁存器 蓝桥杯单片机 赛后资料整理(一)——573锁存器控制控制原理138编码器及02与非门控制LED灯控制.... 发表于 11-24 11:21 • 169次
STM32F103核心板//双数码管//74HC595//串行输入,并行输出//程序//开发过程 本次要说明的程序本程序是在cubemx初始化stm32f103c8后直接生成的初始程序上继续编程。#.... 发表于 11-24 11:06 • 172次
硬件探索——STM32F4控制74HC595数码管 使用STM32F407VET6,通过串行方式驱动74HC595控制的4位数码管使用了PD0(DIO).... 发表于 11-24 10:06 • 265次
单片机综合实验 - 04 | 键盘、数码管与点阵管实验 一、实验目的和任务1、掌握80C51单片机矩阵键盘的构成原理和软件编程。2、掌握80C51单片机数码.... 发表于 11-23 18:21 • 202次
【STM32学习】(14)两个74HC595控制四个数码管显示 74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管.... 发表于 11-23 18:06 • 313次
蓝桥杯基础教程之数码管操作(上)学习蓝桥杯必看基础! 前言在学习了基本锁存器原理后,剩下就是对各个外设以及对单片机寄存器的相关学习,如果没有看过之前对锁存.... 发表于 11-23 17:51 • 242次
静态数码管显示实验 本实验采用了普中科技的51单片机开发板通过对单片机的编程控制LED数码管的静态显示 发表于 11-23 17:51 • 193次
单片机接地问题以及矩阵键盘点亮数码管问题 单片机开发板如何实现接地?电源的负极和单片机GND引脚连接,就是接地了,电源可以是电池,或者市电经过.... 发表于 11-23 17:36 • 171次
蓝桥杯CT107D单片机数码管静态显示 数码管基础知识CT107D单片机综合实训平台上使用的数码管是F3461BH,告诉我们数码管的类型。倒.... 发表于 11-23 17:21 • 137次
51单片机控制静态数码管的显示 51单片机控制静态数码管的显示#include reg52.h #文件中定义了一些特殊功.... 发表于 11-23 17:21 •
8051单片机(STC89C52)八段数码管静态点亮 在STC89C52的左上角, 有八个八段数码管. 在控制数码管点亮的过程中, 某一时刻只能根据P24.... 发表于 11-23 17:21 • 200次
8051单片机驱动TM1620任意字符循环显示程序(详细注释版) 8051单片机驱动TM1620任意字符循环显示程序本人亲写,亲测可用/***************.... 发表于 11-23 17:06 • 279次