蜂鳴器是很常見(jiàn)的設備,分為無(wú)源和有源兩種。根據項目需求選擇不同類(lèi)型的蜂鳴器。最近的項目里有用到有源蜂鳴器對有源蜂鳴器。還是老一套,把電路板畫(huà)完,接著(zhù)編程。
在項目中原理圖如下:
如果不能保證I/O的輸出性能可以根據情況增加上拉或者下拉電阻。
切入正題:在程序里面這個(gè)蜂鳴器的驅動(dòng)就是個(gè)高低電平驅動(dòng)。高電平三極管導通、蜂鳴器發(fā)聲,低電平三極管關(guān)斷、蜂鳴器不發(fā)聲。這的確很簡(jiǎn)單,程序上最開(kāi)始我是這樣寫(xiě)的:
當然,如果單片機沒(méi)有很好的I/O跳變函數也可以這樣修改:
這里稍作解釋?zhuān)?/p>
1)
函數功能:蜂鳴器發(fā)聲驅動(dòng)
傳入參數:蜂鳴器發(fā)聲的次數
2)
傳入的次數cnt需要再函數內翻倍。這是因為傳入的參數是想讓蜂鳴器連續的發(fā)cnt聲。但是蜂鳴器除了發(fā)聲還有不發(fā)聲的時(shí)候。也就是說(shuō)蜂鳴器每響一次都需要關(guān)閉一次,如果沒(méi)有關(guān)閉操作肯定就不會(huì )出現響幾聲而是連續的響一聲,這個(gè)也很容易推理。
3)
在while循環(huán)完之后需要加一個(gè)蜂鳴器關(guān)閉操作。
這里假如傳進(jìn)的參數是2,目的是讓蜂鳴器響兩聲。根據程序的執行步驟:
cnt2變成4。
第1次while(4) 蜂鳴器開(kāi) cnt自減到3
第2次while(3) 蜂鳴器關(guān) cnt自減到2
第3次while(2) 蜂鳴器開(kāi) cnt自減到1
第4次while(1) 蜂鳴器關(guān) cnt自減到0
第5次while(0) 跳出while
可以看出其實(shí)在while之后蜂鳴器狀態(tài)已經(jīng)是關(guān)閉的了,但是保險起見(jiàn),確保函數調用完之后蜂鳴器是關(guān)閉的狀態(tài)。比如第一個(gè)函數I/O跳變的就更需要保障了,因為代碼上只能看出跳變,看不到跳變之后的狀態(tài)。
至此,一個(gè)簡(jiǎn)單的蜂鳴器電路和驅動(dòng)程序就都溫習完了,接下來(lái)上干貨:
在寫(xiě)程序的時(shí)候很多時(shí)候講究程序的效率,比如這個(gè)蜂鳴器驅動(dòng),驅動(dòng)過(guò)程中會(huì )降低效率,厲害的人很快能看出來(lái),就是這個(gè)Delay延時(shí)的問(wèn)題。但是上面也說(shuō)了,不延時(shí)也是不行的。所以趨于效率我嘗試著(zhù)換了一種方法驅動(dòng)蜂鳴器。
代碼如下:
實(shí)現起來(lái)也很簡(jiǎn)單,簡(jiǎn)單說(shuō)下原理:
1)首先是提供蜂鳴器驅動(dòng)的I/O配置,
2)其次是定時(shí)器的配置
3)最后是定時(shí)器中斷函數實(shí)現
我選用的定時(shí)器是項目單片機中最簡(jiǎn)單的一個(gè)定時(shí)器,配制成1ms中斷,能夠提供溢出中斷。其實(shí)這個(gè)定時(shí)器我常用做計系統運行時(shí)間Systick_ms。但是該項目對這個(gè)系統時(shí)間沒(méi)有用到,那就用這個(gè)定時(shí)器做文章把。
實(shí)現方法:
1、同樣函數在調用蜂鳴器驅動(dòng)的時(shí)候接口是一樣的,傳入的參數還是蜂鳴器的響聲次數。
2、函數體變了,這里改成了兩個(gè)變量的賦值,第一個(gè)BELL_CNT同普通方法中的cnt2,這里不再贅述。第二個(gè)是FLAG_BELL是用來(lái)保存蜂鳴器是否需要驅動(dòng)的狀態(tài)變量。所以既然是調用驅動(dòng)函數,那肯定這個(gè)變量要為真。
3、定時(shí)器中斷函數里面加上了一個(gè)靜態(tài)變量NOW,他的作用就是和Systic_ms產(chǎn)生一個(gè)50ms的時(shí)間片,干嘛用?肯定是給蜂鳴器開(kāi)關(guān)之間的延時(shí)用咯。模擬軟件延時(shí)嘛。然后再來(lái)分析下這段代碼:
1)首先這個(gè)NOW和Systic_ms是無(wú)條件需要賦值保證50ms時(shí)間片的。對應的代碼為NOW=Systick_ms+50;
2)判斷蜂鳴器驅動(dòng)狀態(tài)變量是不是真,如果不為真就關(guān)閉蜂鳴器,這個(gè)也是無(wú)條件的。
3)如果狀態(tài)變量為真:蜂鳴器先跳變Bell_Tog();當然如果沒(méi)有這個(gè)跳變函數也可以用上述的判斷cnt的方法,就不多寫(xiě)了都是一樣的。同時(shí)次數自減BELL_CNT--;同時(shí)判斷是不是減到0了,減到0了說(shuō)明響完了啊,那就把狀態(tài)變量賦值為假。再次進(jìn)來(lái)不管蜂鳴器是開(kāi)著(zhù)的還是關(guān)著(zhù)的都會(huì )執行關(guān)閉操作,這個(gè)跟上面說(shuō)的保險一樣。
4)最后,這兩個(gè)變量用的是全局變量,這里是以結構體的形式呈現的,因為很多情況這兩個(gè)函數不在一個(gè)C里面。如果硬要寫(xiě)在一個(gè)C可以忽略本條。
容-源-電-子-網(wǎng)-為你提供技術(shù)支持本文地址:http://0u2438cq.cn/dz/22/15474436233078.shtml
本文標簽:
猜你感興趣:
展頻晶振(Spread Spectrum Crystal Oscillator,簡(jiǎn)稱(chēng)SSXO)應運而生。展頻晶振是一種特殊類(lèi)型的晶體振蕩器,主要依托于擴展頻譜技術(shù)。這項技術(shù)在抗干擾通信中有著(zhù)廣泛的應用
關(guān)鍵詞: 所屬欄目:電子基礎
什么是可編程晶振?可編程晶振多為有源晶振,由兩個(gè)芯片組成;一個(gè)是全硅MEMS諧振器,一個(gè)是具有溫補功能的芯片,可以啟動(dòng)電路鎖相環(huán)CMOS。它采用標準化的半導體芯片MCM封裝?梢圆捎萌詣(dòng)標準半導體制造工藝
關(guān)鍵詞: 所屬欄目:電子基礎
可編程差分振蕩器 YSO210PR在機器人的智能視覺(jué)控制、工業(yè)屏、望遠鏡等領(lǐng)域具有顯著(zhù)優(yōu)勢。其高精度、穩定性和靈活的定制特性使得YSO210PR成為了機器人應用中不可或缺的元器件,為機器人技術(shù)的發(fā)展和應用提供了強有力的支持。
關(guān)鍵詞: 所屬欄目:電子基礎
在通信科技的推動(dòng)下,智能終端天線(xiàn)和低抖動(dòng)晶振不斷創(chuàng )新,將引領(lǐng)通信產(chǎn)業(yè)進(jìn)入新的時(shí)代。YSO690PR系列作為高性能智能終端通信利器,將為各類(lèi)智能終端設備提供更加穩定和高效的通信支持,推動(dòng)科技的蓬勃發(fā)展。無(wú)論是日常生活還是工業(yè)應用,這些優(yōu)秀的技術(shù)將為人們帶來(lái)更加便捷、智能的通信體驗。
關(guān)鍵詞: 所屬欄目:電子基礎
​YSO690PR穩定可靠的低抖動(dòng)石英可編程晶振,確?梢(jiàn)光紅外模塊應用在各種環(huán)境和條件下都能提供出色的性能和精確的頻率輸出。讓QMEMS振蕩器YSO690PR成為交換機、對講機、充電樁、打印機等行業(yè)的理想選擇!
關(guān)鍵詞: 所屬欄目:電子基礎
電壓有源晶振 YSO110TR的優(yōu)勢在于其高精度和穩定性。10MHz的頻率下,其全溫范圍內總頻差僅為±30PPM,這意味著(zhù)即使在嚴酷的環(huán)境條件下,晶振的頻率波動(dòng)也非常小,保證了BMS系統的高精度控制和穩定性。無(wú)論是在高溫還是低溫環(huán)境中,YSO110TR都能保持可靠的性能,為電池管理系統提供持久穩定的時(shí)鐘信號
關(guān)鍵詞: 所屬欄目:電子基礎
在工業(yè)相機行業(yè)中,石英可編程晶振扮演著(zhù)至關(guān)重要的角色。為了滿(mǎn)足不同應用需求,YXC引入了低抖動(dòng)石英可編程晶振QMEMS振蕩器YSO690PR,為工業(yè)相機的穩定運行提供了理想解決方案。
關(guān)鍵詞: 所屬欄目:電子基礎
作為溫度采集器的關(guān)鍵組成部分之一,晶振在保證采集器的精確性和可靠性方面發(fā)揮著(zhù)重要的角色。在這一背景下,YXC揚興科技推出了旗下的產(chǎn)品系列之一——YSO110TR寬電壓有源晶振,為溫度采集器行業(yè)提供了高品質(zhì)的解決方案。
關(guān)鍵詞: 所屬欄目:電子基礎
YSO110TR寬電壓有源晶振是服務(wù)器中不可或缺的關(guān)鍵組件,其高精度、高穩定性、多電壓兼容性和工業(yè)級耐溫特性,使其成為服務(wù)器領(lǐng)域的優(yōu)質(zhì)選擇。無(wú)論是拼接屏控制器、充電樁、光伏逆變器、360后視鏡、攝像頭、手機屏、筆電顯卡、交換機、路由器還是光模塊等應用,YSO110TR都能為服務(wù)器提供卓越的性能和可靠性保障,助力服務(wù)器行業(yè)不斷發(fā)展進(jìn)步。
關(guān)鍵詞: 所屬欄目:電子基礎
現在晶振廣泛應用于汽車(chē)電子、安防監控、醫療設備、航空設備、互聯(lián)網(wǎng)設備等智能電子產(chǎn)品中,發(fā)揮著(zhù)重要作用,據說(shuō)市場(chǎng)上85%的電子產(chǎn)品應用于廣泛的領(lǐng)域。
關(guān)鍵詞: 所屬欄目:電子基礎
差分可編程振蕩器 YSO210PR 是一款功能強大的產(chǎn)品,具備10-1500MHz超寬頻率范圍的特點(diǎn),用戶(hù)可以隨意編程頻率,并且實(shí)現精確輸出到小數點(diǎn)后6位的精度。這種高度可編程的特性使得 YSO210PR 在不同應用場(chǎng)景下能夠靈活應對各種頻率要求,無(wú)論是低頻還是高頻應用,都能滿(mǎn)足客戶(hù)的需求。
關(guān)鍵詞: 所屬欄目:電子基礎
可編程晶振。簡(jiǎn)單來(lái)說(shuō)就是一種任意編程頻率的晶振,可以通過(guò)一個(gè)發(fā)生器放大或縮小,有選擇地實(shí)現各種總線(xiàn)頻率。在實(shí)際應用或初步了解中,會(huì )遇到各種各樣的問(wèn)題。以下編輯列出了與SiTime可編程晶振相關(guān)的一些常見(jiàn)問(wèn)題和答案。
OE和ST功能有什么區別?
關(guān)鍵詞: 所屬欄目:電子基礎
運用單片機便是了解單片機硬件結構,以及內部資源的運用,在匯編或C語(yǔ)言中學(xué)會(huì )各種功用的初始化設置,以及完成各種功用的程序編制。 運用按鈕輸入信號,發(fā)光二極管顯現輸出
關(guān)鍵詞:51單片機PIC單片機單片機 所屬欄目:設計編程
現場(chǎng)總線(xiàn)技術(shù)已經(jīng)廣泛應用于工業(yè)控制中,尤其是CAN(Controler Area Nerwork)總線(xiàn)由于具有可靠性高、成本低、容易實(shí)現等優(yōu)點(diǎn),在現場(chǎng)總線(xiàn)實(shí)際工程應用中占有了較大份額。
關(guān)鍵詞:單片機 所屬欄目:設計編程
我的答案是:不可以原因如下:一、軟件仿真多用于教學(xué),把更多精力用在軟件的實(shí)現上由于學(xué)生學(xué)習時(shí)間寶貴,焊接一套單片機實(shí)驗板又比較花時(shí)間,并且實(shí)驗項目太多,所以為了
關(guān)鍵詞:PIC單片機51單片機單片機 所屬欄目:設計編程
對于新手來(lái)說(shuō),首先根據自己學(xué)的什么樣單片機就選什么類(lèi)型的單片機,熟悉什么類(lèi)型的單片機就選什么類(lèi)型的單片機。因為單片機不僅要設計電路,還要設計控制軟件。選自己熟悉的單片機上手最快,也最容易獲得成功。下面介紹如何選擇最適合的單片機。
關(guān)鍵詞: 所屬欄目:設計編程
單片機晶振的作用是什么
在初學(xué)單片機的時(shí)候,總是伴隨很多有關(guān)于晶振的問(wèn)題,其實(shí)晶振就是如同人的心臟,是血液的脈搏,把單片機的晶振問(wèn)題搞明白了,51單片機的其他問(wèn)題
關(guān)鍵詞:51單片機PIC單片機單片機 所屬欄目:設計編程
Keil單片機編程軟件Keil C51是單片機C語(yǔ)言軟件開(kāi)發(fā)系統,與匯編相比,C語(yǔ)言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯
關(guān)鍵詞:51單片機PIC單片機 所屬欄目:設計編程
詳解51單片機運行過(guò)程 注:1.ROM:只讀存儲器,單片機的只讀存儲區大多用于存儲程序固又稱(chēng)程序存儲器。51單片機是EPROM,所謂的EPROM是可擦除的只
關(guān)鍵詞: 所屬欄目:設計編程
pic單片機和c51有什么區別(區別1)總線(xiàn)結構:MCS-51單片機的總線(xiàn)結構是馮-諾依曼型,計算機在同一個(gè)存儲空間取指令和數據,兩者不能同時(shí)進(jìn)行;而PIC單片機的總線(xiàn)結構是哈佛結構
關(guān)鍵詞:單片機PIC單片機51單片機 所屬欄目:設計編程