0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Dp1040 来源:嵌入式技术开发 2023-08-11 09:16 次阅读

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

一、硬件及原理

电路图如下:

da1cd172-37de-11ee-9e74-dac502259ad0.png

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

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

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

da4d41ae-37de-11ee-9e74-dac502259ad0.png

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

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

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

二、消抖

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

审核编辑:汤梓红

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

    关注

    10331

    文章

    10719

    浏览量

    528757
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17040

    浏览量

    350511
  • adc
    adc
    +关注

    关注

    98

    文章

    6458

    浏览量

    544217
  • 按键
    +关注

    关注

    4

    文章

    223

    浏览量

    57580
  • IO口
    +关注

    关注

    3

    文章

    169

    浏览量

    24004
收藏 人收藏

    评论

    相关推荐

    基于GPIO的按键板实现方案

    介绍简单的ADC实现,需要IC提供额外的ADC。但出于IC成本的考虑,无法提供这个的ADC
    的头像 发表于 10-18 11:43 3457次阅读
    基于GPIO的<b class='flag-5'>按键板实现</b>方案

    ADC实现IO多个按键

    有时候做设计时,我们会遇到外部按键比较多,IO口不够用的情况。这时大部分人会考虑通过其它芯片扩展IO,或者直接换一个IO口足够的MCU。其实
    发表于 09-01 13:25 2936次阅读

    单片机用I/O采集多个按键信号

    使用模数转换(ADC)的特点就可以实现单片机用I/O采集多个按键信号。
    发表于 10-28 09:54 1894次阅读

    IO实现按键功能

    功能,也不是不行,可以用电容充放电的方法实现ADC,从而用普通IO间接进行测量。(参见我之前关于键盘扫描的文章)这样用
    发表于 08-29 10:41

    绝对经典2IO实现5按键扫描

    通过两单片机IO口,即可实现5IO口的扫描,不太用任何外围器件的哦。。。。。。。。。。。。。
    发表于 12-05 14:07

    5IO扫描25按键的解决方法

    在这次“51深度研究,迈向高阶之路” 的活动中,我自认为看到这篇文章很有必要和大家分享下‘给你5IO,你能扫描多少
    发表于 03-08 10:22

    【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】ADC实现多个按键检测

    的行列扫描原理详解这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。在MCU管脚有限的情况下,矩阵按键大大的节省了I/O资源。3. ADC分压键盘利用电阻串联分压的原理实现
    发表于 11-14 13:34

    单片机如何用IO口采集多个按键信号?

    按键信号的采集方法,可以用IO口采集多个按键信号,不仅电路简单,而且编程比较容易
    发表于 11-26 16:51

    如何使用ADC实现按键功能

    节省IO口;本次介绍使用ADC实现按键功能,通过采集ADC不同的值,然后判断是按键几按下?因此
    发表于 01-07 06:32

    矩阵键盘上哪一个按键被按下可以采用扫描和行扫描

    矩阵键盘共有4行和4列共16按键组成,确定矩阵键盘上哪一个按键被按下可以
    发表于 01-13 08:27

    8IO口产生49按键

    本内容提供了8IO口产生49按键 ,详细展示了如何实现49
    发表于 08-08 11:17 178次下载
    8<b class='flag-5'>个</b><b class='flag-5'>IO</b>口产生49<b class='flag-5'>个</b><b class='flag-5'>按键</b>

    5IO口最多能扫描多少按键

    在做项目(工程)的时候,我们经常要用到比较多的按键,而且IO资源紧张,于是我们就想方设法地在别的模块中节省IO口,好不容易挤出一两IO口,
    的头像 发表于 02-10 11:02 4405次阅读
    5<b class='flag-5'>个</b><b class='flag-5'>IO</b>口最多能<b class='flag-5'>扫描</b>多少<b class='flag-5'>个</b><b class='flag-5'>按键</b>

    如何实现单片机用I/O采集多个按键信号?

    如何实现单片机用I/O采集多个按键信号 使用模数转换(ADC)的特点就可以
    发表于 02-11 14:23 11次下载
    如何<b class='flag-5'>实现</b>单片机用<b class='flag-5'>一</b><b class='flag-5'>个</b>I/O采集<b class='flag-5'>多个</b><b class='flag-5'>按键</b>信号?

    矩阵按键扫描实现原理

    之前做过很多仿真仪表盒,经常遇到盒子既有大量LED指示灯,又有很多按键的情况,主芯片使用的SiliconLabs的款单片机,管脚资源有限,如何应对如此多的指示灯和按键呢?当时选用了
    的头像 发表于 03-27 14:05 5976次阅读
    矩阵<b class='flag-5'>按键</b><b class='flag-5'>扫描</b>的<b class='flag-5'>实现</b>原理

    硬件设计如何实现IO多个按键

    有时候做设计时,我们会遇到外部按键比较多,IO口不够用的情况。这时大部分人会考虑通过其它芯片扩展IO,或者直接换一个IO口足够的MCU。其实
    发表于 08-11 09:16 1172次阅读
    硬件设计如何<b class='flag-5'>实现</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>IO</b><b class='flag-5'>上</b><b class='flag-5'>挂</b><b class='flag-5'>多个</b><b class='flag-5'>按键</b>?