按鍵抖動的處理方法(按鍵外部中斷)


當把按鍵設為外部中斷時,存在按鍵抖動問題:

  1. 一種情況是沒有按按鍵的時候,按鍵有時也會因為震動等原因誤觸發按鍵事件,引起程序誤判。對於這種按鍵抖動,解決方式有:
    1. 並上一個小電容(比如0.1uF)即可解決。
    2. 延時檢測:檢測到按鍵中斷后延時50ms判斷這個引腳電平,然后再做進一步處理。
  2. 還有一種情況是按下按鍵時,由於按鍵本身的結構或質量問題、操作者的發力問題等,在操作者按下一次按鍵的過程中,實際上觸發了數次按下-抬起的動作,引起程序誤判。對於這種按鍵抖動,解決方式有:
    1. 延時檢測:檢測到按鍵中斷后延時50ms判斷這個引腳電平,然后再做進一步處理。
    2. 禁用中斷:進入中斷后禁用中斷,處理完按鍵操作后再使能中斷。這需要兩個條件:沒有按鍵行為時不會有中斷發生;處理按鍵操作的時間足夠長,長於一次按鍵操作的時間(大概是幾百ms)。
  3. 總體來說,建議的解決辦法是:
    1. 按鍵兩端並聯一個0.1uF電容,可以大幅度減少抖動發生
    2. 程序中添加延時檢測:檢測到按鍵中斷后,過50ms左右檢測引腳電平。
      1. 如果中斷是檢測按鍵按下:如果檢測到高電平,說明剛剛發生了1型按鍵抖動,此次按鍵中斷忽略不計;如果是低電平,可以判斷發生了按鍵事件。另外,應在處理完按鍵事件后再清除按鍵事件標志,如此可以避免在處理過程中發生的2型抖動所引發的誤判。
      2. 如果中斷是檢測按鍵抬起:如果檢測到高電平,可以判斷發生了按鍵事件;如果是低電平,說明剛剛發生了2型按鍵抖動,此次按鍵中斷忽略不計,繼續等待抬起動作。檢測按鍵抬起時似乎難以判斷1型按鍵抖動,不過並上電容后基本不會發生這種抖動。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM