亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 在程序里面這個蜂鳴器的驅動就是個高低電平驅動

在程序里面這個蜂鳴器的驅動就是個高低電平驅動

時間:2019-04-02 14:40:59來源:暢學單片機

導語:?切入正題:在程序里面這個蜂鳴器的驅動就是個高低電平驅動。高電平三極管導通、蜂鳴器發聲,低電平三極管關斷、蜂鳴器不發聲。這的確很簡單,程序上最開始我是這樣寫的:

在項目中原理圖如下:

1.jpg 

如果不能保證I/O的輸出性能可以根據情況增加上拉或者下拉電阻。

切入正題:在程序里面這個蜂鳴器的驅動就是個高低電平驅動。高電平三極管導通、蜂鳴器發聲,低電平三極管關斷、蜂鳴器不發聲。這的確很簡單,程序上最開始我是這樣寫的:

2.jpg 

當然,如果單片機沒有很好的I/O跳變函數也可以這樣修改:

3.jpg 

這里稍作解釋:

1)

函數功能:蜂鳴器發聲驅動

傳入參數:蜂鳴器發聲的次數

2)

傳入的次數cnt需要再函數內翻倍。這是因為傳入的參數是想讓蜂鳴器連續的發cnt聲。但是蜂鳴器除了發聲還有不發聲的時候。也就是說蜂鳴器每響一次都需要關閉一次,如果沒有關閉操作肯定就不會出現響幾聲而是連續的響一聲,這個也很容易推理。

3)

在while循環完之后需要加一個蜂鳴器關閉操作。

這里假如傳進的參數是2,目的是讓蜂鳴器響兩聲。根據程序的執行步驟:

cnt2變成4。

第1次while(4)蜂鳴器開cnt自減到3

第2次while(3)蜂鳴器關cnt自減到2

第3次while(2)蜂鳴器開cnt自減到1

第4次while(1)蜂鳴器關cnt自減到0

第5次while(0)跳出while

可以看出其實在while之后蜂鳴器狀態已經是關閉的了,但是保險起見,確保函數調用完之后蜂鳴器是關閉的狀態。比如第一個函數I/O跳變的就更需要保障了,因為代碼上只能看出跳變,看不到跳變之后的狀態。

至此,一個簡單的蜂鳴器電路和驅動程序就都溫習完了,接下來上干貨:

在寫程序的時候很多時候講究程序的效率,比如這個蜂鳴器驅動,驅動過程中會降低效率,厲害的人很快能看出來,就是這個Delay延時的問題。但是上面也說了,不延時也是不行的。所以趨于效率我嘗試著換了一種方法驅動蜂鳴器。

代碼如下:

4.jpg 

實現起來也很簡單,簡單說下原理:

1)首先是提供蜂鳴器驅動的I/O配置,

2)其次是定時器的配置

3)最后是定時器中斷函數實現

我選用的定時器是項目單片機中最簡單的一個定時器,配制成1ms中斷,能夠提供溢出中斷。其實這個定時器我常用做計系統運行時間Systick_ms。但是該項目對這個系統時間沒有用到,那就用這個定時器做文章把。

實現方法:

1、同樣函數在調用蜂鳴器驅動的時候接口是一樣的,傳入的參數還是蜂鳴器的響聲次數。

2、函數體變了,這里改成了兩個變量的賦值,第一個BELL_CNT同普通方法中的cnt2,這里不再贅述。第二個是FLAG_BELL是用來保存蜂鳴器是否需要驅動的狀態變量。所以既然是調用驅動函數,那肯定這個變量要為真。

3、定時器中斷函數里面加上了一個靜態變量NOW,他的作用就是和Systic_ms產生一個50ms的時間片,干嘛用?肯定是給蜂鳴器開關之間的延時用咯。模擬軟件延時嘛。然后再來分析下這段代碼:

1)首先這個NOW和Systic_ms是無條件需要賦值保證50ms時間片的。對應的代碼為NOW=Systick_ms+50;

2)判斷蜂鳴器驅動狀態變量是不是真,如果不為真就關閉蜂鳴器,這個也是無條件的。

3)如果狀態變量為真:蜂鳴器先跳變Bell_Tog();當然如果沒有這個跳變函數也可以用上述的判斷cnt的方法,就不多寫了都是一樣的。同時次數自減BELL_CNT--;同時判斷是不是減到0了,減到0了說明響完了啊,那就把狀態變量賦值為假。再次進來不管蜂鳴器是開著的還是關著的都會執行關閉操作,這個跟上面說的保險一樣。

4)最后,這兩個變量用的是全局變量,這里是以結構體的形式呈現的,因為很多情況這兩個函數不在一個C里面。如果硬要寫在一個C可以忽略本條。


聲明:本文為轉載類文章,如涉及版權問題,請及時聯系我們刪除(QQ: 2737591964),不便之處,敬請諒解!

標簽:

點贊

分享到:

上一篇:萬向聯軸器如何進行保養的

下一篇:工業內窺鏡在鐵路行業中應用

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.siyutn.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

相關資訊

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 凤阳县| 交城县| 呼玛县| 贺州市| 武功县| 新沂市| 兴海县| 黄平县| 宁国市| 潼关县| 余庆县| 沙雅县| 通江县| 同心县| 恩施市| 扬中市| 北海市| 南开区| 唐海县| 天峻县| 二手房| 东平县| 伊金霍洛旗| 抚松县| 武强县| 郁南县| 那坡县| 水城县| 沾化县| 鄯善县| 泽库县| 开化县| 德令哈市| 衡南县| 久治县| 满城县| 嘉兴市| 博客| 彭阳县| 筠连县| 武宣县|