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

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

英特尔携手ARM共建“万物联云”愿景
医疗建筑中消防应急照明和疏散指示系统的设计
工业监控器和监控灌溉系统的应用场景
最糟糕的手机设计,iPhone全中
凯迪正大KDZD832智能蓄电池活化仪的特点
如何利用ADC的特点实现单片机用一个I/O采集多个按键信号?
Socket 939插槽CPU是什么
变频器运行的两个条件
单个晶体管实现短路保护
爱玩游戏的你还不看过来?魅族Flyme6 一月系统发布!
日本开发出新型空气极材料 可用于固体氧化物燃料电池实现高性能
Synopsys Virtualizer最新版本将VDK仿真性能提升多达5倍
小米与华为笔记本齐曝光 分别定位亲民与高端商务
新兴的FACE标准的供应商支持增加
微电网配电系统的工作原理、组成及应用
台达DVP系列PLC以太网通讯模块如何设置
科拉德安检工控机IPC-629设计原理及特点
中国铁塔采用13/8 、5/4双漏缆覆盖,实现三家运营商5G信号全覆盖
苹果A11芯片竟已开始生产?看来iPhone8不会跳票
用能量触发的电路断路器在一个以某种函数关系随感测负载电流而变化的时间间隔之后发生跳变