采用ADC扫描实现一个IO上挂多个按键

电子说

1.3w人已加入

描述

有时候做设计时,我们会遇到外部按键比较多,IO口不够用的情况。这时大部分人会考虑通过其它芯片扩展IO,或者直接换一个IO口足够的MCU。其实,还有个方法可以实现一个IO上挂多个按键———即采用ADC扫描。

一、硬件及原理

电路图如下:

电路图

当没有按键按下时,ADC的电压为3.3V,由于不同按键对应的分压电阻不同,所以不同按键按下时,得到的ADC电压也不同。通过采样ADC的电压即可判断是哪个按键被按下。这种方式也支持组合按键。

设计时需要计算好每个按键的分压电阻阻值,使每个按键的分压值(包括组合按键)有较明显区别,便于ADC区分。

上面这种方式为并联式接法,还有一种串联式接法:

电路图

这种方式与上面的原理一样,但不同的是,这种方式不支持组合按键,且有按键优先级之分,当S8按下时下面的按键无效。即S8优先级最高,S9次之,以此类推。

理论上,上述两种方式都可以一个IO挂很多按键,但挂的越多,每个按键的分压后的电压就越接近,越不容易区分,导致误判。所以如果按键太多,还是要分多个ADC端口来采样。

另外,分压电阻的选择也要考虑ADC的输入阻抗。有些MCU内置ADC输入阻抗较低,电阻选择不合适可能导致采样误差较大。

二、消抖

上图中并联的10nF电容有利于消除一些高频噪声和抖动,但最好在软件上也做消抖处理。方式与普通按键类似,即多次采样判断。每次采样间隔10ms左右即可。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分