4x4的矩阵键盘

  1. 做矩阵键盘的预备条件:按键消抖。
  2. 矩阵键盘的大体思路:
    如果会独立按键的话,相对来说只是多了一个行遍历,检测是出具体行数就对应出了坐标,即特定按键。
    独立按键原理图:这里写图片描述
    初始每个键位都输出逻辑“1”,那个按键被按下去,该按键对应的接口输出逻辑“0”。松开又为“1”。
    矩阵键盘不过是原来一行现在变成了多行,处理办法就是从上到下依次给行接口置零,如果检测到有按键按下则重头开始遍历。具体可以采用状态机实现。
    矩阵键盘原理图:这里写图片描述
    状态机
    这里写图片描述
    按键消抖代码略
module  RowcontrollerAndValueout(
    input   clk,
    input   rst_n,
    inout   [3:0]list,
    output  reg [3:0]row,
    output  reg [15:0]  value
);

listpress       uut_listpress(//该模块为按键消抖处理
    .clk(clk),
    .rst_n(rst_n),
    .list(list),
    .press(press)//此接口引出的是处理后的list按键
);


wire[3:0] press;        //列按键按下键值,高电平有效

//状态机采样键值 
reg[3:0] nstate,cstate;
parameter K_IDLE = 4'd0;    //空闲状态,等待
parameter K_H1OL = 4'd1;    //key_h[0]拉低
parameter K_H2OL = 4'd2;    //key_h[1]拉低
parameter K_H3OL = 4'd3;    //key_h[2]拉低
parameter K_H4OL = 4'd4;    //key_h[3]拉低
parameter K_CHCK = 4'd5;    
    //状态切换
always @(posedge clk or negedge rst_n)
    if(!rst_n) cstate <= K_IDLE;
    else cstate <= nstate;

always @(cstate or press 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值