51單片機(jī) 驅(qū)動(dòng)蜂鳴器、繼電器實(shí)驗(yàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
//==聲明區(qū)========================================
#include //定義8051暫存器之標(biāo)頭檔, P2-17~19
sbitbuzzer = P3^7;//聲明蜂鳴器的位置
sbitrelay = P3^6;//聲明繼電器的位置
void delay(int);//聲明延遲函數(shù)
void pulse_BZ(int,int,int);//聲明蜂鳴器發(fā)聲函數(shù)
void pulse_RL(int,int,int);//聲明繼電器控制函數(shù)
//==主程序========================================
main()//主程序開(kāi)始
{while(1)//無(wú)窮循環(huán),程序一直跑*/
{pulse_RL(10,2000,2000);
//繼電器使燈亮滅各10次,各2000 0.5m=1s
pulse_BZ(100,1,1);
//蜂鳴器第1聲嗶,約100*(0.5m+0.5m)=0.1s
delay(200);//延遲200 0.5ms=0.1s
pulse_BZ(100,1,1);
//蜂鳴器第2聲嗶,約100*(0.5m+0.5m)=0.1s
delay(200);//延遲200 0.5ms=0.1s
}//while循環(huán)結(jié)束
}//主程序結(jié)束
//==副程序=========================================
//延遲函數(shù)開(kāi)始,延遲約x*0.5ms/
void delay(int x)//延遲函數(shù)開(kāi)始
{int i,j;//聲明整數(shù)變量i,j
for (i=0;i計(jì)數(shù)x次,延遲約x 0.5ms
for (j=0;j<60;j++); //計(jì)數(shù)60次,延遲約0.5ms
}//延遲函數(shù)結(jié)束
void pulse_BZ(int count,int TH,int TL)//蜂鳴器發(fā)聲函數(shù)開(kāi)始
{int i;//聲明整數(shù)變量i/
for(i=0;i計(jì)數(shù)count次
{buzzer=1;//輸出高態(tài)
delay(TH);//延遲TH 0.5ms
buzzer=0;//輸出低態(tài)
delay(TL);//延遲TL 0.5ms
}//for循環(huán)結(jié)束
}//蜂鳴器發(fā)聲函數(shù)結(jié)束
void pulse_RL(int count,int TH,int TL) //繼電器控制函數(shù)開(kāi)始
{int i;//聲明整數(shù)變量i
for(i=0;i計(jì)數(shù)count次
{relay=1;//輸出高態(tài),繼電器激磁(燈亮)
delay(TH);//延遲TH 0.5ms
relay=0;//輸出低態(tài),繼電器消磁(燈滅)
delay(TL);//延遲TL 0.5ms
}//for循環(huán)結(jié)束
}//繼電器控制函數(shù)結(jié)束思考``````