1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      單片機驅動蜂鳴器原理與設計

      更新時間: 2008-08-04 10:00:22來源: 粵嵌教育瀏覽量:1944

        蜂鳴器是一種一體化結構的電子訊響器,本文介紹如何用單片機驅動蜂鳴器,他廣泛應用于計算機、打印機、復印機、報警器、電話機等電子產品中作發聲器件。

        蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。


        電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發聲。

        壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構成,當接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發聲。


      下面是電磁式蜂鳴器的外形圖片及結構圖。。。

      電磁式蜂鳴器實物圖: 電磁式蜂鳴器結構示意圖:


      圖 1 圖 2
      電磁式蜂鳴器內部構成:
      1. 防水貼紙
      2. 線軸
      3. 線圈
      4. 磁鐵 5. 底座
      6. 引腳
      7. 外殼
      8. 鐵芯 9. 封膠
      10. 小鐵片
      11. 振動膜
      12. 電路板




      一、電磁式蜂鳴器驅動原理

        蜂鳴器發聲原理是電流通過電磁線圈,使電磁線圈產生磁場來驅動振動膜發聲的,因此需要一定的電流才能驅動它,單片機IO引腳輸出的電流較小,單片機輸出的TTL電平基本上驅動不了蜂鳴器,因此需要增加一個電流放大的電路。S51增強型單片機實驗板通過一個三極管C8550來放大驅動蜂鳴器,原理圖見下面圖3:


      S51增強型單片機實驗板蜂鳴器驅動原理圖:


      圖 3


        如圖所示,蜂鳴器的正極接到VCC(+5V)電源上面,蜂鳴器的負極接到三極管的發射極E,三極管的基級B經過限流電阻R1后由單片機的P3.7引腳控制,當P3.7輸出高電平時,三極管T1截止,沒有電流流過線圈,蜂鳴器不發聲;當P3.7輸出低電平時,三極管導通,這樣蜂鳴器的電流形成回路,發出聲音。因此,我們可以通過程序控制P3.7腳的電平來使蜂鳴器發出聲音和關閉。

        程序中改變單片機P3.7引腳輸出波形的頻率,就可以調整控制蜂鳴器音調,產生各種不同音色、音調的聲音。另外,改變P3.7輸出電平的高低電平占空比,則可以控制蜂鳴器的聲音大小,這些我們都可以通過編程實驗來驗證。


      二、蜂鳴器列子
      下面我們舉幾個簡單的單片機驅動蜂鳴器的編程和電路設計的列子。

        1、簡單的蜂鳴器實驗程序:本程序通過在P3.7輸出一個音頻范圍的方波,驅動實驗板上的蜂鳴器發出蜂鳴聲,其中DELAY延時子程序的作用是使輸出的方波頻率在人耳朵聽覺能力之內的20KHZ以下,如果沒有這個延時程序的話,輸出的頻率將大大超出人耳朵的聽覺能力,我們將不能聽到聲音。更改延時常數,可以改變輸出頻率,也就可以調整蜂鳴器的音調。大家可以在實驗中更改#228為其他值,聽聽蜂鳴器音調的改變。

      ORG 0000H
      AJMP MAIN ;跳轉到主程序

      ORG 0030H
      MAIN: CPL P3.7 ;蜂鳴器驅動電平取反
      LCALL DELAY ;延時
      AJMP MAIN ;反復循環

      DELAY:MOV R7,#228 ;延時子程序,更改該延時常數可以改變蜂鳴器發出的音調
      DE1: DJNZ R7,DE1
      RET
      END

        2、倒車警示音實驗程序:我們知道各種卡車、貨柜車在倒車時候,會發出倒車的蜂鳴警示提示音,同時警示黃燈也同步閃爍,提醒后面的人或車輛注意。本實驗例程就實現倒車警示功能,通過實驗板上的蜂鳴器發出警示音,同時通過實驗板上P1.2和P1.5上的兩個黃色發光二極管來發出黃色警示燈。

      ORG 0000H
      AJMP START ;跳轉到初始化程序

      ORG 0033H
      START:
      MOV SP,#60H ;SP初始化
      MOV P3,#0FFH ;端口初始化

      MAIN: ACALL SOUND ;蜂鳴器發聲
      ACALL YS500M ;延時
      AJMP MAIN

      SOUND:
      MOV P1,#11011011B ;點亮2個警示黃色發光二極管
      MOV R2,#200 ;響200個周期
      SND1: CLR P3.7 ;輸出低電平T1導通,蜂鳴器響
      ACALL YS1ms ;延時
      SETB P3.7 ;輸出高電平T1截止,蜂鳴器不響
      ACALL YS1ms ;延時
      DJNZ R2,SND1
      MOV P1,#0FFH ;熄滅黃色警示燈
      RET

      YS1ms: ;1ms延時子程序
      MOV R0,#2
      YL1: MOV R1,#250 ;改變R0的數值可改變聲音頻率
      DJNZ R1,$
      DJNZ R0,YL1
      RET

      YS500M: ;500ms延時子程序
      MOV R0,#6
      YL2: MOV R1,#200
      YL3: MOV R2,#250
      DJNZ R2,$
      DJNZ R1,YL3
      DJNZ R0,YL2
      RET

      END


        3、“叮咚”電子門鈴實驗程序:常見的家用電子門鈴在有客人來訪時候,如果按壓門鈴按鈕時,室內會發出“叮咚”聲音,本實驗程序模擬電子門鈴的發音,當我們按壓實驗板上的K1按鈕時候,蜂鳴器發出“叮咚”音樂聲,是一個比較實用的程序。

      “叮咚”電子門鈴實驗ASM源程序: “叮咚”電子門鈴C語言源程序:
      ORG 0000H
      LJMP START ;跳轉到初始化程序

      ORG 000BH
      LJMP PGT0 ;跳轉到T0中斷服務程序
      START:
      OBUF1 EQU 30H ;初始化程序
      OBUF2 EQU 31H
      OBUF3 EQU 32H
      OBUF4 EQU 33H
      FLAGB BIT 00H
      STOPB BIT 01H
      K1 BIT P3.2 ;定義按鈕K1,作為門鈴按鈕

      MOV TMOD,#02H ;定時器初始化
      MOV TH0,#06H
      MOV TL0,#06H
      SETB ET0 ;啟動定時器T0
      SETB EA ;啟動總中斷

      MAIN: ;主程序
      JB K1,MAIN ;檢測K1按鈕
      LCALL YS10M ;延時去抖動
      JB K1,MAIN
      SETB TR0 ;按鈕有效
      MOV P1,#00H ;點亮按鈕指示燈
      MOV OBUF1,#00H
      MOV OBUF2,#00H
      MOV OBUF3,#00H
      MOV OBUF4,#00H
      CLR FLAGB
      CLR STOPB
      JNB STOPB,$
      MOV P1,#0FFH
      LJMP MAIN ;發出“叮咚”完畢,返回重新檢測按鈕

      YS10M: ;10ms延時子程序
      MOV R6,#20
      D1: MOV R7,#248
      DJNZ R7,$
      DJNZ R6,D1
      RET

      PGT0: ;定時器T0中斷服務程序
      INC OBUF3 ;中斷服務程序中發出一聲“叮咚”響聲
      MOV A,OBUF3
      CJNE A,#100,NEXT
      MOV OBUF3,#00H
      INC OBUF4
      MOV A,OBUF4
      CJNE A,#20,NEXT
      MOV OBUF4,#00H
      JB FLAGB,PGSTP
      CPL FLAGB
      AJMP NEXT
      PGSTP:
      SETB STOPB
      CLR TR0
      LJMP INT0RET
      NEXT: JB FLAGB,SOU2
      INC OBUF2
      MOV A,OBUF2
      CJNE A,#03H,INT0RET
      MOV OBUF2,#00H
      CPL P3.7
      LJMP INT0RET
      SOU2: INC OBUF1
      MOV A,OBUF1
      CJNE A,#04H,INT0RET
      MOV OBUF1,#00H
      CPL P3.7
      LJMP INT0RET
      INT0RET:
      RETI

      END
      #include
      unsigned char obuf1;
      unsigned char obuf2;
      unsigned int obuf3;

      bit stopb;
      bit flagb;

      void main(void)
      {
      unsigned char i,j;

      TMOD=0x02; //定時器T0初始化
      TH0=0x06;
      TL0=0x06;
      ET0=1;
      EA=1; //允許總中斷

      while(1)
      {
      if(P3_2==0) //檢測K1按鍵
      {
      P1=0x00;
      for(i=10;i>0;i--)
      for(j=248;j>0;j--);
      if(P3_2==0)
      {
      obuf1=0;
      obuf2=0;
      obuf3=0;
      flagb=0;
      stopb=0;
      TR0=1; //啟動定時器T0,發出“叮咚”聲
      while(stopb==0);
      P1=0xff;
      }
      }
      }
      }

      void t0(void) interrupt 1 using 0
      {
      obuf3++;
      if(obuf3==2000)
      {
      obuf3=0;
      if(flagb==0)
      {
      flagb=~flagb;
      }
      else
      {
      stopb=1;
      TR0=0;
      }
      }
      if(flagb==0)
      {
      obuf2++;
      if(obuf2==3)
      {
      obuf2=0;
      P3_7=~P3_7;
      }
      }
      else
      {
      obuf1++;
      if(obuf1==4)
      {
      obuf1=0;
      P3_7=~P3_7;
      }
      }
      }

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 色婷婷AⅤ一区二区三区 | 亚洲欧美日韩香蕉二区 | 在线免费看网站午夜 | 日本狂喷奶水在线播放212 | 中文字幕亚洲人成在线 | 中文字幕精品乱码亚洲一区 |