5798|11

18

帖子

6

TA的资源

一粒金砂(中级)

楼主
 

verilog如何用矩阵键盘按三次输入三位数(0-999)? [复制链接]

verilog如何用矩阵键盘按三次输入三位数(0-999)?
module key4x4
(
     clk,
     rst_n,
     row,                 
     col,               
     key_val         
);
input clk;
input rst_n;
input [3:0] row;      // 矩阵键盘 行
output reg[3:0] col;  // 矩阵键盘 列
output reg[3:0] key_val;  // 键盘值  
按键每按一次只会输出一个数字,连续按需要如下处理:
num=key_val;
key_data=(key_data)*10+num;
这样如何实现????????????
此帖出自FPGA/CPLD论坛

最新回复

input [3:0] row;      // 矩阵键盘 行 总共4个键, 一个总输入,一个确定兼移位,一个输入单个0到9, 一个确认  详情 回复 发表于 2016-8-1 22:13
点赞 关注
 

回复
举报

1891

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
这个比上次精简多了,,我去找人帮你回答,,,
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 

回复

230

帖子

2

TA的资源

纯净的硅(初级)

板凳
 
你这种方式是可行的,但是需要有一个标志信号,即什么时候按键检测成功,因为一次按键按下,键值保持不变,但是你却只能使用一次,所以需要做好这个判断。还有比较好的方式就是用移位寄存器,不过这样出来的会是BCD码格式,需要进行转换。我这里自己做了有实际的例子
此帖出自FPGA/CPLD论坛

点评

可否将你所说的方式例程公布一下?!  详情 回复 发表于 2015-9-2 11:24
感谢小梅哥,,,哇咔咔,快去把例子分享过来。。。  详情 回复 发表于 2015-9-2 11:24
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

4
 
这样的话,如何区别输入一个一位数,还是一个多位数的问题。我觉得,输入一位数之后默认等待输入这一个数的下一位数字,延时等待超过之后,把之前的连续输入默认的几位数当作一个数,然后继续输入下一个数
此帖出自FPGA/CPLD论坛

点评

感谢小玉,,,哇咔咔,,,  详情 回复 发表于 2015-9-2 11:24
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

5
 
小梅哥 发表于 2015-9-2 09:20
你这种方式是可行的,但是需要有一个标志信号,即什么时候按键检测成功,因为一次按键按下,键值保持不变, ...

感谢小梅哥,,,哇咔咔,快去把例子分享过来。。。
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

6
 
elvike 发表于 2015-9-2 09:23
这样的话,如何区别输入一个一位数,还是一个多位数的问题。我觉得,输入一位数之后默认等待输入这一个数的 ...

感谢小玉,,,哇咔咔,,,
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

18

帖子

6

TA的资源

一粒金砂(中级)

7
 
小梅哥 发表于 2015-9-2 11:20
你这种方式是可行的,但是需要有一个标志信号,即什么时候按键检测成功,因为一次按键按下,键值保持不变, ...

可否将你所说的方式例程公布一下?!
此帖出自FPGA/CPLD论坛

点评

jzjp jzjp( .row(row), .col(col), .real_number(number), .clk(clk_slow), .rst_n(rst_n), .flag(flag), .opcode(opcode) ); conv conv( .clk(clk_slow), .opcode(opcode),  详情 回复 发表于 2015-9-2 11:29
 
 
 

回复

18

帖子

6

TA的资源

一粒金砂(中级)

8
 
yuxuanwlfei 发表于 2015-9-2 11:24
可否将你所说的方式例程公布一下?!

        jzjp jzjp(
                .row(row),
                .col(col),
                .real_number(number),
                .clk(clk_slow),
                .rst_n(rst_n),
                .flag(flag),
                .opcode(opcode)
        );       
       
        conv conv(
                .clk(clk_slow),
                .opcode(opcode),
                .flag(flag),
                .number(number),
                .rst_n(rst_n),
                .data_in(data),
                .fuhao(fuhao),
                .dp(dp)
        );

我参考过至芯的计算器例程,但下载到板子中无法实现,每次按键按下,会连续显示好几个数字。如果每次按下一个数字,产生一个flag,然后

if(flag)
begin
num=key_val;
key_data=(key_data)*10+num;
end
此帖出自FPGA/CPLD论坛
 
 
 

回复

1万

帖子

203

TA的资源

管理员

9
 
个人觉得移位加空格(或其他一个专用按键)判断数字是否输入结束是比较习惯常规的做法。像判断等待时间那种其实不好说把?还要实验多少时间比较合适。而且键盘处理一般要来个去抖的把。如果新手的话,一开始其实不必讲究太深。先学会基本技能然后再深入研究。
此帖出自FPGA/CPLD论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

5979

帖子

8

TA的资源

版主

10
 
已功能键作为数字输入的结束符呗
此帖出自FPGA/CPLD论坛

点评

正解  详情 回复 发表于 2015-9-2 18:03
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

230

帖子

2

TA的资源

纯净的硅(初级)

11
 
chenzhufly 发表于 2015-9-2 13:28
已功能键作为数字输入的结束符呗

正解
此帖出自FPGA/CPLD论坛
 
 
 

回复

1950

帖子

4

TA的资源

版主

12
 
input [3:0] row;      // 矩阵键盘 行
总共4个键,
一个总输入,一个确定兼移位,一个输入单个0到9, 一个确认
此帖出自FPGA/CPLD论坛
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表