[藍橋杯單片機 開發板蜂鳴器與繼電器](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);  //繼電器一吸一合
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章