完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`是这样的,矩阵键盘那一部分已经完成了,就是显示这一块,比如想通过键盘输入125,先按1,应该显示001;再按2,显示012;最后按5,显示125。但是问题是先后分别显示的是111、222、555。显示部分的代码如下: 数码管显示部分的时钟是1KHZ; key_data=4'hb或4'hc或4'ha是我定义的功能键; 按理key_data_reg0、key_data_reg1、key_data_reg2、key_data_reg3的变化应该如下: 按下c键(设置按键):key_data_reg0=0 key_data_reg1=0 key_data_reg2=0 key_data_reg3=0 按下1键: key_data_reg0=1 key_data_reg1=0 key_data_reg2=0 key_data_reg3=0 按下2键: key_data_reg0=2 key_data_reg1=1 key_data_reg2=0 key_data_reg3=0 按下5键: key_data_reg0=5 key_data_reg1=2 key_data_reg2=1 key_data_reg3=0 按下a键(确认按键):key_data_reg0=a key_data_reg1=5 key_data_reg2=2 key_data_reg3=1
单纯的对这段代码进行了仿真,如图结果应该是正确的,但是到板子上就不对了。 怀疑是时序问题,但是对时序问题不知如何下手(可能实际按键输入值key_data与我仿真时给key_data直接赋值不一样?) 又或者是阻塞非阻塞的问题? ` |
|
相关推荐
1 条评论
3个回答
|
|
控制部分 有问题
|
|
|
|
最近终于把这个问题解决了,问题出在了敏感信号上,原本用的敏感信号时按键值key_data,后来改成了按键检测信号(按键按下一次产生一个脉冲)。个人猜测是仿真时按键值是可以直接变化的,比如0010直接到0001,但是放到板子上时是有中间态的,比如0010-0000-0001,所以上面四个寄存器之间并不是延时了一拍输出,这才会出现仿真时是理想情况,实际上则是问题中的现象。
|
|
|
|
问题出在敏感信号上,不能用key_data,应该用一个按键检测信号(按键按下一次产生一个脉冲)。仿真时按键值可以直接变化,但是实际时按键值变化过程有中间态。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
518 浏览 0 评论
845 浏览 0 评论
1683 浏览 0 评论
454 浏览 0 评论
631 浏览 0 评论
1218 浏览 23 评论
5451 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-3 03:49 , Processed in 0.658388 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号