51单片机学习笔记4 -- 蜂鸣器控制
蜂鳴器控制
- 1.蜂鳴器簡介
- 1.分類
- 2.有源蜂鳴器和無源蜂鳴器
- 3.區分有源蜂鳴器和無源蜂鳴器
- 4.蜂鳴器驅動電路
- 2.電路圖繪制
- 3.蜂鳴器控制
- 4.程序補充
1.蜂鳴器簡介
蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器在電路中用字母“H”或“HA”(舊標準用“FM”、“LB”、“JD”等)表示
1.分類
- 按其驅動方式的原理分,可分為:有源蜂鳴器(內含驅動線路,也叫自激式蜂鳴器)和無源蜂鳴器(外部驅動,也叫他激式蜂鳴器);
- 按構造方式的不同,可分為:電磁式蜂鳴器和壓電式蜂鳴器;
- 按封裝的不同,可分為:DIP BUZZER(插針蜂鳴器)和SMD BUZZER(貼片式蜂鳴器);
- 按電流的不同,可分為:直流蜂鳴器和交流蜂鳴器,其中,以直流最為常見壓電式蜂鳴器,用的是壓電材料,即當受到外力導致壓電材料發生形變時壓電材料會產生電荷。同樣,當通電時壓電材料會發生形變。
2.有源蜂鳴器和無源蜂鳴器
下面有綠色電路板的一種是無源蜂鳴器,沒有電路板而用黑膠封閉的一種是有源蜂鳴器
這里的“源”不是指電源。而是指震蕩源。
也就是說有源蜂鳴器內部帶震蕩源,所以只要一通電就會叫;而無源內部不帶震蕩源,所以如果用直流信號無法令其鳴叫,必須用2K~5K的方波去驅動它
有源蜂鳴器往往比無源的貴,就是因為里面多個震蕩電路。無源蜂鳴器的優點是:1。便宜,2。聲音頻率可控,可以做出“多來米發索拉西”的效果。3。在一些特例中,可以和LED復用一個控制口;有源蜂鳴器的優點是:程序控制方便 。
3.區分有源蜂鳴器和無源蜂鳴器
判斷有源蜂鳴器和無源蜂鳴器,可以用萬用表電阻檔Rxl檔測試:用黑表筆接蜂鳴器"+"引腳,紅表筆在另一引腳上來回碰觸,如果觸發出咔、咔聲的且電阻只有8Ω(或16Ω)的是無源蜂鳴器,如果能發出持續聲音的,且電阻在幾百歐以上的,是有源蜂鳴器
4.蜂鳴器驅動電路
由于蜂鳴器的工作電流比較大,以單片機的I/O 口是無法直接驅動的,所以要利用放大電路來驅動,一般使用三極管來放大電流
2.電路圖繪制
先看看蜂鳴器的原理圖,單片機的蜂鳴器控制引腳串聯1k電阻經三極管連接到蜂鳴器
在Protues中找出來三極管和蜂鳴器,三極管直接搜PNP即可,不用找詳細型號,需要做水平鏡像翻轉,接地與按鍵并到一起,其他的參照原理圖接
3.蜂鳴器控制
51開發板上搭載的蜂鳴器是有源蜂鳴器,只需要高低電平來控制即可,也就是和LED的控制方式一樣,參考程序如下
#include <reg52.h>#define ON 0 #define OFF 1sbit BUZZER = P0^7;void delay_ms(unsigned int nms) {unsigned int i,j;for(i=nms;i>0;i--)for(j=113;j>0;j--); }void main() { BUZZER = ON;delay_ms(200);BUZZER = OFF;delay_ms(200);while(1); }蜂鳴器在protues上不能做仿真,也就是不能看到蜂鳴器是否有響應控制,只能找開發板進行蜂鳴器測試
4.程序補充
學習了蜂鳴器控制后,可以結合前面的LED和按鍵,如下面代碼可做參考
#include <reg52.h> #include <intrins.h>#define ON 0 #define OFF 1sbit KEY1 = P3^3; sbit KEY2 = P3^4; sbit KEY3 = P3^6; sbit KEY4 = P3^7;sbit BUZZER = P0^7;void delay_ms(unsigned int nms) {unsigned int i,j;for(i=nms;i>0;i--)for(j=113;j>0;j--); }void main() { unsigned int i;P1 = 0xff;while(1){if(KEY1 == ON){delay_ms(10);if(KEY1 == ON){BUZZER = ON;}while(KEY1 == ON);}if(KEY2 == ON){delay_ms(10);if(KEY2 == ON){BUZZER = OFF;}while(KEY2 == ON);}if(KEY3 == ON){delay_ms(10);if(KEY3 == ON){P1 = 0xfe;for(i=8;i>0;i--){delay_ms(150);P1 = _crol_(P1,1);}}while(KEY3 == ON);}if(KEY4 == ON){delay_ms(10);if(KEY4 == ON){P1 = 0x7f;for(i=8;i>0;i--){delay_ms(150);P1 = _crol_(P1,-1);}}while(KEY4 == ON);}} }總結
以上是生活随笔為你收集整理的51单片机学习笔记4 -- 蜂鸣器控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 给element的select添加复选框
- 下一篇: modelsim与quartus仿真的区