使用模数转换(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)、实际试验过程中,还要考虑电阻的累积误差,选用精度越高的电阻,可分辨的按键数目越多。
一种新方法,它可以让用户查看细菌是否会对抗生素有响应
AVS编码与DSP实现的视频编码器
橙科微电子获2亿元C+轮融资,系高速光通信DSP芯片提供商
短信删除了如何恢复?这招真的超管用
中微爱芯电源产品线介绍
单片机用一个I/O采集多个按键信号
HTC技术过硬,但为何还是在手机市场败了?
直流电源和地线连接电容的作用
利用模拟开关降低继电器的功耗,Analog Switch L
国庆档最强阵容《攀登者》携手国货品牌素士致敬攀登者
中国联通有望受益的四大行业趋势分析
苹果推出第四代Apple Watch,首批科技媒体评价已出炉
半导体制冷技术应用--传染病POC分析仪
台积电赴美建厂背后有何深意?
5G时代到底那些行业非常吃香
家庭电路组成
小米武汉总部正式开园 从签约挂牌到建成使用仅两年时间
百度在北京发布小度智能音箱
瑞萨电子成功开发出第三代32位RX微控制器MCU,大幅度提升了稳定性
高性能电源保护电路