打印

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

[复制链接]
7000|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mimi2011|  楼主 | 2011-4-21 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
原野之狼| | 2011-4-21 09:31 | 只看该作者
软件扫描的方式也有一个消抖的过程

使用特权

评论回复
板凳
joyme| | 2011-4-21 09:51 | 只看该作者
按键是个随机的事件,你怎么保证你10ms扫中的不是在按键抖动过程中的某一点?软件对按键处理不应该仅仅考虑消抖,还要考虑误按(轻触,按下的时间非常短)及干扰,所以应该做些滤波,而不是简单的延时

使用特权

评论回复
地板
ayb_ice| | 2011-4-21 10:45 | 只看该作者
那也是消抖,只是实现方式不一样罢了

使用特权

评论回复
5
joyme| | 2011-4-21 11:29 | 只看该作者
消抖是开关的机械抖动,只有按下去自后一段时间有,而误按或干扰是随时可能出现的,所以不完全一样

使用特权

评论回复
6
yjhon| | 2011-4-21 12:35 | 只看该作者
10ms读一次与1ms读一次,都只是读了一次,都有可能是误读

使用特权

评论回复
7
lxc806705| | 2011-4-21 14:22 | 只看该作者
照样需要消抖,而且貌似消抖的程序也很简单一两句

使用特权

评论回复
8
月下狂想曲| | 2011-4-21 17:37 | 只看该作者
本帖最后由 月下狂想曲 于 2011-4-21 17:38 编辑

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

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

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

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

-----------------------------------------------------------
这样,定时器中断进来两次可以了,如果10ms一个中断,那20ms后,就可以确认确实是否有按健按下。

使用特权

评论回复
9
lxc806705| | 2011-4-22 09:45 | 只看该作者
为啥你不想要消抖呢?我很不理解呀,消抖也不是麻烦的事情啊

使用特权

评论回复
10
swx2010| | 2011-4-22 10:57 | 只看该作者
需要去抖,把扫描函数放在定时中断里调用,扫描有键值则保存并计数,下次中断时再扫描,键值与上次相同则计数累加,否则计数清零,……,直到相同的键值被计数>=3,则认为该键按下
我这么做的,几乎未发现误读取或漏扫描的现象

使用特权

评论回复
11
wangchunlong| | 2011-4-22 10:59 | 只看该作者
不错啊   很好

使用特权

评论回复
12
helongdm| | 2011-4-22 16:07 | 只看该作者
如果是在第一次中断前按下  第二次中断后弹起  也是两次中断  可是时间只有10ms多一点

使用特权

评论回复
13
helongdm| | 2011-4-22 16:09 | 只看该作者
如果按到第三次、多次中断呢

使用特权

评论回复
14
liang7143| | 2011-4-22 17:29 | 只看该作者
需要去抖
至少检测二次按键值一样 才可以动作

使用特权

评论回复
15
侬本多情1| | 2011-4-23 16:39 | 只看该作者
需要消抖

使用特权

评论回复
16
ningling_21| | 2011-4-23 16:40 | 只看该作者
必须消抖...

使用特权

评论回复
17
yx331447791| | 2011-4-23 16:45 | 只看该作者
做一个累加器,如果想同则计数,不同则清0,这样,只需要判断计数多少为有效键值就可以了

使用特权

评论回复
18
常来21IC| | 2011-4-23 16:46 | 只看该作者
用定时器扫描,不用强制延时。你的理解没有错。
10mS扫一次,至少检到两次,才能可靠认为有按键按下。

消斗肯定是要消耗10mS左右的时间的,关键在于这10mS内MCU是傻等还是能干其他事情去。
见过一种按键扫描做得比较巧妙,很方便识别出短按、短按抬起、长按、长按抬起共4种按键动作。
用定时器中断2mS扫描一次,若果按键被按下则计数累加,否则计数清零并记按键抬起动作。
1、累加到5次(10mS完成消斗)认为是短按;
2、累加超过5次且小于500次(1秒),并已产生按键抬起动作,认为是短按抬起;
3、累加超过500次,认为是长按;
4、累加超过500次,并已产生按键抬起动作,认为是长按抬起;

使用特权

评论回复
19
云的追寻| | 2011-4-23 21:05 | 只看该作者
要消抖的啊,用用延时程序消不久行了,又不麻烦

使用特权

评论回复
20
h185540860| | 2012-12-3 17:35 | 只看该作者
十八楼分析的透彻

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

49

帖子

1

粉丝