51單片機玩轉物聯網基礎篇04-蜂鳴器

2020-09-05 小驛物聯

前言

上一節,我們完成了按鍵操作,本節我們學習使用蜂鳴器,首先我們介紹下蜂鳴器,然後完成實驗:上電後默認驅動頻率為5KHZ,通過KEY1控制驅動頻率為1KHZ ,蜂鳴器,KEY2控制驅動頻率為 2KHZ,可以聽到不同的效果。

一、基礎知識

1.蜂鳴器簡介

蜂鳴器是一種一體化結構的電子訊響器,採用直流電壓供電,廣泛應用於計算機、印表機、複印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。

蜂鳴器按照原理來分可以分為有源蜂鳴器和無源蜂鳴器,有源蜂鳴器和無源蜂鳴器並不是說蜂鳴器內部是否含有電源,這裡的有源和無源是指內部是否含有RC震蕩電路。想要無源蜂鳴器發聲,需提供一定頻率的脈衝信號; 想要有源蜂鳴器發聲, 只需提供電源即可。蜂鳴器頻率一般在1.5-5KHz 之間,有源蜂鳴器的實物如下圖所示:

2.硬體設計

打開硬體設計電路,蜂鳴器相關電路如下

注意:不可以用單片機I/O口直接驅動蜂鳴器發聲,因為I/O口驅動負載能力有限,通常蜂鳴器正常工作,需要通過30mA左右電流,因此我們使用三極體放大電路解決這個問題,採用放大電路後, 51 單片機的 IO 口只需要提供不到 1mA 的電流就可控制蜂鳴器。

二、實例

1.創建工程

將上一節工程複製出來,並修改名字為03-beep

2.修改程序

include <intrins.h>

sbit Buzzer=P3^7; //定義P3.7為喇叭驅動端

sbit key1 = P2^4;

sbit key2 = P2^5;

void Delay500us() //500us延遲函數,用於產生1KHZ信號

{

unsigned char i;

nop();

i = 227;

while (--i);

}

void Delay250us() //250us延遲函數,用於產生2KHZ信號

{

unsigned char i;

nop();

i = 112;

while (--i);

}

void delay_ms(int ms)

{

int val = 110;

for (;ms >0; ms--)

{

while(val--);

}

}

void Delay100us() //@11.0592MHz

{

unsigned char i;

nop();

i = 43;

while (--i);

}

main() //主函數

{

while(1)

{

if (key1 == 0 || key2 == 0)

{

delay_ms(10);

if (key1 == 0)

Delay500us(); // 1KHZ

else if(key2 == 0)

Delay250us(); // 2KHZ

}else

{

Delay100us(); // 5KHZ

}

Buzzer=~Buzzer; //喇叭驅動位取反

}

}

程序中檢測KEY1和KEY2的狀態,當按下KEY1時候,修改蜂鳴器驅動頻率為1KHZ,KEY2按鍵按下時候,蜂鳴器驅動頻率為2KHZ,可以聽到不同的聲音效果。

注意:軟體精確延時時間可以利用STC-ISP工具實現。

一葉孤沙出品:一沙一世界,一葉一菩提

