藍橋杯按鍵消抖(矩陣鍵盤)

2021-10-10 13:30:30 字數 986 閱讀 7254

按鍵消抖的原因:

機械彈性開關,當機械觸點斷開、閉合時,由於機械觸點的彈性作用,乙個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,按鍵的抖動對於人類來說是感覺不到的,但對微控制器來說,則是完全可以感應到的,而且還是乙個很「漫長」的過程,因為微控制器處理的速度在「微秒」級,而按鍵抖動的時間至少在「毫秒」級。微控制器如果在觸點抖動期間檢測按鍵的通斷狀態,則可能導致判斷出錯,即按鍵一次按下或釋放被錯誤地認為是多次操作,從而引起誤處理。因此,為了確保微控制器對一次按鍵動作只作—次響應,就必須考慮如何消除按鍵抖動的影響。

消抖是為了避免在按鍵按下或是抬起時電平劇烈抖動帶來的影響。按鍵的消抖,可用硬體或軟體兩種方法。

硬體消抖:在鍵數較少時可用硬體方法消除鍵抖動。硬體消抖的典型做法是:採用r-s觸發器或rc積分電路。由於硬體消抖成本較高,一般採用軟體消抖。

軟體消抖:本文的主題就是介紹藍橋杯的矩陣鍵盤如何進行軟體消抖使用,根據按鍵的不同狀態,進行延時掃瞄消抖。下面時實現**,最好根據原理圖看這個函式。

unsigned

char

matr_key

(void

) status++

;break

;//狀態2:可能此時按鍵處於長按狀態,就一直在case2下

case2:

if((p3 ==

0xf0

&& p42 && p44)

) status++

;break

;//狀態3:判斷按鍵是否鬆開

case3:

if((p3 ==

0xf0

&& p42 && p44)

)break;}

return0;

//如果沒有按鍵按下就返回0

}

此函式10ms執行一次,進行過多次實驗,效果不錯。

藍橋杯題目對按鍵的要求可能會有多種變化,具體按鍵函式該怎麼寫要視情況而定

藍橋杯 獨立按鍵控制LED燈及消抖

按鍵在閉合或斷開時,觸點會有抖動現象,大部分是通過軟體處理,也可用硬體處理。include unsigned char num 0 unsigned char flag 0 標記值 bit s7 0,s6 0,s5 0,s4 0 bit 的取值範圍為1 10 void delayms int ms ...

FPGA Verilog按鍵消抖

硬體 鋯石a4開發板,altera ep4ce10f17c8 語言 verilog hdl 原理 機械式按鍵大概有20ms的抖動,所以檢測到按鍵變化後等20ms再判斷一次,如果鍵值相同才視為有效 頂級模組按鍵切換led顯示 module key led,key,clock,reset input c...

FPGA 按鍵消抖

今天簡單的說說按鍵消抖,原理特別好理解,其實就是延時,做一定時間的延時後取值一次,就能夠得到特定的消抖後的狀態了。為什麼要消抖?見圖 我們可以看到,但按鍵按下的那一刻,存在一段時間的抖動,同時在釋放按鍵的一段時間裡也是存在抖動的,這就可能導致狀態在識別的時候可能檢測為多次的按鍵,因為執行過程中普通的...