打印

按键消抖怎么实现啊

[复制链接]
2428|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yoyowodeai|  楼主 | 2010-8-17 12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
思行合一| | 2010-8-17 12:34 | 只看该作者
上一次按键所用的时间减去这一次按键的时间,不得低于500ms比如说

用程序实现一下就可以

使用特权

评论回复
板凳
年轻不在| | 2010-8-17 12:40 | 只看该作者
得用定时器中断实现!

使用特权

评论回复
地板
zhu_han_2| | 2011-7-10 19:53 | 只看该作者
软件延时去抖即可!

使用特权

评论回复
5
zhanan| | 2011-7-10 21:53 | 只看该作者
按键由**组成,按键的时候,因为**的弹性有抖动,可能接触不是很稳定,几毫秒过后才稳定。
单片机的速度很快,往往读出的都是瞬时值。不稳定状态的瞬时值当然是不确定的。所以要避开这个抖动,这就是消抖。
有硬件消抖和软件消抖。
软件消抖简单处理就是读两次,两次一致才确认。两次间隔一般10~40mS。

使用特权

评论回复
6
zhanan| | 2011-7-10 21:54 | 只看该作者
簧-片-怎么成了**?

使用特权

评论回复
7
zhanan| | 2011-7-10 21:57 | 只看该作者
我kao,楼主是个高手啊,怎么会有这个问题?

使用特权

评论回复
8
老鱼探戈| | 2011-7-10 22:14 | 只看该作者
路过~ 不说话

使用特权

评论回复
9
teet| | 2011-7-12 14:46 | 只看该作者
确实是这样

使用特权

评论回复
10
teet| | 2011-7-12 14:46 | 只看该作者
:lol

使用特权

评论回复
11
23度26分| | 2011-7-12 18:48 | 只看该作者
if(key==0)
{
delay_ms(10):
if(key==0)
{要实现的功能}
}
这是软件延迟,当看到按键按下后等待10ms,再次看key是否按下,这样就可以起到消抖的作用,PS:delay_ms(int a);是一个延迟函数。

使用特权

评论回复
12
加班加点| | 2011-7-15 21:57 | 只看该作者
楼上讲的很详细

使用特权

评论回复
13
xd54622| | 2011-7-16 19:09 | 只看该作者
我也在看去抖的东西,记得上次看到哪位高手说有位前辈整理过关于按键抖动的帖子,正在寻找中

使用特权

评论回复
14
xd54622| | 2011-7-16 19:22 | 只看该作者
if(key==0)
{
delay_ms(10):
if(key==0)
{要实现的功能}
}
这是软件延迟,当看到按键按下后等待10ms,再次看key是否按下,这样就可以起到消抖的作用,PS:delay_ms(int a);是一个延迟函数。

这样做感觉不是很灵敏啊,经常出错。我在书上看到的事这样做的:
                if(k1==0){
                        Debouncer();                //按键按下即进入去抖函数
                实现的功能
                while(k1!=1);
                Debouncer();                //按键松开时进入去抖函数
                }
这样做好像不好,就是while(K1!=1)会一直占用cpu,如果按键下去一直不松手的话。
正在找更好的方法,共勉

使用特权

评论回复
15
xd54622| | 2011-7-17 11:45 | 只看该作者
暂时没有进展,嘿嘿,转向其他的了,按键问题慢慢再来,发现有一个hot前辈说的 零耗时按键,暂时没有仔细看懂,所以。。。嘿嘿

使用特权

评论回复
16
djiesl| | 2011-7-17 11:48 | 只看该作者
我以为是讲FPGA里面的按键消抖呢,我自己用状态机小试了下,不行啊

使用特权

评论回复
17
米其林r| | 2011-7-19 21:42 | 只看该作者
FPGA里面的按键消抖是怎么回事啊?

使用特权

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

本版积分规则

191

主题

1265

帖子

2

粉丝