74HC573锁存器

在这里插入图片描述

74HC573工作原理

74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,

新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。

引脚

在这里插入图片描述

数据锁存

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

74HC573引脚功能

1是低电压激活芯片  
2~9脚是数据的输入脚从D0到D7  
10脚是接地  
11脚是高电压激活芯片  
12~19脚是数据的输出脚  
20是电源 
在这里插入图片描述

真值表

在这里插入图片描述

实例

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计思路: 1.将矩阵键盘的4行4列分别连接到单片机的P1口上,通过轮询的方式扫描按键状态。 2.将数码管的段码线和位选线分别连接到两个74HC573的输出端,通过控制与否来控制数码管的显示。 3.通过P2.6和P2.7控制74HC573与否,实现数据的输入和输出。 4.根据按键状态和功能键状态,进行加减乘除运算,并将结果显示在数码管上。 5.增加按键音提示功能,通过蜂鸣控制发出提示音。 C语言代码: ``` #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; uchar keyscan() { uchar flag = 0; uchar temp = 0; P1 = 0x0F; if(P1 != 0x0F) { delay(1000); if(P1 != 0x0F) { temp = P1; P1 = 0xF0; temp |= P1; flag = 1; } } return flag ? temp : 0; } void delay(uint i) { while(i--); } void display(uchar num, uchar pos) { P2 &= 0x3F; P0 = table[num]; P2 |= (pos << 6); } void main() { uchar keyvalue = 0; uchar keyflag = 0; uchar num1 = 0; uchar num2 = 0; uchar oper = 0; bit soundflag = 0; while(1) { keyvalue = keyscan(); if(keyvalue) { keyflag = 1; delay(1000); if(keyvalue == 0x0E) { oper = '+'; } else if(keyvalue == 0x0D) { oper = '-'; } else if(keyvalue == 0x0B) { oper = '*'; } else if(keyvalue == 0x07) { oper = '/'; } else if(keyvalue == 0x0F) { num1 = 0; num2 = 0; oper = 0; soundflag = 0; } else if(keyvalue == 0x0A) { soundflag = ~soundflag; } else { if(oper == 0) { num1 = keyvalue; } else { num2 = keyvalue; } } } if(!keyvalue && keyflag) { keyflag = 0; switch(oper) { case '+': display(num1 + num2, 0); break; case '-': display(num1 - num2, 0); break; case '*': display(num1 * num2, 0); break; case '/': display(num1 / num2, 0); break; default: display(num1, 0); break; } if(soundflag) { P3 = 0x01; delay(500); P3 = 0x00; } } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值