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

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

3天内不再提示

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

2oON_changxuemc 来源:未知 作者:易水寒 2018-10-03 18:40 次阅读

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

使用模数转换(ADC)的特点就可以实现单片机用一个I/O采集多个按键信号。

一、单片机的I/O口检测按键简说

我们知道,一般情况下单片机的一个I/O口作为普通I/O口的话,只能检测识别一个按键。

日常设计中,如果碰到按键数量较多的话,会采用行列式键盘,例如最常见的4X4矩阵键盘,这样可以实现用8个I/O口检测16个按键。

还有就是键盘接口,典型的是我们计算机上用的键盘,其采用PS/2接口,现在一般计算机上用的是USB接口的键盘。

另外还有使用串口或者IIC、SPI接口的键盘芯片,这些使用常见的串口、IIC、SPI通信协议实现。

但是这些都一个以上的I/O口,不是真正的用多个按键。

那么有没有更简单的办法,使用更少的I/O口资源检测更多的按键呢?

二、基于模数转换的AD键盘

我们知道按键检测实际上是检测连接按键的端口的高低电平值,在单个I/O口检测单个按键时,只是简单的判断连接按键的端口的电平是高电平(+5V)还是低电平(0V)。那么是否可以通过电平的微小变化来检测按键是否被按下呢?

下图为一个A/D键盘的原理图,从图中可以看出,当不同的按键被按下时,ADC端点处的电压不同,通过判断不同的电压值就可以判断出是那个按键被按下。

对于具有AD转换功能的单片机来说,直接接到一个AD通道即可。对于没有AD转换功能的单片机,可采用一个AD转换模块。

对于这种按键,有以下缺点:

1、对于同一点处的电压值,A/D多次采样的结果不可能完全相同。

2)、电阻的误差。电阻值由于电阻的精度和环境温度的原因,误差较大,所以A/D键盘各个按键点的分压不准确。

3)、为尽量减少误差,可以采取增加电阻精度、增加温度补偿等方法,另外在软件处理时候要注意消除按键抖动等因素,还要对实际转换值和标准值给出误差补偿。

4)、如果按键按下,经过A/D转换,若实际转换值在允许误差范围之内(需要实际测量各点电压,并计算各点电压平均值),则认为按键按下,否则程序不响应。

5)、实际试验过程中,还要考虑电阻的累积误差,选用精度越高的电阻,可分辨的按键数目越多。

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

    关注

    6050

    文章

    44687

    浏览量

    641152
  • IO
    IO
    +关注

    关注

    0

    文章

    473

    浏览量

    39653
  • adc
    adc
    +关注

    关注

    99

    文章

    6567

    浏览量

    546706

原文标题:如何实现单片机用一个I/O采集多个按键信号

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    控制关电的I/O口,如何实现彻底关电

    单片机应用系统中,常有用单片机I/O口来实现自关机(彻底关机)的功能。
    的头像 发表于 12-20 07:32 9402次阅读
    控制关电的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口,如何<b class='flag-5'>实现</b>彻底关电

    8051单片机的四组I/O端口

     单片机I/O端口是输入信号和输出信号的通道。8051单片机有P0、P1、P2、P3四组
    发表于 08-05 16:18 1.3w次阅读
    8051<b class='flag-5'>单片机</b>的四组<b class='flag-5'>I</b>/<b class='flag-5'>O</b>端口

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

    使用模数转换(ADC)的特点就可以实现单片机
    发表于 10-28 09:54 2017次阅读

    基于单片机的矩阵键盘检测案例

    /O端口资源,导致单片机与其它外部设备无法连接。在这种情况下,可以使用矩阵键盘,实现多个按键单片机
    的头像 发表于 10-31 14:35 1457次阅读
    基于<b class='flag-5'>单片机</b>的矩阵键盘检测案例

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

    按键信号采集方法,可以IO口采集
    发表于 11-26 16:51

    单片机I/O口的使用

    单片机I/O口的使用:对单片机的控制,其实就是对I/O口的控制,无论
    发表于 12-03 22:51 69次下载

    利用单片机多余I/O实现温度检测电路

    本文提供了种低成本的利用单片机多余I/O实现的温度检测电路,该电路非常简单,且易于
    发表于 10-10 11:08 3537次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>单片机</b>多余<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口<b class='flag-5'>实现</b>温度检测电路

    单片机I/O引脚实现A/D功能的原理与应用

    本文利用现行有些单片机输入,输出(IO)引脚的输入阻抗高、输 出驱动能力强的特性,分析了I
    发表于 03-30 17:02 9次下载

    如何通过I2C总线I/O实现系统的多个功能?

    随着单片机控制系统的不断扩大以及控制功能不断增多,有限的单个单片机通用I/O口已不能满足同系统中控制
    的头像 发表于 08-30 10:05 6599次阅读
    如何通过<b class='flag-5'>I</b>2C总线<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口<b class='flag-5'>实现</b>系统的<b class='flag-5'>多个</b>功能?

    单片机如何通过I/O实现断电自关机

    单片机应用系统中,常有用单片机I/O口来实现自关机(彻底关机)的功能。
    的头像 发表于 09-08 13:53 5597次阅读
    <b class='flag-5'>单片机</b>如何通过<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口<b class='flag-5'>实现</b>断电自关机

    单片机学习-矩阵按键

    目录矩阵按键介绍检测方法C51例程欢迎加QQ及邮件交流矩阵按键介绍 独立键盘与单片机连接时,每一个按键都需要
    发表于 12-31 19:37 15次下载
    <b class='flag-5'>单片机</b>学习-矩阵<b class='flag-5'>按键</b>

    单片机如何通过I/O实现断电自关机

    单片机应用系统中,常有用单片机I/O口来实现自关机(彻底关机)的功能。
    发表于 02-09 10:42 4次下载
    <b class='flag-5'>单片机</b>如何通过<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口<b class='flag-5'>实现</b>断电自关机

    单片机如何通过I/O实现断电自关机

    单片机应用系统中,常有用单片机I/O口来实现自关机(彻底关机)的功能。
    发表于 02-09 11:17 4次下载
    <b class='flag-5'>单片机</b>如何通过<b class='flag-5'>I</b>/<b class='flag-5'>O</b>口<b class='flag-5'>实现</b>断电自关机

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

    如何实现单片机I/O
    发表于 02-11 14:23 11次下载
    如何<b class='flag-5'>实现</b><b class='flag-5'>单片机</b><b class='flag-5'>用</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>采集</b><b class='flag-5'>多个</b><b class='flag-5'>按键</b><b class='flag-5'>信号</b>?

    基于51单片机的独立按键实现原理

    I/O口,I代表Inpout,O代表Output。前面的所讲的点亮LED,是单片机输出高低电平,从而达到控制LED;这
    的头像 发表于 10-31 17:45 1562次阅读
    基于51<b class='flag-5'>单片机</b>的独立<b class='flag-5'>按键</b><b class='flag-5'>实现</b>原理