相關焦點

  • 51單片機學習14-蜂鳴器驅動
    這篇驅動蜂鳴器,單片機IO口通過開關三極體來驅動蜂鳴器,這裡用PNP的三極體,常用SS8550。三極體b極電阻一般選用1K。
  • 單片機基礎:燥起來吧,蜂鳴器
    一、不可不知道的蜂鳴器基礎知識1、 蜂鳴器簡介:蜂鳴器是一種發聲器件 (這就夠了,就像知道LED是一種發光器件就OK)2、蜂鳴器分類:根據結構分,有壓電式和電磁式;根據」源「分,有無源蜂鳴器和有源蜂鳴器。3、必備知識點:物理學裡定義,聲音是由物體振動發出的,蜂鳴器也是如此,故」源」指的是蜂鳴器帶不帶振蕩源。
  • 單片機驅動蜂鳴器C51程序
    #include reg51.h>#include intrins.h>#include absacc.h>#define uchar unsigned char#define uint unsigned intsbit k1=P1^4; //按鈕1sbit k2=P1
  • 51單片機按鍵控制蜂鳴器啟停程序
    51單片機按鍵控制蜂鳴器啟停程序#include<reg52.h> #define uint unsigned int //宏定義sbit SPK=P3^5; //定義喇叭埠sbit key=
  • 51單片機玩轉物聯網基礎篇01-開發環境搭建
    前言上至航天,下至兒童玩具,凡事沾一點智能的東西,都離不開單片機的身影......,本文開始,我們學習STC89C52單片機,這款單片機屬於8051系列單片機,51單片機作為入門級單片機不僅在教學實驗中應用廣泛,在實際項目中應用亦是十分廣泛。
  • 51單片機玩轉物聯網基礎篇05-控制繼電器
    前言本節我們開始學習如何使用51單片機控制繼電器,有了繼電器,我們可以使用單片機輸出的低電平控制高電平期間工作,比如繼電器接到220V用電器上,可通過單片機智能控制用電器。一、基礎知識1.繼電器簡介繼電器是具有隔離功能的自動開關元件,實際上是用小電流去控制大電流運作的一種「自動開關」。
  • 51單片機玩轉物聯網基礎篇03-獨立按鍵
    前言上一節,我們完成了51單片機控制LED燈,並實現流水燈效果,本節我們學習操作獨立按鍵,並通過兩個按鍵,分別打開和關閉所有LED燈,按鍵作為輸入設備,在系統開發過程中十分常見,一般來說,按鍵可以設置系統參數、控制系統運行狀態。
  • 基於51單片機的兩路溫度控制器的設計方案
    本方案設計的實現基於C51單片機的兩路溫度控制器,做到成本最低化,精確度高,兩路溫度的顯示和控制,能在溫度超出設定的最高溫度時啟動電風扇進行降溫,在溫度低於設定的最低溫度時啟動蜂鳴器報警,能夠用戶設定最高最低溫。  2.系統結構  溫度控制器系統包括以下幾個主要部分:溫度傳感器,報警電路,LED顯示電路,鍵盤控制,89C51控制部分。
  • 單片機驅動蜂鳴器原理與設計
    蜂鳴器是一種一體化結構的電子訊響器,本文介紹如何用單片機驅動蜂鳴器,他廣泛應用於計算機、印表機、複印機、報警器、電話機等電子產品中作發聲器件。   蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。
  • 圖形化編程玩51單片機(十三)簡單實用門鈴實驗
    特別提示:從本期起,將原來的文章標題「零基礎學51單片機」更改為「圖形化編程玩51單片機」本期實驗:模擬簡易門鈴;且有關閉門鈴功能。【使用說明】:當按下單片機上的S2按鍵後,蜂鳴器會發出八次短暫的「嘟嘟」聲作為呼叫。S3用於關閉或者打開門鈴。當門鈴處於關閉時,按下S2不會有呼叫效果。實際應用中,S2按鍵可作為門外的來客呼叫開關。S3可作為室內的門鈴控制開關。
  • 電路找茬:蜂鳴器驅動低級錯誤電路分析
    乍一看沒有什麼問題,但是仔細一分析問題就來了,用上圖所示的電路驅動蜂鳴器可能存在驅動電流不夠,從而導致蜂鳴器不響得現象。分析如下:三極體是流控型器件,當單片機的管腳輸出5V高電平,三極體的導通壓降為0.7V時,三極體的基極電流計算如下:Ib=(5-0.7-Ui)/4.7k,由此公式可以發現,Ib的大小還取決於Ui,Ui是蜂鳴器的導通壓降,如果Ui較大則可能導致三極體不導通,從而導致驅動失敗。那這個電路該如何設計呢?
  • 51單片機之4位數加法計算器的設計報告
    AT89C52是一個低功耗,高性能的51內核的CMOS 8位單片機,片內含8k空間的可反覆擦些1000次的Flash只讀存儲器,具有256 bytes的隨機存取數據存儲器(RAM),32個雙向I/O口,2個16位可編程定時計數器。綜合考慮,選擇方案二,採用Atmel公司的AT89C52單片機作為控制器。
  • 基於51單片機的電子時鐘課程設計
    第一章 設計目的及要求1.目的通過對電子時鐘系統進行編程與Protues仿真,進一步掌握單片機的組成,P1、P0、P2、P3口的應用,蜂鳴器的應用,定時中斷程序的編寫及應用,對之前學習的單片機課程進行回顧與應用;初步掌握Protues仿真方法以及用keil軟體編寫程序的方法。
  • 51單片機N76E003遙控器DIY 完全開源PCB、KEIL工程源碼
    接收機配套資料下載:51單片機接收機-四軸一體飛控 完整資料PCB、原始碼遙控器常用操作說明:遙控器每次開機會啟動設備自檢,如果外設有不正常工作的會顯示不正常的設備信息。蜂鳴器控制引腳是復用的下載口,所以在下載程序或者更新固件的時候需要把開關打到數據「DAT」端。在需要用蜂鳴器作為提示或者報警的時候只需講開關撥回蜂鳴器「BEEP」端就可以了。蜂鳴器的提示聲音分為1、2、3、4、5聲,每種聲音都代表一種功能性故障提示,如遙控器電池電量過低、遙控器與受控設備失聯等等。OLED屏幕上面可以顯示遙控器與被控設備的一些相關信息。
  • 51單片機基礎(5)
    (2)內部數據存儲器一定是位於51單片機內部的,而外部數據存儲器則不能說一定就位於單片機的外部。為了應用方便(節省I/O口線,避免通過外部總線擴展XRAM的麻煩,以及節省物理空間等),很多增強的51系列單片機都將一定量的XRAM集成到晶片的內部,即便如此,這些數據存儲器使用的是外部數據空間,因此仍然(也只能)是外部數據存儲器。
  • 51單片機玩轉物聯網基礎篇02-點亮LED燈,實現跑馬燈效果
    前言上一節,我們完成了51單片機開發環境的搭建,本節我們正式學習51單片機,程式語言的學習,通常是從第一個&34;開始,而點燈實驗便是單片機學習的開始。一、基礎知識1.單片機最小系統一個最小的單片機系統,需要有單片機、電源電路、晶振電路、復位電路組成,這幾部分存在就可以使單片機正常工作,如果需要頻繁的下載程序,還需增加下載電路。
  • 學習單片機,為什麼我建議你從51單片機開始
    隨著物聯網的大潮,單片機的學習又有高潮,可是面對品類繁多的單片機,不知從何學起,不知道到底學習單片機需要哪些知識;是從8位單片機、16位單片機,還是現在正流行的32位單片機開始學習呢。因此經過我的教學經驗,如果想開始學習單片機,最好從51單片機開始學起,我都推薦STC系列的51單片機學習。原因就是一句話,因為51系列單片機簡單,學習起來也簡單。但是簡單不代表它功能少,51單片機雖然簡單,但體系是完備的。所以當你學會51單片機,會非常快速入門其它單片機學習。
  • 51單片機蜂鳴器音樂簡譜轉換工具
    程序範例可以點主界面上的「關於」按鈕後就能找到,但是代碼也不全,需要加入對音樂程序的調用代碼,其它範例裡也寫的很清楚了,只需要調用Play函數就行了,其調用格式如下:Play(樂曲名,調號,升降八度,演奏速度);經過實踐,此函數的的後三個參數分別設為0,2和350時演奏出的音樂比較符合「原味」,下面給出本站的入門型51
  • 51單片機之計時器與計數器
    例如:外接晶振為12MHz時,51單片機相關周期的具體值為:振蕩周期=1/12us;狀態周期=1/6us;機器周期=1us;指令周期=1~4us;初始化程序應完成如下工作:對TMOD賦值,以確定T0和T1的工作方式。
  • 51單片機程序下載、ISP及串口基礎知識
    本文詳細介紹了串口、51單片機的ISP下載等基礎知識,已經學過單片機的也可以看看,加強一下對這方面的了解。 串口 串行接口簡稱串口,也稱串行通信接口,是採用串行通信方式的擴展接口。而51單片機等中含有UART串口,UART這裡指的是TTL電平的串口。 UART與RS232區別主要在於其電平定義不同。TTL電平是5V的,而RS232是負邏輯電平,它定義+5~+12V為低電平,而-12~-5V為高電平。 標準串口即RS232串口(通常指COM接口),如圖。