天天看點

一個IO挂多個按鍵怎麼實作?

有時候做設計時,我們會遇到外部按鍵比較多,IO口不夠用的情況。這時大部分人會考慮通過其它晶片擴充IO,或者直接換一個IO口足夠的MCU。其實,還有個方法可以實作一個IO上挂多個按鍵———即采用ADC掃描。

1.硬體及原理

電路圖如下:

一個IO挂多個按鍵怎麼實作?

當沒有按鍵按下時,ADC的電壓為3.3V,由于不同按鍵對應的分壓電阻不同,是以不同按鍵按下時,得到的ADC電壓也不同。通過采樣ADC的電壓即可判斷是哪個按鍵被按下。這種方式也支援組合按鍵。

設計時需要計算好每個按鍵的分壓電阻阻值,使每個按鍵的分壓值(包括組合按鍵)有較明顯差別,便于ADC區分。

上面這種方式為并聯式接法,還有一種串聯式接法:

一個IO挂多個按鍵怎麼實作?

這種方式與上面的原理一樣,但不同的是,這種方式不支援組合按鍵,且有按鍵優先級之分,當S8按下時下面的按鍵無效。即S8優先級最高,S9次之,以此類推。

理論上,上述兩種方式都可以一個IO挂很多按鍵,但挂的越多,每個按鍵的分壓後的電壓就越接近,越不容易區分,導緻誤判。是以如果按鍵太多,還是要分多個ADC端口來采樣。

另外,分壓電阻的選擇也要考慮ADC的輸入阻抗。有些MCU内置ADC輸入阻抗較低,電阻選擇不合适可能導緻采樣誤差較大。

2.消抖

上圖中并聯的10nF電容有利于消除一些高頻噪聲和抖動,但最好在軟體上也做消抖處理。方式與普通按鍵類似,即多次采樣判斷。每次采樣間隔10ms左右即可。

​​​​

   歡迎關注公衆号"嵌入式技術開發",大家可以背景給我留言溝通交流。如果覺得該公衆号對你有所幫助,也歡迎推薦分享給其他人。