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

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

    关注

    6001

    文章

    43970

    浏览量

    620784
  • IO
    IO
    +关注

    关注

    0

    文章

    396

    浏览量

    38508
  • adc
    adc
    +关注

    关注

    95

    文章

    5648

    浏览量

    539423

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    应用多个单片机的液位监控仪

    声音报警,所有这些无疑需要很多的I/O端口来支持,单凭单片机是办不到的,需要扩展I/
    发表于 09-01 14:35

    利用N+1I/O实现N×N矩阵式键盘

    的作用。因此,探讨些键盘的特殊结构,用尽可能少的输入输出端口实现较多数量的按键数仍具有重要的应用价值。  有些特殊情况下,在组成最小的
    发表于 02-15 22:02

    单片机按键设计的四方案详解

    的优点是,只需要单片机ADC接口,根线,就能对多个
    发表于 09-05 15:32

    请问单片机I/O怎么实现30MHZ的通讯速度?

    目前 想 单片机I/O 模拟实现通讯协议,但需
    发表于 09-10 10:33

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

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

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

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

    .(四). 直接单片机I/O口驱动:多个I/O口并行工作驱动喇叭:

    .(四). 直接单片机I/O口驱动:多个I/O口并
    发表于 04-28 14:47

    单片机I/O口如何检测按键输入电平?

    单片机I/O口如何检测按键输入电平?
    发表于 10-26 07:01

    掌握单片机I/O口应用

    、综合设计实验1:片内并行I/O口应用1、实验目的:学习掌握单片机I/O口应用。2、实验工具:
    发表于 12-01 06:10

    如何使用ADC实现按键功能

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

    单片机i/o口控制电机

    在使用单片机的时候,难免有时候会遇到过压或者过流把单片机i/o引脚打坏,特别是在单片机i/
    发表于 01-18 08:39

    利用单片机I/O与中断系统

    、外部中断1、定时器/计数器0、定时器/计数器1、串行中断)。通过I/O篇与中断篇的学习,其实基本学习完51单片机了。应用篇的出现是为了更好的利用
    发表于 01-27 07:26

    矩阵键盘检测独立按键单片机连接

    4.2 矩阵键盘检测独立按键单片机连接时,每个按键都需要单片机
    发表于 02-22 06:14

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

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