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左右即可。

审核编辑:汤梓红

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

    关注

    10215

    文章

    10645

    浏览量

    511095
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16019

    浏览量

    343649
  • adc
    adc
    +关注

    关注

    95

    文章

    5652

    浏览量

    539484
  • 按键
    +关注

    关注

    4

    文章

    220

    浏览量

    57340
  • IO口
    +关注

    关注

    3

    文章

    164

    浏览量

    23757
收藏 人收藏

    评论

    相关推荐

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

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

    IO实现按键功能

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

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

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

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

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

    按键扫描专利图

    `各位大侠哥哥,请教各位,下面的图是怎么实现5IO实现扫描25
    发表于 06-27 23:44

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

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

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

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

    按键和LED复用IO口时程序该如何处理吧

    和LED复用IO口时,程序该如何处理吧。(讲已经讲过,我个人比较喜欢状态机编程,因此这里还是采用状态机编程的方法,来实现
    发表于 07-13 07:56

    使用独立按键进行控制IO

    到独立按键进行控制。通常独立按键需要使用IO
    发表于 01-05 06:29

    如何使用ADC实现按键功能

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

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

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

    io口对6按键按键扫描电路分析,有接触过的,帮帮忙

    我想请问这种按键扫描,配置时io口作为输出,两io
    发表于 09-19 11:56

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

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

    矩阵按键扫描实现原理

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

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

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