由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。按键一直有个抖动的问题需要考虑,影响到系统的稳定性和安全 性,对于商用产品更是如此,因此经过学习RS触发器以及数字逻辑之后,对相应的消除抖动进行了解查询,本文主要参考:

https://blog.csdn.net/SUR0608/article/details/104252861电容去抖

https://www.cnblogs.com/jwnydy/p/3899464.html 的硬件消抖

对按键的硬件消抖进行了一下了解,现对其总结如下:

对于单刀双掷开关,使用RS触发器进行硬件去抖。

原理:图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),按键也不会返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。

而实际应用当中,最常用的按键是两个接线端的按键。对于此类按键的硬件消抖方法有:

其原理是利用电容平波,再经过施密特反相器整形之后就得到了没有毛刺的脉冲波。

要么,就是简单的使用电容进行延时消抖。

最开始状态时按键未按下时,电容肯定先是已经被充满电然后开路,又因为电容C1左极板与接地,所以左右极板电位0v/5v,又因为没有按下按键,所以电路处于开路,单片机管脚P02处于高电平5v(电路开路与VCC相连/也与电容右极板相连);
②当按键按下时,有一段时间的机械抖动,此时按键SW1右边节点的电位是5v(也是单片机管脚P02的电位为5v),又因为按键与电容形成回路,所以电容会进行放电(电容是一个非线性元件,放电需要时间),但是机械抖动的时间和电容放电的时间不是完全一致,所以当电容放电放一部时间(假设可能放到4.5v时)机械抖动就已经结束,那么管脚的电平却是始终都是表现为高电平,所以CPU识别还是高电平未变,当按键彻底按下稳定接触后,很快就会将放电完毕将电容短路(左右极板的电位变成0v/0v),然后按键SW1右边节点电位接地(也就是管脚P02因为接地电势为0v),所以此时单片机管脚P02为低电平,放电延时;

同时可以考虑软件消抖:

一般不提倡硬件消抖,会给电路增加较多电容电阻,同时增加复杂度,选择软件消抖时通常根据实际的波形检测,将相应的检测延迟一段时间(该检测时间大于一般机械抖动时间)再检测,如刚开始检测到该图开关左侧的电平由低电平变为高电平时,过20ms后再进行检测,若依然是高电平,判定为按键按下,若电平还是为低电平判定为按键没按下。(软件消抖的程序实一般根据波形图进行实际编写的)

同时可以参考单片机里的消抖解释:http://www.51hei.com/bbs/dpj-133523-1.html

对于键盘的消抖介绍:https://blog.csdn.net/shenlei314/article/details/47785411?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2&spm=1001.2101.3001.4242

