有時(shí)候做設(shè)計(jì)時(shí),我們會(huì)遇到外部按鍵比較多,IO口不夠用的情況。這時(shí)大部分人會(huì)考慮通過其它芯片擴(kuò)展IO,或者直接換一個(gè)IO口足夠的MCU。其實(shí),還有個(gè)方法可以實(shí)現(xiàn)一個(gè)IO上掛多個(gè)按鍵———即采用ADC掃描。
一、硬件及原理
電路圖如下:
當(dāng)沒有按鍵按下時(shí),ADC的電壓為3.3V,由于不同按鍵對(duì)應(yīng)的分壓電阻不同,所以不同按鍵按下時(shí),得到的ADC電壓也不同。通過采樣ADC的電壓即可判斷是哪個(gè)按鍵被按下。這種方式也支持組合按鍵。
設(shè)計(jì)時(shí)需要計(jì)算好每個(gè)按鍵的分壓電阻阻值,使每個(gè)按鍵的分壓值(包括組合按鍵)有較明顯區(qū)別,便于ADC區(qū)分。
上面這種方式為并聯(lián)式接法,還有一種串聯(lián)式接法:
這種方式與上面的原理一樣,但不同的是,這種方式不支持組合按鍵,且有按鍵優(yōu)先級(jí)之分,當(dāng)S8按下時(shí)下面的按鍵無效。即S8優(yōu)先級(jí)最高,S9次之,以此類推。
理論上,上述兩種方式都可以一個(gè)IO掛很多按鍵,但掛的越多,每個(gè)按鍵的分壓后的電壓就越接近,越不容易區(qū)分,導(dǎo)致誤判。所以如果按鍵太多,還是要分多個(gè)ADC端口來采樣。
另外,分壓電阻的選擇也要考慮ADC的輸入阻抗。有些MCU內(nèi)置ADC輸入阻抗較低,電阻選擇不合適可能導(dǎo)致采樣誤差較大。
二、消抖
上圖中并聯(lián)的10nF電容有利于消除一些高頻噪聲和抖動(dòng),但最好在軟件上也做消抖處理。方式與普通按鍵類似,即多次采樣判斷。每次采樣間隔10ms左右即可。
審核編輯:湯梓紅
-
電路圖
+關(guān)注
關(guān)注
10356文章
10725瀏覽量
532872 -
mcu
+關(guān)注
關(guān)注
146文章
17317瀏覽量
352630 -
adc
+關(guān)注
關(guān)注
99文章
6533瀏覽量
545744 -
按鍵
+關(guān)注
關(guān)注
4文章
223瀏覽量
57657 -
IO口
+關(guān)注
關(guān)注
3文章
170瀏覽量
24193
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于GPIO的按鍵板實(shí)現(xiàn)方案
![基于GPIO的<b class='flag-5'>按鍵板實(shí)現(xiàn)</b>方案](https://file.elecfans.com/web1/M00/CA/AB/pIYBAF-LuXeAUtI3AABLwKGQ7sM396.png)
ADC實(shí)現(xiàn)一個(gè)IO上掛多個(gè)按鍵
單片機(jī)用一個(gè)I/O采集多個(gè)按鍵信號(hào)
用一條IO口實(shí)現(xiàn)兩個(gè)按鍵功能
絕對(duì)經(jīng)典2個(gè)IO口實(shí)現(xiàn)5個(gè)按鍵掃描
5個(gè)IO口掃描25個(gè)按鍵的解決方法
【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】一個(gè)ADC實(shí)現(xiàn)多個(gè)按鍵檢測(cè)
單片機(jī)如何用一個(gè)IO口采集多個(gè)按鍵信號(hào)?
如何使用ADC實(shí)現(xiàn)多按鍵功能
8個(gè)IO口產(chǎn)生49個(gè)按鍵
![8<b class='flag-5'>個(gè)</b><b class='flag-5'>IO</b>口產(chǎn)生49<b class='flag-5'>個(gè)</b><b class='flag-5'>按鍵</b>](https://file.elecfans.com/web2/M00/49/0F/pYYBAGKhtDaAItlQAAAWxw7npdE968.jpg)
5個(gè)IO口最多能掃描多少個(gè)按鍵
![5<b class='flag-5'>個(gè)</b><b class='flag-5'>IO</b>口最多能<b class='flag-5'>掃描</b>多少<b class='flag-5'>個(gè)</b><b class='flag-5'>按鍵</b>](https://file.elecfans.com/web2/M00/2F/A9/pYYBAGIEgKKACtoCAACepIrq7H4290.png)
如何實(shí)現(xiàn)單片機(jī)用一個(gè)I/O采集多個(gè)按鍵信號(hào)?
![如何<b class='flag-5'>實(shí)現(xiàn)</b>單片機(jī)用<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>I/O采集<b class='flag-5'>多個(gè)</b><b class='flag-5'>按鍵</b>信號(hào)?](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
矩陣按鍵掃描的實(shí)現(xiàn)原理
![矩陣<b class='flag-5'>按鍵</b><b class='flag-5'>掃描</b>的<b class='flag-5'>實(shí)現(xiàn)</b>原理](https://file.elecfans.com//web2/M00/9A/CE/poYBAGQhMieAc3LrAAAiSvYzMz4701.jpg)
硬件設(shè)計(jì)如何實(shí)現(xiàn)一個(gè)IO上掛多個(gè)按鍵?
![硬件設(shè)計(jì)如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>IO</b><b class='flag-5'>上</b><b class='flag-5'>掛</b><b class='flag-5'>多個(gè)</b><b class='flag-5'>按鍵</b>?](https://file1.elecfans.com/web2/M00/90/1A/wKgZomTVjJaAUJHJAABDqWehSbo518.png)
評(píng)論