目录
一、要求
二、实现
三、总结
消除按键的机械抖动
一、要求
当按下按键,LED灯闪烁,再按下,LED熄灭。。。。循环操作。
二、实现
编译环境:keil4
单片机:STC89c516RD文章来源:https://www.toymoban.com/news/detail-734298.html
#include <REGX52.H>
#include<INTRINS.H>
void Delay(int x) //@11.0592MHz
{
unsigned char i, j;
while(x--)
{
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
}
void flash()
{
P2_0=0;
Delay(50);
P2_0=1;
Delay(50);
}
int main()
{
int count=0;
while(1)
{
if(P3_1==0) //第一次按下:闪烁 第二次按下:灭
{ //第三次按下:闪烁 第四次按下:灭 .....
Delay(20);//消抖
while(P3_1==0);//按下未松开
Delay(20);//消抖
count++;//判断按下的次数
}
if(count%2!=0)//为奇数闪烁
flash();
else //为偶数熄灭
P2_0=1;
}
return 0;
}
三、总结
消除按键的机械抖动
按键的机械抖动会影响单片机对按键按下次数的判断。消除抖动的方法有硬件和软件两种方法。硬件方法常用RS触发器电路。软件方法是当检测出键闭合后执行一个10ms~20ms的延时程序,再一次检测键的状态,如仍保持闭合状态,则确认真正有键按下。 文章来源地址https://www.toymoban.com/news/detail-734298.html
到了这里,关于51单片机——一个独立按键控制LED的闪烁和熄灭的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!