我用定时器扫描是不是就不用消抖了?

[复制链接]
9364|27
 楼主| mimi2011 发表于 2011-4-21 09:30 | 显示全部楼层 |阅读模式
一般消抖是按键--延时--按键确定---动作

那我如果设置定时器,比如没10ms扫描按键是否按下,这样的方法,是不是每次10ms到来时候如果有按键按下就直接动作就好了? 不用在延时了?

不知道我理解的对不对
原野之狼 发表于 2011-4-21 09:31 | 显示全部楼层
软件扫描的方式也有一个消抖的过程
joyme 发表于 2011-4-21 09:51 | 显示全部楼层
按键是个随机的事件,你怎么保证你10ms扫中的不是在按键抖动过程中的某一点?软件对按键处理不应该仅仅考虑消抖,还要考虑误按(轻触,按下的时间非常短)及干扰,所以应该做些滤波,而不是简单的延时
ayb_ice 发表于 2011-4-21 10:45 | 显示全部楼层
那也是消抖,只是实现方式不一样罢了
joyme 发表于 2011-4-21 11:29 | 显示全部楼层
消抖是开关的机械抖动,只有按下去自后一段时间有,而误按或干扰是随时可能出现的,所以不完全一样
yjhon 发表于 2011-4-21 12:35 | 显示全部楼层
10ms读一次与1ms读一次,都只是读了一次,都有可能是误读
lxc806705 发表于 2011-4-21 14:22 | 显示全部楼层
照样需要消抖,而且貌似消抖的程序也很简单一两句
月下狂想曲 发表于 2011-4-21 17:37 | 显示全部楼层
本帖最后由 月下狂想曲 于 2011-4-21 17:38 编辑

一般消抖是按键--延时--按键确定---动作

那我如果设置定时器,比如没10ms扫描按键是否按下,这样的方法,是不是每次10ms到来时候如果有按键按下就直接动作就好了? 不用在延时了?

------------------------------------------------------------

定时器中断:
如果(按健标志位=1);{按健确实已被按下}
如果(按健被按下);{按健标志位=1}
否则;{按健标志位=0}

-----------------------------------------------------------
这样,定时器中断进来两次可以了,如果10ms一个中断,那20ms后,就可以确认确实是否有按健按下。
lxc806705 发表于 2011-4-22 09:45 | 显示全部楼层
为啥你不想要消抖呢?我很不理解呀,消抖也不是麻烦的事情啊
swx2010 发表于 2011-4-22 10:57 | 显示全部楼层
需要去抖,把扫描函数放在定时中断里调用,扫描有键值则保存并计数,下次中断时再扫描,键值与上次相同则计数累加,否则计数清零,……,直到相同的键值被计数>=3,则认为该键按下
我这么做的,几乎未发现误读取或漏扫描的现象
wangchunlong 发表于 2011-4-22 10:59 | 显示全部楼层
不错啊   很好
helongdm 发表于 2011-4-22 16:07 | 显示全部楼层
如果是在第一次中断前按下  第二次中断后弹起  也是两次中断  可是时间只有10ms多一点
helongdm 发表于 2011-4-22 16:09 | 显示全部楼层
如果按到第三次、多次中断呢
liang7143 发表于 2011-4-22 17:29 | 显示全部楼层
需要去抖
至少检测二次按键值一样 才可以动作
侬本多情1 发表于 2011-4-23 16:39 | 显示全部楼层
需要消抖
ningling_21 发表于 2011-4-23 16:40 | 显示全部楼层
必须消抖...
yx331447791 发表于 2011-4-23 16:45 | 显示全部楼层
做一个累加器,如果想同则计数,不同则清0,这样,只需要判断计数多少为有效键值就可以了
常来21IC 发表于 2011-4-23 16:46 | 显示全部楼层
用定时器扫描,不用强制延时。你的理解没有错。
10mS扫一次,至少检到两次,才能可靠认为有按键按下。

消斗肯定是要消耗10mS左右的时间的,关键在于这10mS内MCU是傻等还是能干其他事情去。
见过一种按键扫描做得比较巧妙,很方便识别出短按、短按抬起、长按、长按抬起共4种按键动作。
用定时器中断2mS扫描一次,若果按键被按下则计数累加,否则计数清零并记按键抬起动作。
1、累加到5次(10mS完成消斗)认为是短按;
2、累加超过5次且小于500次(1秒),并已产生按键抬起动作,认为是短按抬起;
3、累加超过500次,认为是长按;
4、累加超过500次,并已产生按键抬起动作,认为是长按抬起;
云的追寻 发表于 2011-4-23 21:05 | 显示全部楼层
要消抖的啊,用用延时程序消不久行了,又不麻烦
h185540860 发表于 2012-12-3 17:35 | 显示全部楼层
十八楼分析的透彻
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

49

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部