51单片机按键防抖这么处理
3个回答
展开全部
防抖,判断到端口高电平之后,延时10ms左右,再判断一次是否还是刚刚的高电平状态,如果是,再等待按键释放,即while(!key);。跳出这个循环之后就表示按键事件完成。那么就LED =~LED。
你的程序:if(key == 0) 如果是高电平触发,那么大部分时间都在进行LED取反,导致过快闪烁,你看不出变化,就看成了长亮。如果是低电平触发,你按下的每一时刻都在变化,释放之后,可能是亮的,也可能是灭的
你的程序:if(key == 0) 如果是高电平触发,那么大部分时间都在进行LED取反,导致过快闪烁,你看不出变化,就看成了长亮。如果是低电平触发,你按下的每一时刻都在变化,释放之后,可能是亮的,也可能是灭的
更多追问追答
追问
可以帮我发个代码吗?C代码?
追答
if(!key)
{
delay(10);//延迟10ms
if(!key)//再判断,防抖 {
while(key);//等待释放
LED = ~LED;
}
}
展开全部
一般是检测到按键按下后,过一段时间再检测一次,如果两次都检测到了说明确实是按键按下了。
间隔时间 一般是10-20毫秒。
间隔时间 一般是10-20毫秒。
更多追问追答
追问
if(key==0)
LED=~LED
本来上面代码当按键一下灯亮,在按一下关,可是现在有事
可是现在按好几下也关不了是这么回事
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询