52单片机IO口输出-蜂鸣器(硬核)
52單片機IO口輸出-蜂鳴器
- 什么是蜂鳴器
- 三極管的工作原理
- 蜂鳴器驅動電路分析
- 參考代碼
歡迎你的到來!這里是我的單片機學習筆記,希望我的筆記可以在你學習的道路上對你有所幫助!
什么是蜂鳴器
蜂鳴器是一種一體化結構的電子訊響器,廣泛應用于電子產(chǎn)品中作發(fā)聲器件,起到警報提醒的作用。
有源蜂鳴器與無源蜂鳴器
這里的“源”不是指電源,而是指震蕩源。
有源蜂鳴器內(nèi)部帶震蕩源,所以只要異同點就會叫。而無源內(nèi)部不帶震蕩源,所以如果用直流信號無法令其鳴叫。需要用2K~5K的方波去驅動它,有源蜂鳴器往往比無源的貴,就是因為里面多個振蕩電路。
無源蜂鳴器的優(yōu)點是:
1.便宜
2.聲音頻率可控,可以做出音樂里基本七音符的效果
有源蜂鳴器的優(yōu)點是:
程序控制方便,接通電源就可以工作,程序簡單。
三極管的工作原理
什么是三極管:
三極管全稱半導體三極管,也稱晶體三極管,是一種控制電流的半導體器件其作用是把微弱的電信號放大成幅度值較大的電信號,也用作無觸點開關,在電路中主要起開關和增大電流的作用。
三極管正如其名有三個引腳分別是:B(基極),C(集電極),E(發(fā)射極)
按照半導體排列方式區(qū)分:分為NPN三極管和PNP三極管兩種。
按照材質(zhì)區(qū)分:硅管(PN結導通電壓0.5 ~ 0.7V)、鍺管(PN結導通電壓0.1 ~ 0.3V)
三極管的型號記憶方式:箭頭朝內(nèi)PNP,箭頭朝外NPN,箭頭引腳發(fā)射極
PN結偏置:正偏,反偏,零偏
| 正偏 | 電位高 | 電位低 | 正向導通 |
| 反偏 | 電位低 | 電位高 | 反向截止 |
| 零偏 | 電位相等 | 電位箱等 |
三種狀態(tài):
| 截止 | 反偏 | 反偏 |
| 放大 | 正偏 | 反偏 |
| 飽和 | 正偏 | 正偏(零偏) |
口訣:發(fā)正集反是放大,全正飽和全反截。
蜂鳴器驅動電路分析
這是蜂鳴器的控制電路,因為IO口的輸出電流小,無法直接用IO口驅動,需要用接了10K的上拉電阻的IO口才可以
這次我用的是IO口驅動這種方法,我用的單片機是STC89C52,它的P1組IO口沒有上拉排阻,所以我用的P2組IO口
*74hc595芯片可以起到擴充單片機IO口的作用,因為輸出電流也比IO口大,所以也有放大電流的作用*參考代碼
延時方法1
unsigned int i = 1000;
while(i--);
延時方法2
void delay();//延時函數(shù)聲明
void delay()//延時函數(shù) { uint16 i; for(i=100000;i>0;i--); }
延時方法3
使用_nop_();函數(shù)(記得帶上頭文件#include<intrins.h>)
我們可以使用stc官方軟件直接生成我們想要的函數(shù)(懶)
方法如下
①打開下圖的軟件,在右上菜單欄中點開軟件延時計算器
②左上角修改參數(shù),選擇自己的晶振頻率和想要延長的時間
③點擊生成代碼,然后軟件會自動生成,復制即可使用
完整參考代碼↓(用的延時方法3)
#include<reg52.h> #include<intrins.h>sbit beep = P2^0;//蜂鳴器端口 void Delay500ms();//@11.0592MHzvoid main() {while(1){beep = 1; //蜂鳴器啟動Delay500ms(); //@11.0592MHzbeep = 0; //蜂鳴器關閉Delay500ms(); //@11.0592MHz} } void Delay500ms() //@11.0592MHz {unsigned char i, j, k;_nop_();_nop_();i = 22;j = 3;k = 227;do{do{while (--k);} while (--j);} while (--i); }參考內(nèi)容鏈接: https://www.bilibili.com/video/BV1Kt411Q7aV?p=6.
如有錯誤,還望斧正!有好的想法和意見可以在評論區(qū)告訴博主,感謝你的觀看!
嘿~我親愛的伙計!我想慷慨大方的你一定不會吝嗇給我這個快要禿頭的博主點贊的。
歡迎大家關注博主的公眾號:小黃的閣樓,里面的學習筆記會和CSDN同步,歡迎前來一起學習!!
總結
以上是生活随笔為你收集整理的52单片机IO口输出-蜂鸣器(硬核)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python提取文件夹中的所有文件名输出
- 下一篇: TextView 去除默认内边距