一、前言
这幅图是按键的抖动与时间的联系
按键抖动:对于机械开关,当机械鮑点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。
二、控制LED的状态
就是让LED在稳定的状态下判断开关闭合,由前言我们已经得知了会产生抖动
两种消除抖动的方法:
1.硬件消抖,加一个电路,对抖动进行过滤
2.软件消抖,写个程序实现消抖
三、代码实现
由抖动规律图可知,独立按键按下达到稳定我们才做出判断,因此我们需要写一个延时,如果开关一直按下我们不需要打开LED灯,如果独立按键松开了,我们写一个延时消除抖动,再判断
#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
P2_0=~P2_0;
}
}
}
三、总结
我们需要先知道,我们写代码实现的是什么,然后想解决思路。
希望大家指出不足