单片机51,出现按一次按键,得到多次按键的情况,是由于没有做“消抖”处理的结果,在软件上做一些延时消抖处理后,一般就可以解决这个问题。比如:
keyscan(){
if(key==0)// 当按键按下
{
delay(10)//延时消抖
if(key==0)//如果按键任然按下
{
while(key==0)//等待按键抬起
.......
}
}
}
例如A B C键,每个按键用一个数字代码表示,如51,52,53。每次有按键按下时,将按下键的代码存入数组变量,每次存在递增一位变量里。然后再比较数组里的每一个数和你想要的顺序是否一样 如果你想按下的顺序是BCA,那么最后的判断是否符合的语句就是if( (i[0]==52)&&(i[1]==53)&&(i[2]==51) ){
//添加符合要求顺序时执行的代码
}
else
{
//添加不符合时执行的代码
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)