打印

CPLD实现小键盘扫描如何实现按键弹起的判断和去抖动?

[复制链接]
3550|6
手机看帖
扫描二维码
随时随地手机跟帖
沙发
zgl7903| | 2008-3-10 17:46 | 只看该作者

随便说说

module Scan_key(pReset,scan_clk,scan_port,key_status);
  parameter Buff_WIDTH = 8; //缓冲区深度
  input pReset; //复位信号
  input scan_clk; //扫描时钟
  input scan_port; //扫描端口
  output key_status; //消抖后的键状态

  reg key_status;
  
  reg [Buff_WIDTH-1:0]key_buff; //消抖缓冲区
  
  always @(posedge pReset or posedge scan_clk)
    begin
      if(pReset) //复位状态
        begin
    key_buff = 0;
        end
      else //扫描状态
        begin
    key_buff = {key_buff[Buff_WIDTH-1:1],scan_port};
         //填入新扫描数据
        end
    end

  always @(key_buff)
    begin
      if(key_buff == {Buff_WIDTH{0}}) //全部为0
        key_status = 0;
      else if(key_buff == {Buff_WIDTH{1}}) //全部为1
        key_status = 1;
     else
       key_status = key_status;
    end

endmodule      

使用特权

评论回复
板凳
wwh| | 2008-3-12 22:54 | 只看该作者

硬件去抖好

软件去抖有时候起不到作用,因为CPLD有时候太快了

使用特权

评论回复
地板
jiang456| | 2008-4-8 20:40 | 只看该作者

很简单的问题

用个555做个1k的时钟,然后用分频,用分频的频率去采集不就可以去抖动。这个最简单。没有你写的那么复杂。
                                              

使用特权

评论回复
5
21班猪| | 2008-4-9 15:58 | 只看该作者

数字滤波。

使用特权

评论回复
6
lsqdesign| | 2008-4-10 10:11 | 只看该作者

去抖的硬件电路

没有这么复杂大家可以看一下以前没有软件去抖的硬件电路,好像是一个RS触发器。4,6年前用FPGA实现过。不会象前面几位说得那么复杂

使用特权

评论回复
7
alickers| | 2008-4-12 22:48 | 只看该作者

低速多次采样比较就可以了吧

应该没啥难度

使用特权

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

本版积分规则

32

主题

287

帖子

1

粉丝