[蓝桥杯单片机 开发板蜂鸣器与继电器](3)

[蓝桥杯单片机 开发板蜂鸣器与继电器](3)

一、蜂鸣器电路

在这里插入图片描述
蜂鸣器的正极接VCC 5V,负极接在达林顿管的N_BUZZ上,达林顿管是一个非门电路:若IN输入1,则OUT输出0;若IN输入0,则OUT输出1;要使蜂鸣器响,则OUT7为低电平0。
在这里插入图片描述
再来看译码器,想要打通这个译码器那么Y5C必须为高电平,Y5C由38译码器控制,当P27=1, P26=0, P25=1时Y5输出低电平,Y5C输出高电平,锁存器打通。
真值表

打通译码器后,对P0口赋值,让OUT7为低电平0,也即让P06 = 1,这样蜂鸣器就响了。代码如下:

#include"reg52.h"  //包含头文件

sbit Buzz = P0^6;      //定义蜂鸣器
sbit HC138_A = P2^5;  //定义译码器中ABC所在引脚
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;

void Delay(unsigned int t)  //延时函数
{
	while(t--);
}

void Buzz(unsigned char State)
{
	HC138_C = 1;  //给CBA赋值
	HC138_B = 0;
	HC138_A = 1;
	
	if(State == 1)  //蜂鸣器响
	  Buzz = 1;
	if(State == 0)  //蜂鸣器不响
	  Buzz = 0;
}


void main()  //主函数
{
	while(1)  //死循环
	{
	Buzz(1);
	Delay(50000);
	Buzz(0);
	Delay(50000);  //让它响一会儿后不响
	}
}

二、继电器电路


继电器的负极N_RELAY同样接在了第一张图的达林顿管上,由锁存器的P04控制。要使继电器吸合,那么P04 = 1。代码如下:

#include"reg52.h"

sbit Relay = P0^4;    //定义继电器
sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;

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

void RELAY(unsigned char State)
{
	HC138_C = 1;
	HC138_B = 0;
	HC138_A = 1;

	if(State == 1)  //继电器吸合
	  Relay = 1;
	if(State == 0)  //继电器不吸合
	  Relay = 0;
}

void main()
{
	while(1)
	{
		RELAY(1);
		Delay(50000);
		RELAY(0);
		Delay(50000);  //继电器一吸一合
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章