[藍橋杯單片機 開發板蜂鳴器與繼電器](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); //繼電器一吸一合
}
}