打印

键盘去抖 去抖时单片机可以做其他事???

[复制链接]
9067|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nicker88|  楼主 | 2010-9-24 21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xiao陈| | 2010-9-24 21:45 | 只看该作者
检查到有按键时延时几个节拍

使用特权

评论回复
板凳
nicker88|  楼主 | 2010-9-24 22:26 | 只看该作者
延时就不能实现    去抖时单片机可以做其他事   了
关键是这句 去抖时单片机可以做其他事

使用特权

评论回复
地板
zhhpudk| | 2010-9-24 22:50 | 只看该作者
把程序设计成状态机,整个程序在一个大循环里跑,中间不要有死等的代码,这样一个循环的时间会很短一般是微秒级别,最大也不过是几个毫秒,这样就可通过**上次按键值并与现在值比较来做去抖。

使用特权

评论回复
5
nicker88|  楼主 | 2010-9-24 23:00 | 只看该作者
4# zhhpudk 应该没这么复杂,是道笔试题啊

使用特权

评论回复
6
linjing| | 2010-9-24 23:00 | 只看该作者
去抖时单片机可以做其他事, 这个该是软件的题目

比较简单的办法是在定时中断里面扫描按键,置按键标志,由主程序处理按键,但这个办法需要一个定时中断
好处是主程序的流程比较灵活,思路比较连续

使用特权

评论回复
7
ayb_ice| | 2010-9-25 08:14 | 只看该作者
其实就是考你是否有多任务概念

使用特权

评论回复
8
jutyy| | 2010-9-25 09:12 | 只看该作者
不知道大家知道,消息机制吗?
本人一解随带提一下,请帮忙回答!谢谢

使用特权

评论回复
9
acute1110| | 2010-9-25 09:31 | 只看该作者
看ucosII的书里面讲的很清楚

使用特权

评论回复
10
bruceleeIKA| | 2010-9-25 09:48 | 只看该作者
有这么复杂吗?什么消息机制,什么多任务还不至于用这么高级的。4楼的对,其实就一个状态机搞定。大循环里每20ms检测一次按键状态。无需延时,无需等待,20ms就是消抖时间,可以做任何事情。

使用特权

评论回复
11
batsong| | 2010-9-25 10:29 | 只看该作者
消除抖动一般就是延时10ms

只要你中断的时隙小于10ms就可以,开一个标志位,但是主循环程序中不能有死等的代码存在

但是一般不会用那么快速的定时中断,而且10ms死等也不伤大雅

使用特权

评论回复
12
zq1987731| | 2010-9-25 10:39 | 只看该作者
定时器复用一下,每10ms置一个“事件标志位”,主循环中检测该标志位,为1则进入按键状态机处理以及其余10ms的任务,处理完毕后将该位置0,切忌10ms的死等,如果我是面试官,绝对会对此强烈反感!

使用特权

评论回复
13
匠人粉丝团| | 2010-9-25 10:51 | 只看该作者
每过一段时间(比如说10ms)去检测一下按键,在这“等待”的时间里,可以去处理别的事情。

使用特权

评论回复
14
eein| | 2010-9-25 16:48 | 只看该作者
延时扫描端口!如果两状态相同则确认状态为发生。

使用特权

评论回复
15
xiaoyh520| | 2010-9-25 16:57 | 只看该作者
:)

使用特权

评论回复
16
ymhui1986| | 2010-9-25 16:59 | 只看该作者
路过

使用特权

评论回复
17
狂崽| | 2010-9-25 17:30 | 只看该作者
在定时器里设个定时标志,把键盘函数放到主函数中,并且判断标志,是否执行键盘检测函数,在键盘检测函数中检测到按键按下后 延时去抖,再判按键,这一过程必须保证中断开着,所以在去抖的时候可以执行中断的事

使用特权

评论回复
18
NE5532| | 2010-9-25 20:20 | 只看该作者
我的答案是:根据实际需要进行设计。

使用特权

评论回复
19
nicole.088| | 2010-9-25 21:00 | 只看该作者
硬件方法是:RC滤波电路,与按键并接一个104电容。
软件方法是:前沿抖动,抖动时间一般为5~10ms,一般都采用软件取抖

  SETB  P1.0
  JB      P1.0,OUT
LCALL DELAY10MS  ;延时10ms取抖
JB       P1.0
JNB     P1.0.$          ;断态判断

OUT:~~~~~~~~~

使用特权

评论回复
20
chenxinle| | 2010-9-25 21:03 | 只看该作者
做好延时,用while()确认去抖

使用特权

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

本版积分规则

0

主题

98

帖子

1

粉丝