盛建环境为其国产半导体工艺配套设备及关键零部件项目奠基
06-06
简介 在单片机领域,键盘输入是最常用的人机交互方式。
通常实用的键盘接口方式有:直接输入、矩阵结构、A/D模式、键盘与显示复用、并行扩展、串口扩展、专用键盘与显示控制设备等。
然而,这些解决方案很多都需要占用许多有限的空间。
微控制器的 I/O 端口。
本文提出一种基于ADC的高性价比键盘输入设计方法。
1 ADC按钮原理 ADC按钮原理图如图1所示,串联多个电阻进行分压。
不同的按钮进行不同电压的A/D转换。
根据 ADC 结果,MCU 可以识别按下的按钮。
例如,按下 key1 时,ADC 得到的电压值为: 理论上,只要相邻两个按键按下时的电压差在 ADC 能够区分的最小电压范围内,那么 MCU可以识别按下的是哪个键。
一个n位ADC可以识别2n个不同的电压值,即可以识别2n个按钮。
例如,8位ADC理论上可以串联一个电阻来识别按钮。
但在实际应用中,必须考虑很多外部因素,如电阻本身的误差、ADC误差、软件计算误差等,因此,实际能够识别的按钮数量往往小于理论值。
2 硬件设计 实际硬件电路如图2所示。
为了提高按键响应速度,减轻CPU扫描按键的负担,增加了比较器。
当按键按下时,比较器输出信号触发中断,在中断中第一次获取按键值。
这样不仅避免了将关键程序放在主程序中查询过多的循环而占用CPU资源,而且还提高了CPU的利用率。
当然,为了节省硬件成本,比较器也可以省略。
分压电阻越大,越省电。
但在实际应用中,需要考虑ADC的输入阻抗,且不能太大。
这是 10 kΩ 的经验值。
此外,电压比较器还必须考虑运算放大器的特性。
为了保证第一个按键按下时运放同相端电压低于4V,电阻R1的阻值必须较大,后续电阻可以相同。
价值。
为了减少按键的抖动,电路中串接了电容器C1。
当没有按键按下时,ADC相当于悬空,需要接上拉电阻。
这里R21取kΩ。
3 软件设计 软件设计是ADC按钮的处理核心。
一旦检测到的A/D值不准确,按钮就会得到错误的键值,造成误操作。

当按键数量较多时,这种现象会更加突出。
ADC按钮实际上是一个数据采集过程。
软件需要完成数据采集、数据处理、按钮分析三个步骤。
首先,您需要对按钮有一个了解。
它是一个机械开关。
按钮按下和弹起的过程中很难做到理想的导通和断开。
通常会有一个抖动的过程,需要一段时间才能真正关闭。
并断开连接。
在此设计中,使用带有自己的8通道10位ADC的MCUSTC90C52AD。
驾驶起来相对简单。
只需要配置几个寄存器就可以进行A/D转换,而且转换速度非常快。
ADC代码如下: 按键时,触发进入外部中断。
第一次延迟 20 毫秒。
如果存在抖动,抖动将被有效滤除。
读取第一个 ADC 值,延迟 20 ms(有效按键持续时间大于 80 ms),然后读取第二个 ADC 值。
只有两次时间之差在一定的小范围内,按键才会有效,否则就会出现抖动。
这些时间参数是根据实际测试得出的结果。
经过这样的软件处理,机械抖动被有效滤除。
程序代码如下: 平均后的ADC值不固定,会围绕某个中心点波动。
例如,重复按同一个按键,一个字节对应的数据是BF CO,如果数据波动到一定程度,有时会出现FF 00,说明按键有明显的抖动。
通过软件处理,如果ADC读取的两个值相差较大,则判定按键无效。
实际完整的键盘方案需要多次按键,记录ADC的平均值,建立数组keynum_tab[],然后给出上下波动范围n。
通过比较判断ADC值,即可得到关键值。
本例共有20个按钮,程序代码如下: 结论 该按钮方案经过实际应用测试,性能可靠,运行稳定; CPU占用率低,实时性好;仅使用1个I/O口,节省了单片机的I/O口资源,并且可以根据实际需要增加或减少按钮数量,具有一定的实用价值。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-18
06-18
06-18
06-18
06-06
06-18
最新文章
PCBA质检员的日常工作内容
美国法院裁定VoIP不属于电信服务,需征税
雷达嵌入式工控主板如何使用?工控主板故障分析
摩托罗拉在西班牙促销Z8手机
中宇买下了一台三星机型,品牌和规模是合作的主要原因
舰载军用加固计算机热设计
谷歌开始对仍由HTC生产的谷歌手机进行内部测试
英国EE分享LTE发展经验教训,面临终端-语音-回传三大挑战