ADC实现一个IO上挂多个按键

ADC实现一个IO上挂多个按键,第1张

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

1.硬件及原理

电路图如下:

ADC实现一个IO上挂多个按键,3b88b6f8-290b-11ed-ba43-dac502259ad0.png,第2张

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

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

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

ADC实现一个IO上挂多个按键,3bad0468-290b-11ed-ba43-dac502259ad0.png,第3张

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

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

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

2.消抖

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

  审核编辑:汤梓红

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2998407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存