• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      單片機去鍵抖動程序的可移植性設計

      2014-09-25 03:05:38龔松顯王殷廷張愛民
      關鍵詞:處理程序中斷按鍵

      龔松顯,王殷廷,張愛民

      (總參通信訓練基地,宣化075100)

      引 言

      在單片機控制系統(tǒng)中,對按鍵操作進行去抖動處理,是整個系統(tǒng)設計中必須考慮的一個重要問題。目前常用的去鍵抖動設計方法與對應的硬件環(huán)境結合較為緊密,考慮到單片機硬件種類繁多,此實現(xiàn)方法可移植性差。文章通過使用定時器中斷,在軟件程序中實現(xiàn)了對按鍵抖動的處理,程序代碼可以在不同的單片機硬件環(huán)境中快速移植,縮短了項目開發(fā)的周期,增加項目的靈活性。

      1 按鍵抖動的原理描述

      單片機應用系統(tǒng)中的按鍵通常為機械彈性開關,由于機械觸點的彈性作用,其在實際的閉合及斷開瞬間,常常會產(chǎn)生如圖1所示的一連串電壓的抖動[1]。對按鍵處理的重要環(huán)節(jié)就是去抖動,即去除鍵按下和抬起瞬間的電壓抖動問題。如果對抖動不做任何處理,則會引起程序的誤操作,對整個系統(tǒng)產(chǎn)生較大的負面影響。

      圖1 按鍵電壓抖動波形

      對于常用的8051單片機,如果使用的是下降沿觸發(fā)中斷的工作方式,則在電壓低于0.7V時會產(chǎn)生一次觸發(fā)。在圖1中,如果A點的電壓高于0.7V,則在鍵按下的過程中會觸發(fā)單片機產(chǎn)生兩次中斷。在鍵釋放的階段,如果B點的電壓高于0.7V,而C點電壓低于0.7V,同樣會觸發(fā)單片機產(chǎn)生兩次中斷。按鍵抖動的時間長短與按鍵的機械特性、操作人員的按鍵動作和習慣有關,一般而言,認為抖動的時間大概為5~10ms。按鍵抖動會導致一次按鍵被誤判為多次,為了確保對按鍵動作的正確處理,必須去除按鍵抖動。

      2 常用的去鍵抖動硬件和軟件消除方法

      按鍵抖動的硬件消除方法有很多,如R-S去抖、積分型去抖、翻轉式去抖等[2],其設計原理在大量論文及書籍中均有介紹,這里不再贅述。硬件實現(xiàn)的方法只適合按鍵數(shù)目比較少、對項目要求比較高的情況。在實際的項目中,考慮到電路的復雜程度以及成本、體積等問題,常用的方法是軟件去抖動[3],其思路是:在按鍵處理程序中首先執(zhí)行一個延時函數(shù)產(chǎn)生5~10ms的延時,在前沿抖動消失后檢測按鍵的狀態(tài),如果保持閉合狀態(tài)電平,則認為真正有按鍵被按下。當檢測到按鍵釋放后同樣進行延時處理,讓后沿抖動消失后才轉入該鍵的處理代碼。以外部中斷的按鍵為例,代碼的一種C語言實現(xiàn)如下[4-5]:

      采用以上軟件去抖動的方法存在以下兩個問題:

      ①在代碼實現(xiàn)中,延時子函數(shù)空循環(huán),消耗了單片機CPU的時間,造成資源的浪費,程序的效率不高。

      ②代碼的可移植性不高。按鍵抖動的時間取決于按鍵的機械特性,按鍵開關的抖動波形、抖動次數(shù)、抖動時間都是隨機的,不同的按鍵抖動時間不同;不同的操作者按鍵動作習慣也會導致抖動的時間不同。綜合考慮以上因素,如果單片機系統(tǒng)的硬件有變化,或者代碼有移植的需求,則在新的硬件環(huán)境中必須對延時子函數(shù)進行調試,找出適合該硬件系統(tǒng)的延時時間,而這將增加程序調試的時間成本,不利于在不同硬件系統(tǒng)中進行快速移植。

      3 去鍵抖動程序的可移植性設計

      結合系統(tǒng)設計時對正常按鍵頻率的考慮,比如最快0.5s按鍵一次,可以在程序中使用定時器來控制按鍵抖動。具體的思路是:在軟件中定義一個全局變量,設定其初始值為0。當按鍵中斷處理程序被調用時,首先讀取該全局變量的值。如果變量值為0,即此時是第一次檢測按鍵抖動,將該變量置為1,同時啟動定時器并進行按鍵事件的處理;如果由于按鍵抖動導致按鍵中斷處理程序被重復調用時,在該全局變量的值為1的情況下就跳過按鍵事件處理代碼。另一方面,在定時器的中斷處理程序中,經(jīng)過設定的時間后將該全局變量重置為0,保證程序對下一次按鍵的正確處理。程序的流程圖如圖2所示。

      圖2 程序流程圖

      采取以上處理方法,雖然按鍵抖動會導致中斷處理程序被反復調用,但在定時器設定的時間內,中斷程序實質上只處理第一次按鍵事件,避免了對按鍵事件的重復處理以及使用延時子函數(shù)造成的空循環(huán),提高了CPU的執(zhí)行效率。當工程的硬件環(huán)境有變動時,根據(jù)項目對按鍵使用的要求,開發(fā)人員只需根據(jù)具體情況更改定時器的預設值即可,程序的其他部分保持不變,這樣就提高了程序的可移植性。程序框架的一種C語言實現(xiàn)如下:

      結 語

      筆者在工程項目中驗證了該設計方法實際可行,具有較好的靈活性和可移植性,對于類似的單片機去抖程序的開發(fā)具有一定的借鑒意義。

      [1] 曾旖,奚大順,李向陽.按鍵開關的抖動與消除方法[J] .電子世界,2005(9):55-56.

      [2] 方龍,肖獻保,李威.關于消除按鍵機械抖動的研究[J] .廣西輕工業(yè)計算機與技術,2008,1(1):92-105.

      [3] 肖廣安.一種軟件去除鍵抖動的方法[J] .單片機與嵌入式系統(tǒng)應用,2001(7):63-65.

      [4] 王為青,程國鋼.單片機Keil C51應用開發(fā)技術[M] .北京:人民郵電出版社,2007.

      [5] 劉文濤.MCS-51單片機培訓教程[M] .北京:電子工業(yè)出版社,2005.

      猜你喜歡
      處理程序中斷按鍵
      高速公路工程變更與計量支付處理程序的優(yōu)化方法
      基于有限狀態(tài)機的按鍵檢測程序設計
      電子制作(2021年3期)2021-06-16 03:14:26
      跟蹤導練(二)(5)
      千里移防,衛(wèi)勤保障不中斷
      解放軍健康(2017年5期)2017-08-01 06:27:44
      基于C++的數(shù)控加工通用后處理程序的開發(fā)應用研究
      企業(yè)危機公關管理問題分析
      一種多方向導光按鍵結構設計
      電子制作(2016年1期)2016-11-07 08:43:05
      按鍵的多種狀態(tài)檢測及消抖處理方法
      家電科技(2013年4期)2013-07-09 10:55:08
      地鐵直流系統(tǒng)中框架保護原理及處理程序
      AT89C51與中斷有關的寄存器功能表解
      德保县| 永城市| 郸城县| 孝义市| 永寿县| 高要市| 马鞍山市| 静海县| 赤壁市| 城步| 友谊县| 通山县| 松滋市| 扎囊县| 黑山县| 乐昌市| 萨嘎县| 铁岭县| 县级市| 宁武县| 清流县| 东兴市| 青海省| 承德市| 文登市| 枣阳市| 惠东县| 武川县| 巢湖市| 张家港市| 马关县| 武胜县| 边坝县| 日土县| 民县| 抚顺市| 长子县| 延川县| 武宁县| 建瓯市| 策勒县|