![](https://img-blog.csdnimg.cn/img_convert/2d3ae7330574356aa6f33e6056ee779b.png)
LED灯珠受74HC573锁存器控制
74HC573的八个锁存器都是透明的D型锁存器,当使能(LE)为高时,Q输出将随数据(D)输入而变。当使能(LE)为低时,输出将锁存在已建立的数据电平上。即当LE为低时,输出保持原来状态。
74hc573的0E引脚在使用时通常与GND连接在一起,通过LE来选择锁存器的锁存与使用状态
因此,P0口要能控制LED灯珠的话,Y4C应该输出高电平。
![](https://img-blog.csdnimg.cn/img_convert/6529b63314a8811d0ca8edfd067c1d0b.png)
![](https://img-blog.csdnimg.cn/img_convert/4fdbb418bb5d38ff1017b948b6a145c6.png)
Y4C受一个或非门控制,WR输出为0,要让Y4C输出高电平,Y4需要输出0。
![](https://img-blog.csdnimg.cn/img_convert/d13f578b3ec80105deabc785d3480bdc.png)
Y4信号受138译码器控制,当138译码器的C、B、A口分别为1、0、0时Y4输出为0。所以P25为0,P26为0,P27为1。然后才能控制LED灯珠。
完整代码:
#include "reg52.h"
sbitHC138_A=P2^5;
sbitHC138_B=P2^6;
sbitHC138_C=P2^7;
voidDelay(unsignedintt)
{
while(t--);
while(t--);
}
voidLEDRunning()
{
unsignedchari;
HC138_C=1;
HC138_B=0;
HC138_A=0;
for(i=0; i<3; i++)
{
P0=0x00;
Delay(60000);
Delay(60000);
P0=0xff;
Delay(60000);
Delay(60000);
}
for(i=1; i<=8; i++)
{
P0=0xff<<i;
Delay(60000);
Delay(60000);
}
for(i=1; i<=8; i++)
{
P0=~(0xff<<i);
Delay(60000);
Delay(60000);
}
}
voidmain()
{
while(1)
{
LEDRunning();
}
}