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