資料介紹
蜂鳴器是很常見的設(shè)備,分為無源和有源兩種。根據(jù)項(xiàng)目需求選擇不同類型的蜂鳴器。最近的項(xiàng)目里有用到有源蜂鳴器對有源蜂鳴器。還是老一套,把電路板畫完,接著編程。在項(xiàng)目中原理圖如下:如果不能保證I/O的輸出性能可以根據(jù)情況增加上拉或者下拉電阻。切入正題:在程序里面這個(gè)蜂鳴器的驅(qū)動(dòng)就是個(gè)高低電平驅(qū)動(dòng)。高電平三極管導(dǎo)通、蜂鳴器發(fā)聲,低電平三極管關(guān)斷、蜂鳴器不發(fā)聲。這的確很簡單,程序上最開始我是這樣寫的:當(dāng)然,如果單片機(jī)沒有很好的I/O跳變函數(shù)也可以這樣修改:這里稍作解釋:1)函數(shù)功能:蜂鳴器發(fā)聲驅(qū)動(dòng)傳入參數(shù):蜂鳴器發(fā)聲的次數(shù)2)傳入的次數(shù)cnt需要再函數(shù)內(nèi)翻倍。這是因?yàn)閭魅氲膮?shù)是想讓蜂鳴器連續(xù)的發(fā)cnt聲。但是蜂鳴器除了發(fā)聲還有不發(fā)聲的時(shí)候。也就是說蜂鳴器每響一次都需要關(guān)閉一次,如果沒有關(guān)閉操作肯定就不會出現(xiàn)響幾聲而是連續(xù)的響一聲,這個(gè)也很容易推理。3)在while循環(huán)完之后需要加一個(gè)蜂鳴器關(guān)閉操作。這里假如傳進(jìn)的參數(shù)是2,目的是讓蜂鳴器響兩聲。根據(jù)程序的執(zhí)行步驟:cnt2變成4。第1次while(4) 蜂鳴器開 cnt自減到3第2次while(3) 蜂鳴器關(guān) cnt自減到2第3次while(2) 蜂鳴器開 cnt自減到1第4次while(1) 蜂鳴器關(guān) cnt自減到0第5次while(0) 跳出while可以看出其實(shí)在while之后蜂鳴器狀態(tài)已經(jīng)是關(guān)閉的了,但是保險(xiǎn)起見,確保函數(shù)調(diào)用完之后蜂鳴器是關(guān)閉的狀態(tài)。比如第一個(gè)函數(shù)I/O跳變的就更需要保障了,因?yàn)榇a上只能看出跳變,看不到跳變之后的狀態(tài)。至此,一個(gè)簡單的蜂鳴器電路和驅(qū)動(dòng)程序就都溫習(xí)完了,接下來上干貨:在寫程序的時(shí)候很多時(shí)候講究程序的效率,比如這個(gè)蜂鳴器驅(qū)動(dòng),驅(qū)動(dòng)過程中會降低效率,厲害的人很快能看出來,就是這個(gè)Delay延時(shí)的問題。但是上面也說了,不延時(shí)也是不行的。所以趨于效率我嘗試著換了一種方法驅(qū)動(dòng)蜂鳴器。代碼如下:實(shí)現(xiàn)起來也很簡單,簡單說下原理:1)首先是提供蜂鳴器驅(qū)動(dòng)的I/O配置,2)其次是定時(shí)器的配置3)最后是定時(shí)器中斷函數(shù)實(shí)現(xiàn)我選用的定時(shí)器是項(xiàng)目單片機(jī)中最簡單的一個(gè)定時(shí)器,配制成1ms中斷,能夠提供溢出中斷。其實(shí)這個(gè)定時(shí)器我常用做計(jì)系統(tǒng)運(yùn)行時(shí)間Systick_ms。但是該項(xiàng)目對這個(gè)系統(tǒng)時(shí)間沒有用到,那就用這個(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是用來保存蜂鳴器是否需要驅(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í)間片,干嘛用?肯定是給蜂鳴器開關(guān)之間的延時(shí)用咯。模擬軟件延時(shí)嘛。然后再來分析下這段代碼:1)首先這個(gè)NOW和Systic_ms是無條件需要賦值保證50ms時(shí)間片的。對應(yīng)的代碼為NOW=Systick_ms+50;2)判斷蜂鳴器驅(qū)動(dòng)狀態(tài)變量是不是真,如果不為真就關(guān)閉蜂鳴器,這個(gè)也是無條件的。3)如果狀態(tài)變量為真:蜂鳴器先跳變Bell_Tog();當(dāng)然如果沒有這個(gè)跳變函數(shù)也可以用上述的判斷cnt的方法,就不多寫了都是一樣的。同時(shí)次數(shù)自減BELL_CNT--;同時(shí)判斷是不是減到0了,減到0了說明響完了啊,那就把狀態(tài)變量賦值為假。再次進(jìn)來不管蜂鳴器是開著的還是關(guān)著的都會執(zhí)行關(guān)閉操作,這個(gè)跟上面說的保險(xiǎn)一樣。4)最后,這兩個(gè)變量用的是全局變量,這里是以結(jié)構(gòu)體的形式呈現(xiàn)的,因?yàn)楹芏嗲闆r這兩個(gè)函數(shù)不在一個(gè)C里面。如果硬要寫在一個(gè)C可以忽略本條。(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 如何有效編程單片機(jī)有源蜂鳴器驅(qū)動(dòng)?
- 51單片機(jī) 驅(qū)動(dòng)有源/無源蜂鳴器+Proteus仿真
- 51單片機(jī)驅(qū)動(dòng)蜂鳴器發(fā)聲教程(掃盲)
- 單片機(jī)如何關(guān)掉蜂鳴器_如何有效編程單片機(jī)有源蜂鳴器驅(qū)動(dòng)
- AT89C52單片機(jī)對蜂鳴器的設(shè)計(jì)資料下載
- 單片機(jī)有源蜂鳴器驅(qū)動(dòng)之效率編程資料下載
- AVR單片機(jī)編程軟件和資料合集免費(fèi)下載 45次下載
- 51單片機(jī)驅(qū)動(dòng)蜂鳴器演奏音樂的程序和蜂鳴器的原理及有源與無源的區(qū)別
- 蜂鳴器的詳細(xì)介紹和單片機(jī)控制蜂鳴器的資料和程序免費(fèi)下載
- 使用51單片機(jī)驅(qū)動(dòng)蜂鳴器的代碼免費(fèi)下載
- 蜂鳴器的原理介紹和有源無源的區(qū)別及51單片機(jī)使用蜂鳴器例程
- 使用單片機(jī)進(jìn)行控制蜂鳴器和弦音發(fā)音的程序資料免費(fèi)下載
- 單片機(jī)匯編蜂鳴器的程序資料免費(fèi)下載 13次下載
- 蜂鳴器的分類_單片機(jī)驅(qū)動(dòng)蜂鳴器_蜂鳴器的應(yīng)用 38次下載
- 單片機(jī)驅(qū)動(dòng)蜂鳴器原理與程序設(shè)計(jì) 8次下載
- fpga編程與單片機(jī)編程的區(qū)別 718次閱讀
- 蜂鳴器的介紹 如何控制蜂鳴器的工作? 2178次閱讀
- 蜂鳴器的簡介和使用單片機(jī)驅(qū)動(dòng)蜂鳴器的資料和程序概述 7335次閱讀
- 如何自制一個(gè)AVR單片機(jī)ISP下載線 3895次閱讀
- 如何對IAR單片機(jī)編程軟件進(jìn)行編譯優(yōu)化 9213次閱讀
- 單片機(jī)編程器是什么_單片機(jī)編程器應(yīng)用 1.6w次閱讀
- AT89C52單片機(jī)實(shí)現(xiàn)喇叭驅(qū)動(dòng)的設(shè)計(jì) 2.1w次閱讀
- 單片機(jī)的引腳圖及引腳功能_單片機(jī)簡易編程 5w次閱讀
- 單片機(jī)對蜂鳴器的驅(qū)動(dòng)電路設(shè)計(jì) 1.8w次閱讀
- 51單片機(jī)對電磁式蜂鳴器的驅(qū)動(dòng) 5124次閱讀
- 單片機(jī)驅(qū)動(dòng)蜂鳴器產(chǎn)生警報(bào)聲的設(shè)計(jì) 5599次閱讀
- 單片機(jī)有源蜂鳴器驅(qū)動(dòng)之效率編程 3754次閱讀
- 線編程技術(shù) STC單片機(jī)的下載線設(shè)計(jì) 3962次閱讀
- 如何使用單片機(jī)驅(qū)動(dòng)蜂鳴器以及其驅(qū)動(dòng)原理 3.8w次閱讀
- 單片機(jī)編程器作用及功能解析 1.4w次閱讀
下載排行
本周
- 1HFSS電磁仿真設(shè)計(jì)應(yīng)用詳解PDF電子教程免費(fèi)下載
- 24.30 MB | 128次下載 | 1 積分
- 2雷達(dá)的基本分類方法
- 1.25 MB | 4次下載 | 4 積分
- 3電感技術(shù)講解
- 827.73 KB | 2次下載 | 免費(fèi)
- 4從 MSP430? MCU 到 MSPM0 MCU 的遷移指南
- 1.17MB | 2次下載 | 免費(fèi)
- 5有源低通濾波器設(shè)計(jì)應(yīng)用說明
- 1.12MB | 2次下載 | 免費(fèi)
- 6RA-Eco-RA2E1-48PIN-V1.0開發(fā)板資料
- 35.59 MB | 2次下載 | 免費(fèi)
- 7面向熱插拔應(yīng)用的 I2C 解決方案
- 685.57KB | 1次下載 | 免費(fèi)
- 8愛普生有源晶體振蕩器SG3225EEN應(yīng)用于儲能NPC、新能源
- 317.46 KB | 1次下載 | 免費(fèi)
本月
- 12024年工控與通信行業(yè)上游發(fā)展趨勢和熱點(diǎn)解讀
- 2.61 MB | 763次下載 | 免費(fèi)
- 2HFSS電磁仿真設(shè)計(jì)應(yīng)用詳解PDF電子教程免費(fèi)下載
- 24.30 MB | 128次下載 | 1 積分
- 3繼電保護(hù)原理
- 2.80 MB | 36次下載 | 免費(fèi)
- 4正激、反激、推挽、全橋、半橋區(qū)別和特點(diǎn)
- 0.91 MB | 32次下載 | 1 積分
- 5labview實(shí)現(xiàn)DBC在界面加載配置
- 0.57 MB | 21次下載 | 5 積分
- 6在設(shè)計(jì)中使用MOSFET瞬態(tài)熱阻抗曲線
- 1.57MB | 15次下載 | 免費(fèi)
- 7GBT 4706.1-2024家用和類似用途電器的安全第1部分:通用要求
- 7.43 MB | 14次下載 | 免費(fèi)
- 8H橋中的電流感測
- 545.39KB | 7次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935113次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191360次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183329次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81578次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73804次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評論
查看更多