键盘消抖电路.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
键盘消抖电路

键盘消抖电路 键盘消抖电路 * 对于机械按键,虽然只是按下一次然后放掉,结果在按键信号稳定前后会出现一些不该存在的噪声,如图所示。如果将这样的信号直接输入给计数器,结果将可能发生计数超过一次以上的错误。 设计原理: (1)一般人的按键速度至多是10次/秒,即一次按键时间是100ms,所以按下的时间可估算为50ms。假如采样信号(Sample)周期为8ms,则可采样到6次。 (2)对于不稳定的噪声在4ms以下,则至多可采样到一次。 (3)对于如图电路,RS的组态仅有三种。 D Q CP Key Sam D Q CP Q1 Q2 OP S Q R 不变 0 0 1 0 1 0 1 1 1 不变 0 0 0 1 0 1 0 0 0 OP R S Q2 Q1 D Q CP Key Sam D Q CP Q1 Q2 OP S Q R 结论:对按键信号只有采样到两次1才会输出1,两次0才会输出0。否则保持原状态不变。 (4)如果按键信号用于计数器计数,那么消抖以后可能宽度过长,而导致超过计数1次以上的错误发生,所以最好后面再接一个微分电路。 D Q CP Key Sam D Q CP Q1 Q2 Dlyout S Q R D Q CP Din clk D Q CP D1 D2 Diffout EC Q CP 计数器 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY Debunce is PORT( Clk : IN STD_LOGIC; Key : IN STD_LOGIC; DLY_OUT : OUT STD_LOGIC; DIF_OUT : OUT STD_LOGIC ); END Debunce; ARCHITECTURE a OF Debunce IS SIGNAL SAMPLE, DLY, NDLY, DIFF: STD_LOGIC; BEGIN D Q CP Key Clk D Q CP Q1 Q2 Dlyout S Q R D Q CP Din clk D Q CP D1 D2 Diffout 分频器 Free_Counter : Block Signal Q : STD_LOGIC_VECTOR(3 Downto 0); Signal tmp : STD_LOGIC; Begin PROCESS (Clk) Begin IF ClkEvent AND Clk=1 then tmp = Q(2); Q = Q+1; END IF; END PROCESS; SAMPLE = Q(2) AND NOT tmp; --about 8 ms END Block; D Q CP Key Clk D Q CP Q1 分频器 Q2 Debunce : Block SIGNAL Q0,Q1, S, R : STD_LOGIC; Begin Process (Clk) Begin IF ClkEVENT AND Clk=1 THEN IF SAMPLE = 1 THEN Q1 = Q0; Q0 = KEY; S = Q0 AND Q1; R = NOT Q0 AND NOT Q1; END IF; END IF; End Process; DLY = R NOR NDLY; NDLY =S NOR DLY; DLY_OUT = DLY; End Block Debunce; Differential : Block Signal D1,D2 : STD_LOGIC; BEGIN Process (Clk) Begin IF ClkEVENT AND Clk=1 THEN D2 = D1; D1 = DLY; END IF; End Process; DIFF = D1 AND NOT D2; END Block Differential; DIF_OUT = DIFF; END a; *

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档