按键电路设计

本文介绍了按键电路设计中的关键问题——按键抖动及其处理方法,包括使用上拉电阻和消抖电容来确保单片机正确识别按键状态。讨论了独立按键和矩阵按键的常见设计方案,并提及了ADC按键设计,适用于少量按键的场景,同时强调了电阻选择和滤波的重要性。
摘要由CSDN通过智能技术生成

说起按键,这应该是最常见的人机交互方式了,几乎所有的电子产品都会带有,这篇文章带大家看看按键电路怎么设计

1. 按键抖动

在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按键的开关,就必须对按键的抖动进行处理。
按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应到的,而且还是一个很“漫长”的过程,因为单片机处理的速度在“微秒”级,而按键抖动的时间至少在“毫秒”级。
单片机如果在触点抖动期间检测按键的通断状态,则可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,从而引起误处理。因此,为了确保单片机对一次按键动作只作—次响应,就必须考虑如何消除按键抖动的影响。
在这里插入图片描述

按键抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。按键抖动会引起一次按键被误读多次。
为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
在处理按键抖动的程序中,必须同时考虑消除闭合和断开两种情况下的抖动。所以,对于按键消抖的处理,必须按最差的情况来考虑。机械式按键的抖动次数、抖动时间、抖动波形都是随机的。不同类型的按键其最长抖动时间也有差别,抖动时间的长短和按键的机械特性有关,按键输出的信号的跳变时间(上升沿和下降沿)最大是在20ms左右。按键一次闭合最短的时间大概是120ms。按键消抖的关键是提取稳定的低电平(或高电平)状态,滤除按键稳定前后的抖动脉冲。

2. 常见的按键设计方案

2.1 独立按键(低电平触发)

如下图所示为常见的低电平触发的按键设计,当没有按键按下时,由于上拉电阻R8的存在,此时USER_KEY处的电平为高电平,当按键按下时,USER_KEY直接与GND相连接,故此时USER_KEY为低电平。图中的R8为上拉电阻,一般选取1K、4.7K、10K的电阻,具体的电阻大小需要看芯片的灌电流大小。有些MCU内置有上拉电阻,在硬件设计时外部可加可不加,建议硬件上预留该电阻。
在这里插入图片描述
图示的C5为消抖电容, 该电容的存在可以减小机械抖动的影响。原理如下,红色为电压波形图,如果按键按下时,电容被按键短路了, 此时电容迅速放电(短路可以看做电阻很小很小的负载,RC放电的时间常数很小很小), 形成了图示中的T1端曲线,随后进入稳定状态,再按键松开的时刻,电源对C5进行充电由于此时需要经过R8,时间常数比T1端更大,所以曲线更加的缓一点,形成了T3曲线段。这就是消抖电容的原理
在这里插入图片描述

2.2 矩阵按键

矩阵按键的原理想必一定很熟悉了, 编程的规范就是循环扫描,这里不做过多的说明
在这里插入图片描述

2.3 ADC按键设计

ADC按键的设计可以大大的减少IO口的占用, 但是不适合用于大于4个的按键, 因为按键越多,误触就越大,而且对于电阻的选择也比较关键,如下图所示,当SW10按下是,R8和R12构成分压,此时ADC处的电压为3V左右, 当SW11按下时,此时R9与R12构成分压电路, ADC的电压约为2.2V, 依次类推.。在软件层面只需要通过ADC读取相应的电压,就可以判断相应的按键按下了。图中的C5起到了滤除干扰的作用。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f71f9c5b5ebf4cbcb39688eb9c8eca99.png

  • 16
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零涂

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值