在項(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://m.jssjbk.com/dz/22/15445095132760.shtml
本文標(biāo)簽:
猜你感興趣:
深圳市永阜康科技有限公司現(xiàn)在大力推廣一顆單相正弦波/方波直流無(wú)刷電機(jī)驅(qū)動(dòng)IC-ACM6252. 工作電壓3.1V-18V、工作電流1.2A, 可覆蓋大多數(shù)中小功率(<1A)的風(fēng)機(jī)、泵機(jī)類(lèi)應(yīng)用。
關(guān)鍵詞: 所屬欄目:其他文章
關(guān)鍵詞: 所屬欄目:開(kāi)關(guān)電源電路圖
YSX321SL石英諧振器的核心特點(diǎn)是其頻率穩(wěn)定性和精確性。采用27.12MHz頻率,經(jīng)過(guò)精密設(shè)計(jì)和優(yōu)化,常溫頻差僅為±10PPM,能夠提供高精度的時(shí)鐘信號(hào)輸出。這為電動(dòng)車(chē)儀表提供了準(zhǔn)確可靠的時(shí)間參考,使得儀表顯示更加精準(zhǔn),功能操作更加流暢。
關(guān)鍵詞: 所屬欄目:電子基礎(chǔ)
深圳市永阜康科技有限公司現(xiàn)在大力推廣一顆三相無(wú)傳感器正弦波驅(qū)動(dòng)直流無(wú)刷馬達(dá)驅(qū)動(dòng)IC-ACM6753,集成驅(qū)動(dòng)算法+預(yù)驅(qū)+MOS,內(nèi)置電流檢測(cè),外圍元件僅需5個(gè)電容,應(yīng)用極其簡(jiǎn)單。
關(guān)鍵詞: 所屬欄目:其他文章
VK1640是一種數(shù)碼管或點(diǎn)陣LED驅(qū)動(dòng)控制專(zhuān)用芯片,內(nèi)部集成有數(shù)據(jù)鎖存器、LED 驅(qū)動(dòng)等電路。SEG腳接LED陽(yáng)極,GRID腳接LED陰極,可支持8SEGx16GRID的點(diǎn)陣LED顯示。適用于小型LED顯示屏驅(qū)動(dòng)。采用SOP28的封裝形式。
關(guān)鍵詞: 所屬欄目:元器件知識(shí)
工作電壓 : 2.4V~5.2V,內(nèi)建 256KHz RC oscillator 提供 1/4 偏壓 1/8 COM 周期省電模式
64x8 LCD 駆動(dòng)器內(nèi)建 64x8 bit 顯示內(nèi)存,3-wire serial interface
軟件程控
資料及指令模式自動(dòng)增加讀寫(xiě)地址 
概述
PC1625 是一個(gè) 64x8 的 LCD 駆動(dòng)器. 可軟件程控使其適用于多樣化的 LCD 應(yīng)
關(guān)鍵詞: 所屬欄目:集成塊資料
PC1621B是一個(gè)32*4的LCD驅(qū)動(dòng)器,可軟體程控使其適用于多樣化的LCD應(yīng)用線路,僅用到3至4條訊號(hào)線便可控制LCD驅(qū)動(dòng)器,除此之外也可介由指令使其進(jìn)入省電模式
特色:
 工作電壓:2.4-5.2V
 內(nèi)建256KHz RC oscillator
 可外接 32.768KHz石英震蕩器或256KHz頻率
 可選擇1/2,1/3 偏壓,也可選擇1/2,1/3或1/4的COM周期
&
關(guān)鍵詞: 所屬欄目:集成塊資料
兆科推薦高導(dǎo)熱硅脂來(lái)幫助LED驅(qū)動(dòng)器散熱,高導(dǎo)熱硅脂是電子元器件的熱傳遞介質(zhì),如:CPU與散熱器填隙、大功率三及管、可控硅元件二及管、基材鋁、銅接觸的縫隙處填充,均可降低發(fā)熱元件的工作溫度。
關(guān)鍵詞: 所屬欄目:led
GC4931F/S 是一款三相無(wú)刷直流電機(jī)預(yù)驅(qū)動(dòng)芯片。 芯片可以驅(qū)動(dòng)N型功率MOSFET,最高電源到 36V。芯片狀態(tài)切換邏輯受三個(gè)相位差為 120°的霍爾輸入確定。兼容替代A4931,MS4931芯片集成固定衰減時(shí)間的脈沖調(diào)制來(lái)控制電流并且抑制勵(lì)磁涌流;堵轉(zhuǎn)保護(hù)時(shí)間可調(diào);過(guò)溫保護(hù),過(guò)壓監(jiān)測(cè),同步整流等等。其中內(nèi)置的同步整流器通過(guò)在衰減周期內(nèi),打開(kāi)合適的低內(nèi)阻的開(kāi)關(guān)管以取代反向續(xù)流二極管來(lái)降低功耗。當(dāng)芯片監(jiān)測(cè)到過(guò)壓時(shí)芯片會(huì)關(guān)斷同步整流以減小變化電流引起的電源電壓波動(dòng)。
GC4931F/S 的邏輯輸入腳有
關(guān)鍵詞: 所屬欄目:集成塊資料
GC8837是一款12V直流電機(jī)驅(qū)動(dòng)芯片,為攝像機(jī),消費(fèi)類(lèi)產(chǎn)品,玩具和其他低壓或者電池供電的運(yùn)動(dòng)控制類(lèi)應(yīng)用提供了集成的電機(jī)驅(qū)動(dòng)解決方案。芯片一般用了驅(qū)動(dòng)一個(gè)直流電機(jī)或者使用兩顆來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)。
GC8837可以工作在0-12V的電源電壓上,能提供高達(dá)1.5A持續(xù)輸出或則2A峰值電流,睡眠模式功耗小于1Ua.
GC8837具有PWM(IN/IN)輸入接口與行業(yè)標(biāo)準(zhǔn)器件兼容,并具有過(guò)溫保護(hù)功能,芯片集成了過(guò)溫保護(hù),欠壓保護(hù),短路保護(hù),過(guò)流保護(hù)等功能
芯片特點(diǎn)
關(guān)鍵詞: 所屬欄目:集成塊資料
GC8549 是一款雙通道 12V 直流電機(jī)驅(qū)動(dòng)芯片,為攝像機(jī)、消費(fèi)類(lèi)產(chǎn)品、玩具和其他低壓或者電池供電的運(yùn)動(dòng)控制類(lèi)應(yīng)用提供了集成的電機(jī)驅(qū)動(dòng)解決方案。芯片一般用來(lái)驅(qū)動(dòng)兩個(gè)直流電機(jī)或者驅(qū)動(dòng)一個(gè)步進(jìn)電機(jī)。GC8549 可以工作在 3.8~12V 的電源電壓上,每通道能提供高達(dá) 1.5A 持續(xù)輸出電流或者2.5A峰值電流, 睡眠模式下功耗小于1uA。GC8549 具有 PWM(IN/EN)輸入接口,與行業(yè)標(biāo)準(zhǔn)器件兼容,并具有過(guò)溫保護(hù),欠壓保護(hù),短路保護(hù),過(guò)流保護(hù)等功能。GC8549 內(nèi)置 LDO,不需要邏輯電源,
關(guān)鍵詞: 所屬欄目:集成塊資料
在MOS管的結(jié)構(gòu)中可以看到,在GS,GD之間存在寄生電容,而MOS管的驅(qū)動(dòng),實(shí)際上就是對(duì)電容的充放電。對(duì)電容的充電需要一個(gè)電流,因?yàn)閷?duì)電容充電瞬間可以把電容看成短路,所以瞬間電流會(huì)比較大。選擇/設(shè)計(jì)MOS管驅(qū)動(dòng)時(shí)要注意的是可提供瞬間短路電流的大小。
關(guān)鍵詞: 所屬欄目:元器件知識(shí)
光耦驅(qū)動(dòng)芯片HCPL-316J是Agilent公司[編者注:2014年8月更名為keysight(是德)公司]生產(chǎn)的柵極驅(qū)動(dòng)電路產(chǎn)品之一,可用于驅(qū)動(dòng)150A/1200V的IGBT,開(kāi)關(guān)速度為0.5?s,有過(guò)流
關(guān)鍵詞: 所屬欄目:元器件知識(shí)
GC4931F/S 是一款三相無(wú)刷直流電機(jī)預(yù)驅(qū)動(dòng)芯片。 芯片可以驅(qū)動(dòng)N型功率MOSFET,最高電源到 36V。芯片狀態(tài)切換邏輯受三個(gè)相位差為 120°的霍爾輸入確定。兼容替代A4931,MS4931芯片集成固定衰減時(shí)間的脈沖調(diào)制來(lái)控制電流并且抑制勵(lì)磁涌流;堵轉(zhuǎn)保護(hù)時(shí)間可調(diào);過(guò)溫保護(hù),過(guò)壓監(jiān)測(cè),同步整流等等。其中內(nèi)置的同步整流器通過(guò)在衰減周期內(nèi),打開(kāi)合適的低內(nèi)阻的開(kāi)關(guān)管以取代反向續(xù)流二極管來(lái)降低功耗。當(dāng)芯片監(jiān)測(cè)到過(guò)壓時(shí)芯片會(huì)關(guān)斷同步整流以減小變化電流引起的電源電壓波動(dòng)。
GC4931F/S 的邏輯輸入腳有
關(guān)鍵詞: 所屬欄目:集成塊資料
首先看看,GC9110T 是一款 12V 直流電機(jī)驅(qū)動(dòng)芯片,為攝像機(jī)、消費(fèi)類(lèi)產(chǎn)品、玩具和其他低壓或者電池供電的運(yùn)動(dòng)控制類(lèi)應(yīng)用提供了集成的電機(jī)驅(qū)動(dòng)解決方案。芯片一般用了驅(qū)動(dòng)一個(gè)直流電機(jī)或者使用兩顆來(lái)驅(qū)動(dòng)一個(gè)步進(jìn)電機(jī)。GC9110T 是 GC9110(低壓 6V 驅(qū)動(dòng))的 12V 升級(jí)版本,客戶根據(jù)應(yīng)用電壓與成本
來(lái)選擇芯片。GC9110T 可以工作在 3.8~12V 的電源電壓上,能提供高達(dá) 1.5A 持續(xù)輸出電流或則2.5A 峰值電流,睡眠模式下功耗小于 1uA。GC9110T 具有 PWM(IN/IN
關(guān)鍵詞: 所屬欄目:集成塊資料
GC8548 是一款雙通道 12V 直流電機(jī)驅(qū)動(dòng)芯片,為攝像機(jī)、消費(fèi)類(lèi)產(chǎn)品、玩具和其他低壓或者電池供電的運(yùn)動(dòng)控制類(lèi)應(yīng)用提供了集成的電機(jī)驅(qū)動(dòng)解決方案。芯片一般用來(lái)驅(qū)動(dòng)兩個(gè)直流電機(jī)或者驅(qū)動(dòng)一個(gè)步進(jìn)電機(jī)。GC8548 可以工作在 3.8~12V 的電源電壓上,每通道能提供高達(dá) 1.5A 持續(xù)輸出電流或者 2.5A 峰值電流,睡眠模式下功耗小于1uA。GC8548 具有 PWM(IN/IN)輸入接口,與行業(yè)標(biāo)準(zhǔn)器件兼容,并具有過(guò)溫保護(hù),欠壓保護(hù),短路保護(hù),過(guò)流保護(hù)等功能。GC8548 內(nèi)置 LDO,不需要邏輯電源
關(guān)鍵詞: 所屬欄目:電子報(bào)
首先看看,GC9110T 是一款 12V 直流電機(jī)驅(qū)動(dòng)芯片,為攝像機(jī)、消費(fèi)類(lèi)產(chǎn)品、玩具和其他低壓或者電池供電的運(yùn)動(dòng)控制類(lèi)應(yīng)用提供了集成的電機(jī)驅(qū)動(dòng)解決方案。芯片一般用了驅(qū)動(dòng)一個(gè)直流電機(jī)或者使用兩顆來(lái)驅(qū)動(dòng)一個(gè)步進(jìn)電機(jī)。GC9110T 是 GC9110(低壓 6V 驅(qū)動(dòng))的 12V 升級(jí)版本,客戶根據(jù)應(yīng)用電壓與成本
來(lái)選擇芯片。GC9110T 可以工作在 3.8~12V 的電源電壓上,能提供高達(dá) 1.5A 持續(xù)輸出電流或則2.5A 峰值電流,睡眠模式下功耗小于 1uA。GC9110T 具有 PWM(IN/IN
關(guān)鍵詞: 所屬欄目:電子報(bào)
完全兼容A4931、MS4931,價(jià)格實(shí)惠。
關(guān)鍵詞: 所屬欄目:集成塊資料
描述
GC9110 是一款低壓 5V 全橋驅(qū)動(dòng)芯片,為攝像機(jī)、 消費(fèi)類(lèi)產(chǎn)品、 玩具和其他低壓或者電池供電的運(yùn)動(dòng)控制類(lèi)應(yīng)用提供了集成的電機(jī)驅(qū)動(dòng)解決方案。GC9110 能提供高達(dá) 1.3A 的持續(xù)輸出電流。 可以工作在 1.2~7V 的電源電壓上。GC9110 具有 PWM(IN/IN) 輸入接口,與行業(yè)標(biāo)準(zhǔn)器件兼容, 并具有過(guò)溫保護(hù)功能。GC9110S 是 SOP8pp 封裝, GC9110D 是DFN 封裝。
關(guān)鍵詞: 所屬欄目:集成塊資料
IR2110采用HVIC和閂鎖抗干擾CMOS制造工藝,DIP14腳封裝。具有獨(dú)立的低端和高端輸入通道;懸浮電源采用自舉電路,其高端工作電壓可達(dá)500V,dv/dt=±50V/ns,15V下
關(guān)鍵詞: 所屬欄目:其他文章