0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何消除按键的抖动现象

CHANBAEK 来源:工控小新 作者:工控小新 2023-11-10 11:44 次阅读

按键的介绍:

轻触开关是一种电子开关,使用时.轻轻按开关按钮就可使开关接通,当松开手时.开关断开。我们使用的开关如下图:

在一个理想的状态下,我们按下按键就会使得电位状态从低电平编程高电平,高电平编程低电平。

事实上,按键在按下和松开的过程中,会存在一个处于中间值的过程,这个时候会存在一个抖动现象。

为了消除按键的抖动现象,我们需要对这一电路进行一个修改。

对于消抖,我们可以通过两个途径进行消抖

1、硬件消抖:

采用一个RC延时充放电的电路进行消抖。

工作原理:在RC消抖电路中,电阻起到限制电流流动的作用,电容则用来储存电荷。当输入信号发生变化时,电容会通过电阻进行充放电,从而实现对信号的平滑处理。通过合理选择电阻和电容的数值,可以达到最佳的消抖效果。

RC消抖电路的工作方式可以分为两个阶段:充电阶段和放电阶段。

1,充电阶段:当输入信号由低电平变为高电平时,电容开始充电。由于电容的充电时间常数( t=RC),充电过程并不是瞬间完成的,而是需要一定的时间。在这个过程中,电容会逐渐储存电荷,输出信号也会逐渐稳定。当电容充满电荷后,输出信号达到稳定状态。

2.放电阶段:当输入信号由高电平变为低电平时,电容开始放电。放电过程同样需要一定的时间,电容会逐渐释放电荷。在这个过程中,输出信号会逐渐下降,直到达到低电平。放电过程的时间也由RC电路的时间常数决定。

图片

2、软件消抖:

当按键被按下时,通过延时时间来判断按键是否按下(即二次确认按键的状态)来进行消抖

图片

程序编写:

通过一个按键来控制一个灯的启停状态

#include

typedef unsigned char u8;

typedef unsigned int u16;

sbit led=P2^0;

sbit K1=P3^1;

void delay(u16 i) //延时函数

{

while(i--);

}

void key()

{

if(K1==0)

{

delay(1000); //消抖

if(K1==0)

{

led=~led;

}

while(!K1); //判断按键是否松开

}

}

void main()

{

while(1)

{

key();

}

}

现象展示:

1、当我们按下按键时,那么LED灯亮

图片

2、当我们再次按下按键时,LED灯熄灭

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RC
    RC
    +关注

    关注

    0

    文章

    214

    浏览量

    48314
  • 电子开关
    +关注

    关注

    5

    文章

    94

    浏览量

    32636
  • 按键
    +关注

    关注

    4

    文章

    220

    浏览量

    57340
  • 消抖电路
    +关注

    关注

    0

    文章

    5

    浏览量

    8536
  • 轻触开关
    +关注

    关注

    0

    文章

    61

    浏览量

    1203
收藏 人收藏

    评论

    相关推荐

    verilog写cpld的程序如何消除按键抖动

    verilog写cpld的程序如何消除按键抖动
    发表于 04-02 09:22

    关于按键抖动问题的解决

    电路图如下,,左侧按钮按下后给74LS192提供脉冲信号,但实物焊接时却存在按下一次按钮,192多次计数。是因为选用的按钮存在按键抖动,按下一次按钮会提供多个脉冲信号,让192多次计数吗?如果是,有什么办法能消除这种
    发表于 06-25 02:31

    消除按键抖动的两种方法分享

      按键也是机械装置,在按下或放开的一瞬间会产生抖动,如下图:    消除方法有两种:  软件除抖和硬件除抖,其中硬件除抖是应用了电容对高频信号短路的原理。  软件除抖是检测出键闭合后执行一个延时
    发表于 09-02 17:52

    如何通过软件编程实现消除键盘的抖动

    如何通过软件编程实现消除键盘的抖动?记文本答:由于按键是机械开关结构,所以当用手按下其中-一个键时,往往会出现所按键在闭合位置和断开位置之间发生跳几下后才会稳定到闭合状态的情况。在释放
    发表于 07-22 08:24

    单片机如何消除按键抖动

    单片机如何消除按键抖动
    发表于 10-21 09:29

    按键抖动现象

    C51单片机入门——按键按键抖动现象按键按下后抬起有效按键
    发表于 11-18 09:05

    如何消除按键抖动的影响

    ,从而引起误处理。因此,为了确保单片机对一次按键动作只作—次响应,就必须考虑如何消除按键抖动的影响。按键读取识
    发表于 01-17 07:46

    运用外部中断函数消除按键抖动

    目的实现:按键数码管数字加减,运用外部中断函数,消除按键抖动***仿真c代码#includecode unsigned char SEG[]={0XC0
    发表于 03-02 06:31

    按键弹跳消除模块的原理及应用

    按键在数字电路设计中经常用到。按键的弹跳现象是数字系统设计中存在的客观问题。按键是机械触点,当接触点断开或闭合时会产生抖动。为使每一次
    发表于 07-31 09:18 2922次阅读
    <b class='flag-5'>按键</b>弹跳<b class='flag-5'>消除</b>模块的原理及应用

    按键弹跳消除模块的程序设计与应用

    按键开关是电子设备人机交互的主要器件之一。按键大多是机械式开关结构,由于机械式开关的核心部件为弹性金属簧片,因而在开关切换的瞬间会在接触点出现来回弹跳的现象。对于灵敏度比较高的电路,这种弹跳
    的头像 发表于 01-07 08:45 2431次阅读
    <b class='flag-5'>按键</b>弹跳<b class='flag-5'>消除</b>模块的程序设计与应用

    外部中断的按键抖动按键消抖)

    当我们写完一个外部中断程序测试时,例如按键计数和按键点亮led灯,我们可能会遇到一次按键按下松开却触发了多次外部中断,这是因为按键抖动的存在
    发表于 11-22 15:36 26次下载
    外部中断的<b class='flag-5'>按键</b><b class='flag-5'>抖动</b>(<b class='flag-5'>按键</b>消抖)

    STM32F407 按键抖动 延时消抖

    ,从而引起误处理。因此,为了确保单片机对一次按键动作只作—次响应,就必须考虑如何消除按键抖动的影响。按键读取识
    发表于 01-18 10:30 4次下载
    STM32F407 <b class='flag-5'>按键</b><b class='flag-5'>抖动</b> 延时消抖

    开关抖动消除设计

    当按下和释放微动按键时,会由短时间的抖动现象才会到达想要的状态。
    的头像 发表于 12-26 16:25 1229次阅读

    单片机按键抖动的方法

    在使用按键时,我们想按一次按键,但在实际中却经常发现我们要的”一次“,实际上去并不是”一次“而可能是多次。为什么呢?这是因为,我们使用的机械按键,在我们按下时,并非只是接触一次,因为存在机械
    的头像 发表于 11-02 15:16 2019次阅读
    单片机<b class='flag-5'>按键</b>去<b class='flag-5'>抖动</b>的方法

    rs触发器消除按键抖动的原因

    按键抖动是指由于按键接点的不完美接触而导致的按键信号在短时间内多次跳变的现象。在电子设备的设计与制造中,
    的头像 发表于 11-17 15:53 877次阅读