机械开关消抖方法汇总介绍相关推荐

  1. 小米路由器显示网络未连接到服务器,小米路由器4不能上网了如何解决?小米路由器4无法上网的解决方法汇总介绍...

    小米路由器4不能上网了如何解决?用户是=使用小米路由器4的时候忽然发现没网了,怎么办呢?接下来的文章中小编将会列举几种常见的问题,有兴趣的朋友可以阅读本文参考一下. 小米路由器4无法上网的解决方法汇总 ...

  2. C语言 按键抬起有效 代码,最好的按键扫描和消抖方法,适用于复合、长按、按下或抬起响应按键...

    刚参加工作的时候,看了一些同事采用的按键扫描和消抖方法,对比学校里和网上查到的按键处理,发现觉得不尽善尽美,有以下几点: 1. 消抖复杂,效率低.有人直接在电平判断后使用delay()函数,进行消抖, ...

  3. 一种相对高效的按键消抖方法

    按键软件消抖自我接触单片机开始就已经存在这个问题了,网上的办法无非是延时消抖和定时轮询.对于写裸机的我来说这两种方法都不可避免的会有资源浪费掉,今天突然有了灵感,想到了一种相对高效的办法来解决消抖问题 ...

  4. 管家显示服务器维修,服务器常见的11种基本故障及排查方法汇总介绍

    服务器启动.关闭过程有关的故障.启动是指从自检完毕到进入xx作系统应用界面这一过程中发生的问题;关闭系统是指从点击关闭按扭后到电源断开之间的所有过程.接下来的文章中小编将会带来11中排查方法,想了解的 ...

  5. 按键消抖及原理(硬件和软件方法详解)

    在设计单片机按键输入的时候,进行按键消抖是防止按键输入被CPU误读多次的必要手段. 一.按键抖动 按键接法 抖动时间的长短由按键的机械特性决定,一般为5ms-10ms.这是一个很重要的时间参数,在很多 ...

  6. Arduino 按键输入检测,消抖示例程序

    Arduino 按键输入检测,消抖示例程序 在按键未做输入信号检测的硬件时,避免不了需要对其进行消抖处理,消抖方法可以时硬件消抖或者软件消抖.物理消抖的办法有:在按键旁边并联一个电容的电路,来消抖或者 ...

  7. FPGA---多按键消抖检测

    在学习了单按键消抖方法后,按键消抖的关键点就是20ms的延时,这一点和单片机按键消抖的思路是一样的.但是FPGA的延时需要通过寄存器计数,这个是比较消耗内部资源的.如果要检测4个按键时,最简单的方法就 ...

  8. FPGA学习笔记---利用连续赋值语句延时功能实现按键消抖

    最近一直在学习FPGA,今天在学习延时语句时,发现了连续赋值的一个特点.在连续赋值语句中添加延时时,任何小于延迟值的输入变化都会被滤除而不会体现在输出上.比如  #10 B = A; 当A的变化小于1 ...

  9. 3D成像方法汇总(原理解析):双目视觉、激光三角、结构光、ToF、光场、全息...

    作者丨路人甲ing..@CSDN 来源丨https://blog.csdn.net/tyfwin/article/details/89110067 编辑丨3D视觉工坊 3D成像方法汇总介绍: 这里要介 ...

最新文章

  1. gecco 1.1.0稳定版发布,易用的轻量化爬虫
  2. 购物车的实现(jsp的session+Java的Map的结合)
  3. BootStrap的下载及使用方法
  4. 【PAT乙级】1092 最好吃的月饼 (20 分)
  5. NodeJs Express 4.x 入门
  6. 手机相机里面的m_荣耀V30 PRO详细评测:Matrix Camera相机矩阵开启5G视频时代
  7. 面试官:this和super有什么区别?this能调用到父类吗?
  8. 【功能业务篇】APP获取用户定位、传参经纬度思考
  9. 错误处理与调试[下]
  10. matlab trplot2,一知半解|MATLAB机器人建模与仿真控制(2)
  11. 微软更新Win10工具Media Creation Tool
  12. MCSA Windows Server 2016 Complete Study Guide, 2nd Edition 免积分下载
  13. LVM逻辑管理器(Logical volume Manager)
  14. cad文档服务器部署,云服务器安装cad
  15. 五人合伙最佳股份分配_五人合伙股权怎么分配?股权咨询?
  16. Tekla钢结构二次开发 第5节正交梁、螺旋梁以及工作平面
  17. MATLAB代码:储能参与调峰调频联合优化模型
  18. js my97 WdatePicker 联动触发change事件
  19. python读取mdb文件显示_Python学习笔记(读mdb文件)
  20. 给div加横向滚动栏,然后去修改滚动条的样式,以下只给chrome做了兼容。

热门文章

  1. 关于开源项目「基于ZigBee和STM32的智能家居控制系统」的使用说明
  2. 命令查看Linux服务器内存、CPU、显卡、硬盘使用情况
  3. 【flutter】应用瘦身优化包体积
  4. java中使用事务案例_Java事务处理全解析(四)—— 成功的案例(自己实现一个线程安全的TransactionManager)...
  5. 甘肃专升本计算机网络考点汇总
  6. javascript变量命名规范
  7. 测试开发学习之旅------进阶篇
  8. Android面试题---JNI
  9. a-upload自定义上传图片
  10. DeeCamp 2021冠军用“垃圾DNA”预测癌症,李开复:医疗是AI的下一个突破点