資料介紹
在項目中原理圖如下:如果不能保證I/O的輸出性能可以根據(jù)情況增加上拉或者下拉電阻。切入正題:在程序里面這個蜂鳴器的驅(qū)動就是個高低電平驅(qū)動。高電平三極管導通、蜂鳴器發(fā)聲,低電平三極管關(guān)斷、蜂鳴器不發(fā)聲。這的確很簡單,程序上最開始我是這樣寫的:當然,如果單片機沒有很好的I/O跳變函數(shù)也可以這樣修改:這里稍作解釋:1)函數(shù)功能:蜂鳴器發(fā)聲驅(qū)動傳入參數(shù):蜂鳴器發(fā)聲的次數(shù)2)傳入的次數(shù)cnt需要再函數(shù)內(nèi)翻倍。這是因為傳入的參數(shù)是想讓蜂鳴器連續(xù)的發(fā)cnt聲。但是蜂鳴器除了發(fā)聲還有不發(fā)聲的時候。也就是說蜂鳴器每響一次都需要關(guān)閉一次,如果沒有關(guān)閉操作肯定就不會出現(xiàn)響幾聲而是連續(xù)的響一聲,這個也很容易推理。3)在while循環(huán)完之后需要加一個蜂鳴器關(guā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可以看出其實在while之后蜂鳴器狀態(tài)已經(jīng)是關(guān)閉的了,但是保險起見,確保函數(shù)調(diào)用完之后蜂鳴器是關(guān)閉的狀態(tài)。比如第一個函數(shù)I/O跳變的就更需要保障了,因為代碼上只能看出跳變,看不到跳變之后的狀態(tài)。至此,一個簡單的蜂鳴器電路和驅(qū)動程序就都溫習完了,接下來上干貨:在寫程序的時候很多時候講究程序的效率,比如這個蜂鳴器驅(qū)動,驅(qū)動過程中會降低效率,厲害的人很快能看出來,就是這個Delay延時的問題。但是上面也說了,不延時也是不行的。所以趨于效率我嘗試著換了一種方法驅(qū)動蜂鳴器。代碼如下:實現(xiàn)起來也很簡單,簡單說下原理:1)首先是提供蜂鳴器驅(qū)動的I/O配置,2)其次是定時器的配置3)最后是定時器中斷函數(shù)實現(xiàn)我選用的定時器是項目單片機中最簡單的一個定時器,配制成1ms中斷,能夠提供溢出中斷。其實這個定時器我常用做計系統(tǒng)運行時間Systick_ms。但是該項目對這個系統(tǒng)時間沒有用到,那就用這個定時器做文章把。實現(xiàn)方法:1、同樣函數(shù)在調(diào)用蜂鳴器驅(qū)動的時候接口是一樣的,傳入的參數(shù)還是蜂鳴器的響聲次數(shù)。2、函數(shù)體變了,這里改成了兩個變量的賦值,第一個BELL_CNT同普通方法中的cnt2,這里不再贅述。第二個是FLAG_BELL是用來保存蜂鳴器是否需要驅(qū)動的狀態(tài)變量。所以既然是調(diào)用驅(qū)動函數(shù),那肯定這個變量要為真。3、定時器中斷函數(shù)里面加上了一個靜態(tài)變量NOW,他的作用就是和Systic_ms產(chǎn)生一個50ms的時間片,干嘛用?肯定是給蜂鳴器開關(guān)之間的延時用咯。模擬軟件延時嘛。然后再來分析下這段代碼:1)首先這個NOW和Systic_ms是無條件需要賦值保證50ms時間片的。對應的代碼為NOW=Systick_ms+50;2)判斷蜂鳴器驅(qū)動狀態(tài)變量是不是真,如果不為真就關(guān)閉蜂鳴器,這個也是無條件的。3)如果狀態(tài)變量為真:蜂鳴器先跳變Bell_Tog();當然如果沒有這個跳變函數(shù)也可以用上述的判斷cnt的方法,就不多寫了都是一樣的。同時次數(shù)自減BELL_CNT--;同時判斷是不是減到0了,減到0了說明響完了啊,那就把狀態(tài)變量賦值為假。再次進來不管蜂鳴器是開著的還是關(guān)著的都會執(zhí)行關(guān)閉操作,這個跟上面說的保險一樣。4)最后,這兩個變量用的是全局變量,這里是以結(jié)構(gòu)體的形式呈現(xiàn)的,因為很多情況這兩個函數(shù)不在一個C里面。如果硬要寫在一個C可以忽略本條。(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 如何有效編程單片機有源蜂鳴器驅(qū)動?
- 單片機編輯庫三之蜂鳴器
- 51單片機 驅(qū)動有源/無源蜂鳴器+Proteus仿真
- 51單片機驅(qū)動蜂鳴器發(fā)聲教程(掃盲)
- 單片機如何關(guān)掉蜂鳴器_如何有效編程單片機有源蜂鳴器驅(qū)動
- 如何有效編程單片機有源蜂鳴器驅(qū)動資料下載
- AT89C52單片機對蜂鳴器的設(shè)計資料下載
- 使用單片機實現(xiàn)蜂鳴器播放音樂之八月桂花的程序免費下載 24次下載
- AVR單片機編程軟件和資料合集免費下載 45次下載
- 51單片機驅(qū)動蜂鳴器演奏音樂的程序和蜂鳴器的原理及有源與無源的區(qū)別
- 蜂鳴器的詳細介紹和單片機控制蜂鳴器的資料和程序免費下載
- 使用51單片機驅(qū)動蜂鳴器的代碼免費下載
- 單片機匯編蜂鳴器的程序資料免費下載 13次下載
- 單片機入門匯編程序之太陽跟隨系統(tǒng)的程序資料免費下載 7次下載
- 單片機驅(qū)動蜂鳴器原理與程序設(shè)計 8次下載
- fpga編程與單片機編程的區(qū)別 718次閱讀
- 蜂鳴器的介紹 如何控制蜂鳴器的工作? 2178次閱讀
- 蜂鳴器的簡介和使用單片機驅(qū)動蜂鳴器的資料和程序概述 7335次閱讀
- 如何自制一個AVR單片機ISP下載線 3895次閱讀
- 如何對IAR單片機編程軟件進行編譯優(yōu)化 9213次閱讀
- 單片機編程器是什么_單片機編程器應用 1.6w次閱讀
- AT89C52單片機實現(xiàn)喇叭驅(qū)動的設(shè)計 2.1w次閱讀
- 單片機的引腳圖及引腳功能_單片機簡易編程 5w次閱讀
- 單片機對蜂鳴器的驅(qū)動電路設(shè)計 1.8w次閱讀
- 51單片機對電磁式蜂鳴器的驅(qū)動 5124次閱讀
- 單片機驅(qū)動蜂鳴器產(chǎn)生警報聲的設(shè)計 5599次閱讀
- 單片機有源蜂鳴器驅(qū)動之效率編程 3754次閱讀
- 線編程技術(shù) STC單片機的下載線設(shè)計 3962次閱讀
- 如何使用單片機驅(qū)動蜂鳴器以及其驅(qū)動原理 3.8w次閱讀
- 單片機編程器作用及功能解析 1.4w次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1491次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機和 SG3525的程控開關(guān)電源設(shè)計
- 0.23 MB | 4次下載 | 免費
- 8基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關(guān)電源設(shè)計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多