打印
[51单片机]

按键的硬件消抖

[复制链接]
7015|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
说明几点:
波形图画得不是很专业,偷懒,用了虚线。
每个按键对应一个电路,当按键数量较多时不可取,还是软件消抖通用。
Ctrl可以接单片机I/O口,也可以设计时序电路(比如用74HC123)。

相关帖子

沙发
yangfan19641964|  楼主 | 2013-12-31 15:24 | 只看该作者
怎么上图?

使用特权

评论回复
板凳
yangfan19641964|  楼主 | 2013-12-31 15:25 | 只看该作者
会了

按键硬件消抖.bmp (854.38 KB )

按键硬件消抖.bmp

使用特权

评论回复
地板
jqbkl007| | 2013-12-31 16:38 | 只看该作者
学习了!!!

使用特权

评论回复
5
NE5532| | 2013-12-31 17:18 | 只看该作者
这个成本可不低,还不如接个电容上去。

使用特权

评论回复
6
coody| | 2013-12-31 17:58 | 只看该作者
如果是接MCU的IO,还是用软件消抖吧。
如果是纯硬件的,不如用RC和施密特触发器

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
yangfan19641964 + 3
7
yangfan19641964|  楼主 | 2013-12-31 20:33 | 只看该作者
NE5532 发表于 2013-12-31 17:18
这个成本可不低,还不如接个电容上去。

这个成本当然不低。但理论上没有任何问题。而采用电容可能不可靠。

使用特权

评论回复
8
yangfan19641964|  楼主 | 2013-12-31 20:34 | 只看该作者
coody 发表于 2013-12-31 17:58
如果是接MCU的IO,还是用软件消抖吧。
如果是纯硬件的,不如用RC和施密特触发器 ...

我也从来没用过这个电路,都是软件消抖。

使用特权

评论回复
9
yangfan19641964|  楼主 | 2013-12-31 21:03 | 只看该作者
NE5532 发表于 2013-12-31 17:18
这个成本可不低,还不如接个电容上去。

对了,不知你所说的成本不低是否包括Ctrl控制线?其实可以或者说应该用一条Ctrl控制所有的按键。

使用特权

评论回复
10
ZG11211| | 2013-12-31 21:13 | 只看该作者
本帖最后由 ZG11211 于 2013-12-31 21:19 编辑

如果不考虑按键损耗,用电容的物理消抖的效果和可靠性完全胜过软件消抖或者外置电路消抖。
电容两端的电压不可瞬变,但是容量越大,在按键按下的瞬间产生的能量越大,对按键的烧蚀越严重。
虽然增大电容两端的冲放电电阻可以减小烧蚀,但是也破坏了冲放电斜率,所以实际选型时需要充分考虑电路的实际情况来确定选用何种消抖方案。

使用特权

评论回复
11
gcxzhz| | 2013-12-31 22:14 | 只看该作者
RS  触发器么

使用特权

评论回复
12
NE5532| | 2013-12-31 23:48 | 只看该作者
呵呵,我都还没注意看到你的Ctrl线呢,你好像犯了一个设计错误,认为输出线不抖了,输入信号就不抖了?是不是每个按键的输入端口都需要一个触发器来整形呀?一个触发器芯片就算有4路触发器,成本算下来也要7毛左右,哪里有电容便宜啊?电容是可靠的,前提是输入端有施密特。

使用特权

评论回复
13
yangfan19641964|  楼主 | 2014-1-1 13:48 | 只看该作者
NE5532 发表于 2013-12-31 23:48
呵呵,我都还没注意看到你的Ctrl线呢,你好像犯了一个设计错误,认为输出线不抖了,输入信号就不抖了?是不 ...

没有错误吧!输出为“0”后,由于反馈至与非门的另一输入端,那么按键输入端为何种状态、是否在抖已无关紧要了。
从实际应用来看,肯定应该只用一条Ctrl控制所有按键的状态复位。
用电容的最大问题在于不能保证每个按键的响应时间一致(容许一定的误差)。
用硬件消抖的优点是毋需像软件消抖得几十毫秒后才能读取键值。硬件消抖可以实时响应,在一些工业控制、实时监控等应用场合有其特殊作用。

使用特权

评论回复
14
李冬发| | 2014-1-1 14:55 | 只看该作者
有些场合的IO输入使用这个方案有很大好处的。在工业上经常会被用到。

使用特权

评论回复
15
kseeker| | 2014-1-1 15:00 | 只看该作者
第一,消抖本质上是低通滤波,只要无法预知未来的输入,就必须有延时。这种延时或者是对称的,比如rc,或者是不对称的,比如施密特触发器。这个电路同样如此,延迟最大可以到两个ctrl信号的间距。
第二,这个实现是错误的。考虑一下,当ctrl为低时,如果按键正在抖动,这个电路将给出随机的输出。

使用特权

评论回复
16
NE5532| | 2014-1-2 16:33 | 只看该作者
设计者似乎犯了一个错误,ctrl信号并不能与按按钮同步。

使用特权

评论回复
17
yangfan19641964|  楼主 | 2014-1-2 16:59 | 只看该作者
NE5532 发表于 2014-1-2 16:33
设计者似乎犯了一个错误,ctrl信号并不能与按按钮同步。

版主呀,你好几次再提这个问题了。我认为对于高手,有些东西用不着说明的。

使用特权

评论回复
18
yangfan19641964|  楼主 | 2014-1-2 17:01 | 只看该作者
看看coody是如何回答的。

使用特权

评论回复
19
DianGongN| | 2014-1-2 18:13 | 只看该作者
本帖最后由 DianGongN 于 2014-1-2 18:16 编辑
yangfan19641964 发表于 2014-1-2 16:59
版主呀,你好几次再提这个问题了。我认为对于高手,有些东西用不着说明的。 ...

版主NE5532和15楼kseeker说的对,这个硬件实用性有问题。

这个ctrl的低电平脉冲是RS触发器的置位信号。
但ctrl的低电平脉冲何时发出才正确?
必须在本次按键释放之后,下次按键闭合之前!

按键快的人和按键慢的人,0.1S和1S按键都有可能,如何兼顾?
这就是版主指出的同步性问题。

coody也是正解。总之,这个电路对于按键消抖不实用!

使用特权

评论回复
20
NE5532| | 2014-1-2 22:38 | 只看该作者
这个不是电路的问题,是逻辑的问题,既然Ctrl信号必须跟着按键走,那就是知道什么时候按键,知道什么时候按键,还去抖做啥呢?直接让过去不就ok了?

楼主说说是不是这个道理呢?

使用特权

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

本版积分规则

4

主题

121

帖子

1

粉丝