原件原理
1、蜂鳴器
蜂鳴器是一個發聲裝置,一般用于提示聲。分為有源蜂鳴器和無源蜂鳴器,
有源蜂鳴器内部有一個發聲電路,也就是“源”(震蕩源,與無源蜂鳴器的差別),隻要通電就可以響;無源蜂鳴器相當于揚聲器,無源蜂鳴器直接接直流電,隻在剛接觸和離開的時候發聲(利用電磁感應現象,通電、斷電時推動振膜發聲),一般使用方波信号源驅動發聲。在這裡我們可以判斷一下我們使用的是哪種蜂鳴器?
蜂鳴器實物圖 蜂鳴器驅動電路圖
2、繼電器
繼電器是一個電子機械開關,通過開關K來控制銜鐵是與靜觸點A接觸(點亮小燈泡)還是與靜觸點B接觸(熄滅小燈泡),這就是繼電器的工作原理,如果我們用單片機來控制開關K,就可以通過程式實作控制用電器。
編輯
繼電器内部原理圖
原理圖
在寫程式之前,我們還是要先看懂原理圖。在這個原理圖裡,我們又見到了一個新的晶片ULN2003A。
ULN2003的内部是由一個反向放大電流的七路達令頓管的電路組成,作用是反向放大電流用來驅動蜂鳴器、繼電器、電機等大電流裝置。注意這裡的反向放大。
如果我們要通過單片機控制蜂鳴器、繼電器,首先要打開控制的573鎖存器(打開Y5 P2=0XA0)再打開控制繼電器的Q5和控制蜂鳴器的Q7,最終都是由P0端口控制的,P04=1打開繼電器、P06=1打開蜂鳴器,在這裡我們發現将IO口置高電平才能使用蜂鳴器繼電器,是因為ULN2003反向放大了電流,是以要置高電平使用。
代碼詳解
1、繼電器每隔一秒鐘打開
//繼電器每隔一秒鐘打開
#include <STC15F2K60S2.H>
void Delayms(unsigned int ms);
void main(void)
{
P2=0X80;P0=0XFF;P2=0XA0;P0=0X00; //初始化程式,後面會出一章專門解釋
while(1)
{
P2=0XA0; //打開控制的573鎖存器
P04=1; //打開繼電器
Delayms(500); //延時500ms
P04=0; //關閉繼電器
Delayms(500); //延時500ms
}
}
void Delayms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
2、蜂鳴器每隔一秒鐘發聲
//蜂鳴器每隔一秒鐘發聲
#include <STC15F2K60S2.H>
void Delayms(unsigned int ms);
void main(void)
{
P2=0X80;P0=0XFF;P2=0XA0;P0=0X00; //初始化程式,後面會出一章專門解釋
while(1)
{
P2=0XA0; //打開控制的573鎖存器
P06=1; //打開蜂鳴器
Delayms(500); //延時500ms
P06=0; //關閉蜂鳴器
Delayms(500); //延時500ms
}
}
void Delayms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}