蜂鸣器和继电器的基本控制

        蜂鸣器与继电器在单片机的应用中非常普遍,在我们参加单片机蓝桥杯比赛时也是非常重要的两部分,那么接下来我们将结合题目来介绍蜂鸣器和继电器在应用中的基本控制。
         基于蓝桥杯竞赛开发板,题目有:

        首先让8路LED指示灯闪烁3遍后熄灭,接着依次点亮LED灯,继电器吸合一段时间后断开,然后依次熄灭LED灯,蜂鸣器叫一段时间后关闭,程序循环实现以上功能。
        开发板图片如下:

在做以上题目之前,我们需要根据开发板的电路图进行分析,进而写出我们所需要的代码实现题目要求。

         电路图如下:

         经过上图分析,我们需要通过三八译码器Y5引脚输出低电平,进而通过或非门输出高电平,也就是使Y5C引脚输出高电平。OE非为片选引脚,为高电平,因此74HC573是开启的,LE为选择引脚,得到刚得到的Y5C的高电平,寄存器开始工作,进行数据传输,通过P0口控制各引脚的高低电平,而UNL2003是一个取反的作用,每一个引脚输出的电平,在输出时会得与输入相反的的电平。

        三八译码器的真值表如下:

CBA输出低电平的输出端
000Y0
001Y1
010Y2
011Y3
100Y4
101Y5
110Y6
111Y7

实现题目代码如下:

#include <REG52.H>
sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;
unsigned char i;
void delay(unsigned int t)
{
	while(t--);
	while(t--);
}
void LEDrunning()
{
	HC138_C = 1;
	HC138_B = 0;
	HC138_A = 0;
	for( i = 0; i < 3; i++)	   //八个LED灯闪烁三下
	{
		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);
	}


		HC138_C = 1;		  //让Y5为高电平,让继电器吸合
		HC138_B = 0;
		HC138_A = 1;
		P0 = 0x10;
		delay(60000);
		delay(60000);
		P0 = 0x00;


		HC138_C = 1;		 //三八译码器再次让Y4为高电平
		HC138_B = 0;
		HC138_A = 0;
		for( i =1; i<=8; i++)	//LED依次熄灭
	{
		P0 = ~(0xff << i);
		delay(60000);
		delay(60000);
	}
		HC138_C = 1;		  //让Y5为高电平,让蜂鸣器发声
		HC138_B = 0;
		HC138_A = 1;
		P0 = 0x40;
		delay(60000);
		delay(60000);
		P0 = 0x00;
}
void InitSystem()	 //初始化函数
{
	HC138_C = 1;
	HC138_B = 0;
	HC138_A = 1;   //Y5为高电平
	P0 = 0x00;	   
}
void main()
{
	InitSystem();
	while(1)
	{
		LEDrunning();
	}
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值