我想知道在单片机设计中,如果有按键操作如何用软件实现防抖?也就是大致的流程应该怎么实现,请各路高手指点一二!!!
很简单,你先判断按键状态,当检测到IO口按键状态发生变化以后,先不要着急处理,延时10ms左右,然后再次采集按键状态,如果两次按键状态不同就表示是抖动,你可以不需理会。如果两次按键状态相同那就表示是真的有按键事件。
楼上的方法是很常用的!实际就是判断按键电平持续的时间,时间长就认为是按键,时间短就认为是干扰抖动。
间隔10MS再判断一次,判断同一个按键如果状态一样,则按下.
RE 楼上 MBWQ 兄弟的 .............
还有,我见过的板基本上没有加电容的,现实中就是要节省成本di .........
(当然俺不是反对加电容........)
最好的方法是,使用示波器追踪按键的按下过程,
你就会发现到底是什么原因造成抖动,
应该如何处理。
比如用AD方法获取按键的时候,
只是延时不一定就能管用。
而且有时延时太多,用户手感不好。
要节省成本就不加电容,软件上搞个延时就行了,不用太精确,没必要用示波器去测量,估计一下就行了,一般10-20mS肯定够了。我的程序里都是延时10mS,很稳定的
楼主,这个每个人的环境都不同的呀,你可以设定一个延时值,然后实践一下不就行了。。。实践出真知阿!~
我明白了,谢谢各位大侠的指点,其实我采用的办法就是延时,说来不好意思,就是不太明白。至于加电容这个方法在我这个设计里是不可用的,谢谢大家了!!!!