单片机51,出现按一次按键,得到多次按键的情况,怎么解决

如题所述

单片机51,出现按一次按键,得到多次按键的情况,是由于没有做“消抖”处理的结果,在软件上做一些延时消抖处理后,一般就可以解决这个问题。比如:

keyscan()
{
if(key==0)// å½“按键按下
    {
    delay(10);//延时消抖
    if(key==0)//如果按键任然按下
        {
        while(key==0);//等待按键抬起
        .......
        }
    }
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-20
在检测到按键时,延时10ms,再次检测,如果仍然检测到按键按下,才能说明有按键按下;
在按键检测函数结束时,添加等待按键释放程序,如while(key_valve!=0);
第2个回答  2012-05-19
if(key==0)
{
delayxms(15);//消除抖动
if(key==0)//再次判断
{
while(key==0);//等待按键释放
//这里添加按键按下释放后的执行代码。
}
}
相似回答