51單片機驅動無源蜂鳴器

2021-01-05 電子產品世界

在學習過程中遇到如下例題:8個發光管由上至下間隔1s流動,其中每個管亮500ms,滅500ms,亮時蜂鳴器響,滅時關閉蜂鳴器,一直重複下去。

流水燈的程序相對我個人來說比較簡單,但是蜂鳴器有些難度,正常給I/0口一個信號,蜂鳴器既然不響,後經查證是無源蜂鳴器

無源的蜂鳴器,就要通過IO口輸出振蕩信號來驅動蜂鳴器

本文引用地址:http://www.eepw.com.cn/article/201612/324157.htm

蜂鳴器簡介:蜂鳴器根據結構不同分為壓電式蜂鳴器和電磁式蜂鳴器;而兩種蜂鳴器又分為有源蜂鳴器和無源蜂鳴器,這裡的源特指振蕩源;有源蜂鳴器直接加電就可以響起,無源蜂鳴器需要我們給提供振蕩源。理想的振蕩源為一定頻率的方波。

由於系統採用了無源蜂鳴器,所以需要我們通過編程來控制I/0口的翻轉來產生一定頻率的方波信號。本文採用默認頻率0.5KHZ的標準方波。可以算出周期T = 2ms脈寬t = 1ms,因此我們可以通過簡單的延時函數延時1ms。然後控制P3.7口的電平高低產生0.5KHZ的方波信號;

本程序只是通過簡單延時達到驅動蜂鳴器的效果。

#include

sbit buzzer = P1^5;

void delayms(unsigned int xms)//延時函數,延時xms
{
unsigned int i , j;
for(i = 0; i < xms; i++)
for(j = 0; j < 110; j++);
}

void fengming()//蜂鳴函數,脈寬t = 1ms周期T = 2ms頻率f = 0.5khz實際發現延時1ms的時候效果最好
{
buzzer = 0; //給P1.5口送低電平
delayms(1);//延時1ms
buzzer = 1;//給P1.5口送高電平
delayms(1);//延時1ms
}

如果去掉delay(1);那麼你的蜂鳴器控制端狀態大約在2us左右翻轉一次(晶振12M,12T單片機),這個時間對於驅動電路和蜂鳴器來講都是很短的,可以通俗的理解成他們沒反應過來,還沒到最響的時候就被關掉了,加上延時之後顯然可以讓它到達峰值,所以就能聽到更響。

void main()
{
while(1)
{
fengming();
}
}



#include

#define uint unsigned int

#define uchar unsigned char

sbit buzzer=P1^5;

sbit D1=P1^0;

void delay(uint z)//延時1ms

{

uint x,y;

for(x=z;x>0;x--)

{

for(y=0;y<114;y++)

{

}

}

}

fasheng() //發聲子程序

{

unsigned int a,x;

for (a=0;a<456;a++)

{

buzzer=!buzzer;

for (x=0;x<45;x++); //45為蜂鳴器發聲頻率

}

}

void main()

{

while (1)

{

D1=0;

fasheng();

D1=1;

delay(200);

}

}


