51单片机——74HC573锁存器

锁存器作用:可以把数据输入端与输出端进行隔离或连接。
74HC573锁存器原理图见文末。
图中:
锁存器2-9脚为数据输入端,连接单片机数据输出引脚;12-19脚为数据输出端。
GND接地,Vcc接正极。
OE脚为高阻引脚,其为高电平时,输出端不会输出高低电压,一般接GND。
LE脚为“隔断按钮”。

输入端八位引脚的数据由单片机或其他数据输入口的数据实时变化
当LE脚为高时,输出端八位引脚的数据会随着输入端的变化而变化;
当LE脚为低时,输出端引脚与输入端引脚为间隔状态,输出端数据不会受输入端数据影响。

74HC573锁存器

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是基于51单片机74hc573+74hc138实现8位数码管动态显示的代码: ```c #include <reg51.h> #define uchar unsigned char #define uint unsigned int // 数码管位选控制 sbit LSA = P2^2; sbit LSB = P2^3; sbit LSC = P2^4; // 数码管段选控制 sbit A = P1^0; sbit B = P1^1; sbit C = P1^2; sbit D = P1^3; sbit E = P1^4; sbit F = P1^5; sbit G = P1^6; sbit DP = P1^7; // 数据锁存控制 sbit HC573_OE = P3^4; sbit HC573_LE = P3^5; sbit HC573_CLK = P3^6; sbit HC573_DAT = P3^7; uchar code table[] = { // 数码管显示字符对应的编码表 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; void delay(uint t) { while(t--); } void HC573_Write(uchar dat) { uchar i; HC573_OE = 1; for(i = 0; i < 8; i++) { HC573_DAT = (dat >> i) & 0x01; HC573_CLK = 0; delay(1); HC573_CLK = 1; } HC573_LE = 0; delay(1); HC573_LE = 1; HC573_OE = 0; } void Display_Digit(uchar digit, uchar num) { uchar i; for(i = 0; i < 8; i++) { if(i == digit) HC573_Write(table[num]); else HC573_Write(0xff); delay(100); } } void main() { uchar i, j; while(1) { for(i = 0; i < 8; i++) { LSA = i & 0x01; LSB = (i >> 1) & 0x01; LSC = (i >> 2) & 0x01; for(j = 0; j < 10; j++) { Display_Digit(i, j); } } } } ``` 该代码实现了一个简单的数码管动态显示效果,使用了74hc573作为数据锁存器,74hc138作为位选控制芯片。其中,函数`HC573_Write`用于将数据写入74hc573,函数`Display_Digit`用于在指定位置显示指定数字。在`main`函数中,不断循环,依次控制位选,然后在每个位置上循环显示数字0~9。需要注意的是,数码管的位选控制和段选控制引脚需要根据具体的硬件连进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值