单片机蓝桥杯之LED点亮(国信CT107D开发板)

1 篇文章 0 订阅
1 篇文章 0 订阅

本篇文章主要讲解LED点亮及74HC138译码器,74HC573锁存器,74HC02或非门的使用。

注意:使用的是 国信长天CT107D开发板 即 蓝桥杯竞赛专用的开发板。

要在此开发板点亮LED灯需掌握74HC138译码器74HC573锁存器还有74HC02的使用。

74HC138译码器
    该芯片可用3个输入引脚,实现8个输出引脚,而且八个输出引脚中只有一个低电平

     该处主要讲如何输出 Y4

可以看到它们分别对应 :  

                                        P2^7 -> C 

                                        P2^6 -> B

                                        P2^5 -> A

当A、B、C都为低电平时,Y0是输出低电平的。

那么当 C->高电平

            B ->低电平

            A->低电平           即:                        Y4输出低电平

                                        P2^7=1;  C

                                        P2^6=0;  B

                                        P2^5=0;  A

 

74HC573锁存器:(这里用来控制LED

需要让Y4C=1高电平

OE-

LE

D 数据输入端

Q 数据输出端

L

H

H

H

L

H

L

L

L

L

X

不变

H

X

X

高阻

1D~8D为数据输入端

1Q~8Q为数据输出端

        锁存器能把输出的数据保存住,不会受到输入变化的影响。
        573锁存器有20个引脚,D1~D8是数据输入端,Q1~Q8是数据输出端,LE为锁存控制端。

当LE为高电平时,Q1~Q8输出和D1~D8输入是一样的;LE为低电平时,Q1~Q8输出不受D1~D8输入的变化影响。

74HC02或非门

芯片原理图:

内部逻辑图:这里主要看 Y4 

内部图片:

标准的逻辑门

WR引脚和译码器的Y4引脚作为74HC02的输入

如果译码器的Y4输出电平,经过74HC02或非门,那么74HC02的输出Y4C将为电平,而该引脚接到74HC573锁存器的LE引脚,这时候锁存器打开,即单片机可以控制LED灯。若译码器的Y4为高电平的,则74HC573处于锁存状态,单片机就不能控制LED灯。

下面来看怎么控制LED灯:

 

这里画了一个草图:

1. 因为573锁存器直接控制LED(共阳),点亮需要让P0口输出低电平,P0=0x00。

2. 需要让573锁存器的LE为高电平,即Y4C为高电平。

3. 若要使Y4C为高电平,因为Y4C由Y4和WR控制,WR为低电平,但是74HC02是或非门,把0变为1,则需要让Y4为低电平。

4. 若要使Y4为低电平,Y4由74HC138控制。即让

                                        P2^7=1;  P2^6=0;  P2^5=0;   

                                ​​​​​​​        ​​​​​​​     ​​​​​C            B             A

接下来写代码吧。

注意:蜂鸣器初始化为了上电不乱叫。蜂鸣器和继电器不必先理

#include "reg52.h"

sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;

sbit BEEP = P0^6;    //蜂鸣器,可不理
sbit RELAY = P0^4;   //继电器,可不理

void Delay(unsigned int t)
{
    
	while(t--);
	while(t--);
}

void LEDRunning()
{
	HC138_C = 1;
	HC138_B = 0;
	HC138_A = 0;   //Y4输出低电平,Y4C高电平->5473的LE

	P0 = 0x00;	   //573锁存器直接LED灯,P0口低电平亮
	Delay(60000);
	Delay(60000);
	P0 = 0xff;	   //LED灭
	Delay(60000);
	Delay(60000);

}

//初始化蜂鸣器,防止上电叫
void InitBepp()
{
	HC138_C = 1;
	HC138_B = 0;
	HC138_A = 1;   //Y5输出低电平,Y5C高电平->573LE
	BEEP = 0;	   //P0^6=0,经ULN2003非门,OUT6=1
}

//初始化继电器
void InitRelay()
{
	HC138_C = 1;
	HC138_B = 0;
	HC138_A = 1;   //Y5输出低电平,Y5C高电平->573LE
	RELAY = 0;	  //P0^4=0,经ULN2003非门,OUT4=1
	
}

void main()
{	
	InitBepp();	    //蜂鸣器初始化
	InitRelay();    //继电器初始化
	while(1)
	{
	 	LEDRunning();	
	}
}

 有问题可以评论区一起探讨。喜欢可以点赞收藏哦。

  • 10
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星汇电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值