相關焦點

  • AVR單片機驅動無源蜂鳴器C程序
    定時器實險,周期信號驅動無源蜂鳴器,些實驗基於定時器的CTC模式,由硬體產生頻率信號。程序中實現單一頻率的周期性提示音。程序採用單任務方式,軟體延時。  驅動無源蜂鳴器 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/article_2017121336756.html 推薦閱讀 AVR單片機熔絲位的設置及拯救方法
  • AVR單片機驅動無源蜂鳴器
    定時器實險,周期信號驅動無源蜂鳴器,些實驗基於定時器的CTC模式,由硬體產生頻率信號。程序中實現單一頻率的周期性提示音。程序採用單任務方式,軟體延時。
  • 51單片機玩轉物聯網基礎篇04-蜂鳴器
    前言上一節,我們完成了按鍵操作,本節我們學習使用蜂鳴器,首先我們介紹下蜂鳴器,然後完成實驗:上電後默認驅動頻率為5KHZ,通過KEY1控制驅動頻率為1KHZ ,蜂鳴器,KEY2控制驅動頻率為 2KHZ,可以聽到不同的效果。
  • 有源蜂鳴器和無源蜂鳴器有什麼區別?
    蜂鳴器是經常用到的發聲器件,在單片機的實驗板、小孩玩具上經常見到,從發出的聲音上來區分呢,有的只會發出固定頻率的聲音,而有的卻可以發出較為明顯的音調
  • 51單片機之4位數加法計算器的設計報告
    AT89C52是一個低功耗,高性能的51內核的CMOS 8位單片機,片內含8k空間的可反覆擦些1000次的Flash只讀存儲器,具有256 bytes的隨機存取數據存儲器(RAM),32個雙向I/O口,2個16位可編程定時計數器。綜合考慮,選擇方案二,採用Atmel公司的AT89C52單片機作為控制器。
  • 51單片機ULN2003驅動步進電機的典型應用電路圖解
    打開APP 51單片機ULN2003驅動步進電機的典型應用電路圖解 發表於 2017-10-24 10:19:31   ULN2003
  • 51單片機、STM32單片機、PIC單片機性能對比
    51單片機 應用最廣泛的8位單片機當然也是初學者們最容易上手學習的單片機,最早由Intel推出,由於其典型的結構和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富的指令系統,堪稱為一代「經典」,為以後的其它單片機的發展奠定了基礎。
  • 蜂鳴器驅動電路圖解_有源蜂鳴器原理_有源蜂鳴器和無源蜂鳴器如何...
    打開APP 蜂鳴器驅動電路圖解_有源蜂鳴器原理_有源蜂鳴器和無源蜂鳴器如何區分 發表於 2017-08-25 09:12:49
  • 學習單片機,為什麼我建議你從51單片機開始
    32位單片機複雜的庫文件,大量的資源,即使使用項目驅動的學習方法,立完Flag後,很快就放棄了,很難堅持學習。因此經過我的教學經驗,如果想開始學習單片機,最好從51單片機開始學起,我都推薦STC系列的51單片機學習。原因就是一句話,因為51系列單片機簡單,學習起來也簡單。但是簡單不代表它功能少,51單片機雖然簡單,但體系是完備的。所以當你學會51單片機,會非常快速入門其它單片機學習。
  • 51單片機之計時器與計數器
    例如:外接晶振為12MHz時,51單片機相關周期的具體值為:振蕩周期=1/12us;狀態周期=1/6us;機器周期=1us;指令周期=1~4us;初始化程序應完成如下工作:對TMOD賦值,以確定T0和T1的工作方式。
  • 一種低成本無源蜂鳴器的設計
    而無源蜂鳴器彌補了有源蜂鳴器缺點,但問題是無源蜂鳴器需要PWM驅動。在系統的設計中,微控制器的PWM資源往往是比較緊張的,同時使用PWM驅動也加大了軟體開發的難度。接下來筆者將引領大家學習如何設計一個無需PWM也能驅動無源蜂鳴器的低成本電路。  1.1 無源蜂鳴器常規驅動電路
  • 51單片機還有沒有必要學?
    一、51單片機應用目前還在大量應用,如家用電器,電飯煲,電磁爐,豆漿機,冰箱,洗衣機等等小家電。幾乎智能電器都有程序控制,雖然廠家不同但內核基本都是51內核。二、51單片機入門學習首先根據個人基礎,如果是完全沒有基礎的,應該還是從51單片機入手,目前51單片機的應用還有很多,很多設備還能見到51晶片,尤其成本低的項目,出貨量特別大,51單片機入門簡單,上手快,項目開發進度快。低端產品大量使用,也是教學入門的晶片。
  • 單片機基礎:燥起來吧,蜂鳴器
    無源蜂鳴器:內部不不帶振蕩源,需外加振蕩信號,頻率可改變,較實用。4、本例分享無源蜂鳴器,如圖為單片機學習中常見的無源電磁式蜂鳴器新的蜂鳴器上表面貼有白色標籤,內容為「remove seal after washing」,即密封清洗後揭掉(PCB板焊接好後要清洗),才能得到最響的聲音(有的說聲音小就這緣故)5、蜂鳴器參數:電壓4-8V(常用5V),最大電流 =PS:諧振頻率指蜂鳴器最佳工作頻率
  • 有源蜂鳴器與無源蜂鳴器的區別(超全)
    有源蜂鳴器與無源蜂鳴器的區別(轉)   無源蜂鳴器的優點是:   1。便宜   2。聲音頻率可控,可以做出「多來米發索拉西」的效果   3。在一些特例中,可以和LED復用一個控制口   而無源內部不帶震蕩源,所以如果用直流信號無法令其鳴叫。必須用2K~5K的方波去驅動它。
  • 單片機驅動蜂鳴器C51程序
    #include reg51.h>#include intrins.h>#include absacc.h>#define uchar unsigned char#define uint unsigned intsbit k1=P1^4; //按鈕1sbit k2=P1
  • 8腳51單片機DIY時間顯示+鬧鐘技術分享(一)
    選到這款晶片,那單片機選型就自由了太多了,幸福感瞬間提升了,自己做時鐘,要有個DIY的感覺,所以我選擇把數碼管全部換成LED(主要還有成本低哦),還有跟別人的東西不一樣的感覺吧。然後既然我要做時間顯示那麼我就要選個時鐘晶片的,既然顯示和按鍵的選擇了一個晶片實現,並且還是一個I2C接口,那同樣時鐘晶片我也選擇了一款I2C通信的,那這樣兩個晶片用單片機的兩個管腳就夠了,是不是很省呢。
  • 51單片機程序下載、ISP及串口基礎知識
    本文詳細介紹了串口、51單片機的ISP下載等基礎知識,已經學過單片機的也可以看看,加強一下對這方面的了解。 串口 串行接口簡稱串口,也稱串行通信接口,是採用串行通信方式的擴展接口。而51單片機等中含有UART串口,UART這裡指的是TTL電平的串口。 UART與RS232區別主要在於其電平定義不同。TTL電平是5V的,而RS232是負邏輯電平,它定義+5~+12V為低電平,而-12~-5V為高電平。 標準串口即RS232串口(通常指COM接口),如圖。
  • 51單片機學習14-蜂鳴器驅動
    這篇驅動蜂鳴器,單片機IO口通過開關三極體來驅動蜂鳴器,這裡用PNP的三極體,常用SS8550。三極體b極電阻一般選用1K。
  • MCS-51單片機的結構和工作原理
    3.1 概述:MCS-51單片機晶片有許多種:      如8051、8031、8751、80C51、80C31等。3.1.1 MCS-51單片機系列:兩大系列:MCS-51子系列和MCS-52子系列。其中51子系列是基本型,而52子系列屬於增強型。
  • 51單片機對LCD1602液晶的驅動設計
    51單片機——LCD1602 1、1602液晶讀寫時序 (1)、讀狀態 RS=L,R/W=H,E=H。寫數據 RS=H,R/W=L,D0~D7=數據,E=高脈衝 2、液晶顯示驅動文件