按键消抖--51单片机按键控制灯开关为例

本文介绍了单片机中消除按键抖动的软件算法,通过延迟函数实现。当检测到按键按下时,通过两次20毫秒的延时确保按键状态稳定,避免因弹片抖动导致的LED闪烁问题。该算法适用于51系列单片机,通过读取P3_1口来判断按键状态,并切换P2_0口控制LED0的亮灭。
摘要由CSDN通过智能技术生成

单片机的按键是通过按下弹片使电路接通/断开控制高低电位(默认为高),但实际操作时由于弹片抖动会导致出现灯闪烁的情况,因此需要算法消抖。dsa图1:实际按键时的高低电位变化(普中51为例)

举例:

试图通过按键控制LED0(D1)的亮灭

图2:MCU原理图

 

 图3:LED原理图

  图4:按键原理图

因此图2+3我们可知,D1对应管脚为P20,RXD对应寄存器为P31。因此可以有以下算法。

软件算法如下:

//预备函数Delay1ms( int xms)
while (1)
{
    if(P3_1==0)//确认操作者有按键操作
    { 
        Delay1ms(20);//消抖
        while (P3_1==0);//若操作者长时间按,此为0循环,没有任何操作,即状态不变
        Delay1ms(20);//松手后的消抖
        P2_0=~P2_0;//取反即亮灭转换  
    }    

}

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值