key单片机按键抖动

为什么会有按键抖动

  通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。

抖动时间

  抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。点击查看图片按键按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。按键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。

按键消抖

  按键的消抖,可用硬件或软件两种方法。

硬件消抖

在键数较少时可用硬件方法消除键抖动。

两个“与非”门构成一个RS触发器。

当按键未按下时,输出为0;当键按下时,输出为1。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。

软件消抖

按键较多,常用软件方法去抖

即检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。

时间: 2024-11-01 19:46:18

key单片机按键抖动的相关文章

单片机按键处理方式(一)——典型的按键处理方式

前言 按键处理是学习单片机的必修课之一.一次按键的过程,并非是一个理想的有一定宽度的电平脉冲,而是在按下.弹起过程中存在抖动,只有在中间阶段电平信号是稳定的.一次典型的按键过程是酱紫的: 在抖动过程中,电平信号高低反复变化,如果你的按键检测是检测下降沿或上升沿或者是用外部中断检测按键,都可能在抖动时重复检测到多次按键.这就是在未消抖的按一次键显示值加1的程序中,出现按一次键显示值+2.+3甚至加更多的原因. 对于按键消抖,常用的有硬件消抖和软件消抖.本文是我个人对按键处理的一些常见方法的总结,由

51单片机按键连击

51单片机按键双击 关键字:51单片机  按键双击 //hnrain 改 //适用于CEPARK 51开发板 /****************************************************************************************** *********************** www.cepark.com            电子园 按键高阶攻略设计大赛 名称:        2*4矩阵键盘扫描 (状态机) 功能:       

单片机按键处理框架

写过一段时间单片机程序,也看了一些单片机程序,书上的,网上的,基本都是非常原始的读取按键,延时判断,这些按键相关代码穿插于整个程序,着实不够美观,最重要的是不能复用,so俺就想做个按键框架,只需提供按键处理代码即可,言归正传,先简介一下几个文件,ringfifo.c提供了一个简单的环形缓冲队列,用以通知按键消息,key.c 实现的按键的框架处理(读取按键,调用按键处理函数),key_port.c 需提供底层硬件接口及用户的按键处理函数,目前支持的按键消息类型有4类:keyDown,keyRele

按键抖动的处理方法(按键外部中断)

当把按键设为外部中断时,存在按键抖动问题: 一种情况是没有按按键的时候,按键有时也会因为震动等原因误触发按键事件,引起程序误判.对于这种按键抖动,解决方式有: 并上一个小电容(比如0.1uF)即可解决. 延时检测:检测到按键中断后延时50ms判断这个引脚电平,然后再做进一步处理. 还有一种情况是按下按键时,由于按键本身的结构或质量问题.操作者的发力问题等,在操作者按下一次按键的过程中,实际上触发了数次按下-抬起的动作,引起程序误判.对于这种按键抖动,解决方式有: 延时检测:检测到按键中断后延时5

单片机按键扫描程序,仅三行代码(转)

以下假设你懂C语言,因为纯粹的C语言描述,所以和处理器平台无关,你可以在MCS-51,AVR,PIC,甚至是ARM平台上面测试这个程序性能.当然,我自己也是在多个项目用过,效果非常好的.      好了,工程人员的习惯,废话就应该少说,开始吧.以下我以AVR的MEGA8作为平台讲解,没有其它原因,因为我手头上只有AVR的板子而已没有51的.用51也可以,只是芯片初始化部分不同,还有寄存器名字不同而已.核心算法:unsigned char Trg;unsigned char Cont;void K

单片机按键长短按得识别原理

stm32f103 按键长短按得识别原理 需要一个定时器,用来计算按键按下的时间,可以一秒钟检测100次, 设置初始化为10ms的中断,比如使用定时4作为按键时间计算的定时器 比如我们需要4种模式,轻触,短按,长按,超级长按 #define clickTypeTouch 1 //轻触 #define clickTypeShort 2 //短按 #define clickTypeLong 3 //长按 #define clickTypeVeryLong 4 //非常长的长按 #define tim

单片机按键实现加减

工业相机专业术语整理

帧率:帧率(Frame rate)是用于测量显示帧数的量度.所谓的测量单位为每秒显示帧数(Frames per Second,简称:(FPS)或"赫兹"(Hz).每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数.高的帧率可以得到更流畅.更逼真的动画.一般来说30fps就是可以接受的,但是将性能提升至60fps则可以明显提升交互感和逼真感,但是一般来说超过75fps一般就不容易察觉到有明显的流畅度提升了.如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能

单片机独立按键与矩阵按键

独立按键 首先既然是检测输入,对于当然要使能上拉电阻,来检测变化.因为除了P0口外,P2,P3,P4都是内置上拉电阻的准双向IO口,作为输入前需要拉为高电平. 当有按键按下,致使单片机的某个引脚接地,变为低电平时,我们就认为这个按键按下了.当按键松开后,由于输入不会锁存,所以此时拉高的引脚回归到高电平. 独立按键的内部原理. 独立按键的4个引脚中,两两为一组.每一组的2个引脚是连在一起的,当按键按键时,2个组又连接了,也就是4个脚都连接一起了. 按键的很重要注意点就是消除抖动,消抖.因为人按下按