天天看點

m0單片機io口_51單片機蜂鳴器

蜂鳴器實驗

* 蜂鳴器

蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、列印機、影印機、報警器、電子玩具、汽車電子裝置、電話機、定時器等電子産品中作發聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗比對器及共鳴箱、外殼等組成。多諧振蕩器由半導體或內建電路構成,當接通電源後(1.5~15V直流工作電壓) , 多諧振蕩器起振, 輸出1.5~5kHZ的音頻信号, 阻抗比對器推動壓電蜂鳴片發聲。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源後,振蕩器産生的音頻信号電流通過電磁線圈,使電磁線圈産生磁場,振動膜片在電磁線圈和磁鐵的互相作用下,周期性地振動發聲。

其實一句話就可概括它們之間的差別,想要壓電式蜂鳴器發聲,需提供一定頻率的脈沖信号;想要電磁式蜂鳴器發聲,隻需提供電源即可。

還有一點要注意有源蜂鳴器和無源蜂鳴器,有源這的是有振蕩器,不是電源的意思。

* 工作原理

1.和LED的不同

我們都知道LED燈是單片機IO口直接控制的,那麼蜂鳴器呢?

答案是否定的, 因為51單片機IO口的驅動能力較弱(即使外接上拉電阻),而蜂鳴器驅動需要約30mA,是以非常困難,即使可以驅動,那對于整個晶片的其IO剩下驅動能力就更加弱甚至無法工作。是以我們不會直接使用IO口驅動蜂鳴器,而是通過三極管把電流放大後再驅動蜂鳴器,這樣51單片機的IO口隻需要提供不到1mA的電流就可控制蜂鳴器。是以我們也經常說到51單片機晶片是用來做控制的,而不是驅動。

2.單片機通過P15引腳連接配接ULN2003D,ULN2003D連接配接蜂鳴器。ULN3D相當于當于一個內建的放大電路,起放大電流的作用。

原理圖如圖:

m0單片機io口_51單片機蜂鳴器

ULN2003D 擁有相當于三級管的功能。當J7接低電平時,三極管導通,蜂鳴器可以接收電流,當J7為高電平時,三極管截止。(有源蜂鳴器)。

而對于無源蜂鳴器,不僅要要考慮高低電平,還要産生一定頻率的脈沖,

蜂鳴器才能正常工作。

如圖:

m0單片機io口_51單片機蜂鳴器

3.ULN2003D

m0單片機io口_51單片機蜂鳴器

如圖,左圖為邏輯框圖,由7對NPN管組成。圖右反相器内部示意圖。

特點:

ULN 2003D是一個單片高電壓、高電流的達林頓半導體陣列內建

電路。它是由7對NPN達林頓管組成的, 它的高電壓輸出特性和陰極箝位二極管可以轉換感應負載。單個達林頓對的集電極電流是500mA。達林頓管并聯可以承受更大的電流。此電路主要應用于繼電器驅動器,字錘驅動器,燈驅動器,顯示驅動器(LED氣體放電),線路驅動器和邏輯緩沖器。

ULN2003D的每對達林頓管都有一個2.7kQ串聯電阻, 可以直接和TTL或5VCMOS裝置。

主要特點

500mA額定集電極電流(單個輸出)

高電壓輸出:50V

輸入和各種邏輯類型相容

繼電器驅動器

4.改變單片機引腳輸出波形的頻率就可以調整控制蜂鳴器音調,産生不同音色音調的聲音。

* 代碼實作

#include <reg52.h>
#include <intrins.h>
typedef unsigned char u8; //重定義全局字元型變量
typedef unsigned int u16; //重定義全局整型變量
sbit beep=P1^5; //通過ULN2003D連接配接引腳P15
​
/*延時函數*/
void dealy(u16 i)
{
while(i--);
}
​
void main()
{ 
 beep=~beep;
 /*~為取反,我們知道預設引腳處的電平為高電平,是以取反為低電平。
 然後再循環不斷變化就可以産生脈沖,
 無源蜂鳴器可以正常工作。*/
 dealy(1000); //可以通過調節延時,來調節周期進而引起頻率變化對蜂鳴器音色進行調節
 
}
           

繼續閱讀