这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 求助:利用定时中断可以消除按键抖动吗?

共2条 1/1 1 跳转至

求助:利用定时中断可以消除按键抖动吗?

院士
2006-09-17 18:14:16     打赏
求助:利用定时中断可以消除按键抖动吗?



关键词: 求助     利用     定时     中断     可以     消除     按键     抖动    

院士
2006-12-22 22:43:00     打赏
2楼
问 各位大虾,小弟现在遇到了按键抖动问题。小弟的想法是这样的:先设定时器20ms溢出中断一次,在中断服务子程序中去读按键的状态,如果连续两次读取的状态都为按下,那么就可以确定按键确实是按下了。现在用到了3个按键。不知道这样是否行得通?解决过这个问题的高手给点意见,谢谢大家了! 1: 当然可以。 2: 利用定时中断可以消除按键抖动吗? 
你的想法是否為每隔20ms讀一次按鍵?這樣會不會漏掉按鍵?你所用按鍵彈性如何?把你的測試結果告訴大家,ok? 3: re:这个问题我也考虑了好久我现在做的程序就是用这种方法消抖的,但是总感觉效果不大好,我是这么做的:

定时中断每隔75MS扫描一次键盘状态,第一次扫描有按键按下n0=0,第二次扫描有按键按下n1=0;当n0=n1=0,则表示有按键按下,标志值key赋值,同时把把n0的值改为1,防止马上的扫描又判断为有按键.  

我的这个方式在程序中试过,感觉按键不是很灵敏,我想这个方法有公版的程序.不知哪位大侠能否赐教一二. 我的email:zhuzhenseu@163.com 4: 每隔10ms扫描一次不就行了?如果用75ms扫描一次,第一次扫描到有键按下时需再过75ms才会读到键值,这样相当于要75ms*2的时间才能得到一个键值,给人的感觉肯定会有点脱滞! 5: 搞清几个按键的过程标志即可每20ms检测一下键盘,如果有按键,就置位key_down,然后下20ms再次检测,如果按键还在(去抖),那么key_down就过渡到key_press,这时候就可以执行对应按键操作了;接下来以后每20ms检测一次按键是否抬起,如果抬起,就置位key_up,下20ms再次检测是否抬起(去抖),如果抬起就不管了。

如果要检测连续键,可以在key_press中进行,专门有个变量用于定时计数,每超过一定时间(200ms,第一次进入要700ms)就执行一次该键操作。 6: 感谢!问一下,如果按键机械性能比较好的话,是否可以不去抖动? 7: 大家可否有按键消抖的程序?贴出来,探讨一下!! 8: 利用定时中断可以消除按键抖动吗?按鍵去枓時間一般在10-20ms之間,依機械特性定.掃描時間周期在1ms左右比較合適. 9: 我一直就是这么做的,当然可以.用定时中断,20-50ms
在中断里面读键盘,直接读就可以的,不要去抖动的!
10: 可以一般的消抖都是中断,delay10mS然后判断。如果还是按下则执行相应程序。
我设计的是中断中只让它起动定时器。在定时器溢出中如果有按键按下则执行相程序 11: 如果键盘和显示用同一片MCU.我把显示做成子程序,检测键盘,如果有按键,就调用显示子程,再检测键盘,如果有按键序,进行相应处理,显示没有任何抖动. 12: 可以 13: OK没问题的
我一直这样用 14: Other way!为什么不考虑考虑用硬件电路解决呢?
去抖动电路很多的吗 15: 两次间隔10ms就可以了,就是这样的 16: 以你的开关用途而定,我检测机械开关,中断延时500ms检测一次 17: www.zlgmcu.com上有一篇文章可以借鉴http://www.zlgmcu.com/philips/yingrong/51lpc/p87lpc761_timerCTRL.pdf
利用P87LPC761单片机设计时间控制器

关于按键的处理可以看看 18: 每1ms到20ms一次,前一次没按下后一次按下则判为有按键我一直这么用,效果不错 19: 坚决不要这样,软件消抖很方便,不占多少资源

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]