矩阵键盘(未消抖).doc

矩阵键盘(未消抖).doc

ID:59807796

大小:16.00 KB

页数:3页

时间:2020-11-24

矩阵键盘(未消抖).doc_第1页
矩阵键盘(未消抖).doc_第2页
矩阵键盘(未消抖).doc_第3页
资源描述:

《矩阵键盘(未消抖).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、4*4矩阵键盘(未消抖):module Matrix_keyboard(clk,in_s,out_s,num);//定义模块端口信息input          clk;input   [3:0]  in_s;output  [3:0]  out_s;output  [4:0]  num;//定义输出信号类型及局部变量reg     [4:0]  num;reg     [1:0]  cnt = 0;reg     [1:0]  tmp = 0;reg     [3:0]  o_ut_st = 0;wire    [7:0]  ds

2、ample;//将扫描输出和输入信号级联,得到矩阵扫描结果assign  dsample = {o_ut_st, in_s};assign  out_s   = o_ut_st;//产生按钮矩阵的列扫描信号always  @(posedge clk)   begin       cnt <= cnt + 1'b1;       case (cnt)          2'b00:     o_ut_st <= 4'b1000;          2'b01:     o_ut_st <= 4'b0100;          2'b1

3、0:     o_ut_st <= 4'b0010;          2'b11:     o_ut_st <= 4'b0001;                endcase   end//根据按钮的列扫描信号和行输入信号判断按钮是否被按下always  @(posedge clk)   begin      //如果无按钮按下,定义num=16为无效状态      if (in_s == 4'b0000)        begin           if (tmp == 3)             begin       

4、         num <= 16;  //无按键输入,输出16                tmp <= 0;             end           else             begin                num <= num;                tmp <= tmp + 1'b1;  //扫描周期,3个时钟周期             end        end      else        begin           tmp <= 0;           case 

5、(dsample)             //第1列扫描结果             8'b1000_0001: num <= 0;             8'b1000_0010: num <= 1;             8'b1000_0100: num <= 2;             8'b1000_1000: num <= 3;              //第2列扫描结果             8'b0100_0001: num <= 4;             8'b0100_0010: num <= 5

6、;             8'b0100_0100: num <= 6;             8'b0100_1000: num <= 7;               //第3列扫描结果             8'b0010_0001: num <= 8;             8'b0010_0010: num <= 9;             8'b0010_0100: num <= 10;             8'b0010_1000: num <= 11;               //第4列扫描结果  

7、           8'b0001_0001: num <= 12;             8'b0001_0010: num <= 13;             8'b0001_0100: num <= 14;             8'b0001_1000: num <= 15;             endcase        end   endendmodule   独立按键消抖程序:module Btn_without_shake(Clk_50MHz,PB_UP,PB_Out,count_sel);//定义模块

8、端口信息input     Clk_50MHz;  //模块时钟50MHzinput     PB_UP;  //按钮输入output    PB_Out;  //去抖后按钮输出output    [1:0]  count_sel; 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。