关于按键消抖方法—软件消抖

在设计单片机按键输入的时候,进行按键消抖是防止按键输入被CPU误读多次的必要手段。

一、按键消抖方法(软件)

如果按键较多的情况下,常用软件方法消抖

(1)延时消抖(延时函数按键消抖)

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

缺点:程序在空跑,会浪费CPU资源、不够精准。

if(PXin(x)==KEY_PRESS)

{

    delay_ms(10);

    if(PXin(x)==KEY_PRESS)

    {

        //按键处理

    }

}

注:如果按键是用中断方式实现的,那就更不能在中断服务函数里面使用延时函数,因为中断服务函数最基本的要求就是快进快出!

(2)定时器消抖(定时按键消抖)

原理:按键采用中断驱动方式,当按键按下以后触发按键中断,在按键中断中开启一个定时器,定时周期为10ms,当定时时间到了以后就会触发定时器中断,最后在定时器中断处理函数中读取按键的值,如果按键值还是按下状态那就表示这是一次有效的按键。

图中 t1 ~ t3 这一段时间就是按键抖动,是需要消除的。设置按键为下降沿触发(由按键的电路决定),因此会在 t1、t2 和 t3 这三个时刻会触发按键中断,每次进入中断处理函数都会重新开器定时器中断,所以会在 t1、t2 和 t3 这三个时刻开器定时器中断。但是 t1 ~ t2 和 t2 ~ t3 这两个时间段是小于我们设置的定时器中断周期(也就是消抖时间,比如 10ms),所以虽然 t1 开启了定时器,但是定时器定时时间还没到 t2 时刻就重置了定时器,最终只有 t3 时刻开启的定时器能完整的完成整个定时周期并触发中断,我们就可以在定时器中断处理函数里面做按键处理了。

优点:节约CPU资源

缺点:消耗一个定时器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值