zoukankan      html  css  js  c++  java
  • 键盘去抖程序

    下面是我的键盘去抖程序,根据特权同学的视频教程改编一下,其中没有复位信号,下载到de1的板子效果还不错。

    module keytest(
      
      CLOCK_50,      // 50 MHz
      ////
      KEY,       // Pushbutton[3:0]
      //////////////////// DPDT Switch  ////////////////////
      
      HEX0,       // Seven Segment Digit 0
      HEX1,       // Seven Segment Digit 1
      HEX2,       // Seven Segment Digit 2
      HEX3 ,      // Seven Segment Digit 3
        key_en  
     );

    //////////////////////// Clock Input   ////////////////////////

    input   CLOCK_50;    // 50 MHz

    //////////////////////// Push Button  ////////////////////////
    input [3:0] KEY;     // Pushbutton[3:0]

    //////////////////////// 7-SEG Dispaly ////////////////////////
    output [6:0] HEX0;     // Seven Segment Digit 0
    output [6:0] HEX1;     // Seven Segment Digit 1
    output [6:0] HEX2;     // Seven Segment Digit 2
    output [6:0] HEX3;     // Seven Segment Digit 3
    output key_en;
    reg [4:0] counter1;
    reg key_rst,key_rst_n;
    reg [10:0] counter;
    reg counter_en;
    wire [15:0] mSEG7_DIG;

    assign mSEG7_DIG=counter1;
    assign key_en=key_rst_n+key_rst;//与特权同学的不同,我用与操作时不太好用
    always@(posedge CLOCK_50)key_rst_n<=key_rst;
    always@(posedge CLOCK_50)key_rst<=KEY[0];


    always@(posedge CLOCK_50)
    begin
    if(key_en)counter_en=1;
    if(counter_en)counter=counter+1;
     if(counter=='b10000000000&&~KEY[0])//去抖验证成功
     begin
      counter1<=counter1+1;//延时计数
      counter_en<=0;
      counter<=0;
     end
     else if(counter=='b10000000000&&KEY[0])//验证失败
     begin
      counter<=0;
      counter_en<=0;
     end
    end
    SEG7_LUT_4    u0 ( HEX0,HEX1,HEX2,HEX3,counter1); //连接数码管的模块
    endmodule

  • 相关阅读:
    应该做什么样的研究:以Google为例
    机器学习问题方法总结
    浅析PageRank算法
    轮廓处理函数详细
    近视恢复方法
    一步一步深入视频接口
    什么是cookie
    Linux系统目录数和文件数限制
    九大视频接口全接触
    实时监控网卡流量的命令
  • 原文地址:https://www.cnblogs.com/azprobert/p/1857601.html
Copyright © 2011-2022 走看看