51单片机按键防抖这么处理

 我来答
xbbbcareer
推荐于2017-11-26 · 超过10用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:19.1万
展开全部
防抖,判断到端口高电平之后,延时10ms左右,再判断一次是否还是刚刚的高电平状态,如果是,再等待按键释放,即while(!key);。跳出这个循环之后就表示按键事件完成。那么就LED =~LED。
你的程序:if(key == 0) 如果是高电平触发,那么大部分时间都在进行LED取反,导致过快闪烁,你看不出变化,就看成了长亮。如果是低电平触发,你按下的每一时刻都在变化,释放之后,可能是亮的,也可能是灭的
更多追问追答
追问
可以帮我发个代码吗?C代码?
追答
if(!key)
{
delay(10);//延迟10ms
if(!key)//再判断,防抖 {
while(key);//等待释放
LED = ~LED;
}
}
一万光年MEGn0
2013-12-21 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1065万
展开全部
一般是检测到按键按下后,过一段时间再检测一次,如果两次都检测到了说明确实是按键按下了。

间隔时间 一般是10-20毫秒。
更多追问追答
追问
if(key==0)
LED=~LED
本来上面代码当按键一下灯亮,在按一下关,可是现在有事
可是现在按好几下也关不了是这么回事
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空空成水
2013-12-21
知道答主
回答量:26
采纳率:0%
帮助的人:14.9万
展开全部
通过延时。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式