矩阵键盘扫描原理程序

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)经典的矩阵键盘扫描程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
经典的矩阵键盘扫描程序
&&键盘矩阵的学习,只针对没有接触过的人
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢后使用快捷导航没有帐号?
查看: 7648|回复: 13
4*4键盘矩阵扫描VHDL程序中的一个问题,求大侠帮忙
在线时间326 小时
威望4510分
芯币3278枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
这两天在做毕设,其中一个矩阵键盘扫描的问题,让我有点困惑。
问题情况如下:
假设第一排每个按键分别对应着数码管显示:1 5 9 13四个数,但是
当按下第一排显示1的按键时候,数码管显示的数会在1和5,之间以扫描的频率交替显示,
按下显示5按键时,交替显示的是5和9,
按下9时,交替显示的是9和13;
按下13时,交替显示13和1。
同理与第二排,第三排,第四排;
现在困惑于为什么会出现这样的交替显示情况?
求大侠帮忙解答一下,感激不尽 !!!
以下是运行的程序,
use ieee.std_logic_1164.
use ieee.std_logic_unsigned.
entity key44 is
port(c20hz : in std_
& &keyh : out std_logic_vector(3 downto 0);& && & --数码管十位
& &keyl : out std_logic_vector(3 downto 0);& & ---个位
& &keyscan : buffer std_logic_vector(3 downto 0);& & ----&&列
& &hang : in std_logic_vector(3 downto 0));& && &&&---- 行
end entity key44;
------------------------------------------------------
architecture behave of key44 is
signal read_data : std_logic_vector(3 downto 0);
signal scan_data : std_logic_vector(1 downto 0);
signal z : std_logic_vector(7 downto 0);
P1: process(c20hz)
variable temp : std_logic_vector(1 downto 0);
& & if c20hz'event and c20hz='1' then
&&if temp & 3 then temp := temp + 1;
&&else temp := (others =& '0');
scan_data &=
z&=keyscan&
P2: process(c20hz,scan_data)----------扫描
&&if scan_data=&00& then keyscan &= &1110&;
&&case z is
& &when && =& read_data &= &0000&;
& &when && =& read_data &= &0001&;
& &when && =& read_data &= &0010&;
& &when && =& read_data &= &0011&;
& &when others =&
elsif scan_data=&01& then keyscan &= &1101&;
& & case z is
& &when && =& read_data &= &0100&;
& &when && =& read_data &= &0101&;
& &when && =& read_data &= &0110&;
& &when && =& read_data &= &0111&;
& &when others =&
elsif scan_data=&10& then keyscan &= &1011&;
&&case z is
& &when && =& read_data &= &1000&;
& &when && =& read_data &= &1001&;
& &when && =& read_data &= &1010&;
& &when && =& read_data &= &1011&;
& &when others =&
elsif scan_data=&11& then keyscan &= &0111&;
&&case z is
& &when && =& read_data &= &1100&;
& &when && =& read_data &= &1101&;
& &when && =& read_data &= &1110&;
& &when && =& read_data &= &1111&;
& &when others =&
P3: process(c20hz,read_data)-------译码
&&case read_data is
& && &&&when &0000&=& keyh&=&0000&;keyl&=&0001&;
& && &&&when &0001&=& keyh&=&0000&;keyl&=&0010&;
& && &&&when &0010&=& keyh&=&0000&;keyl&=&0011&;
& && &&&when &0011&=& keyh&=&0000&;keyl&=&0100&;
& && &&&when &0100&=& keyh&=&0000&;keyl&=&0101&;
& && &&&when &0101&=& keyh&=&0000&;keyl&=&0110&;
& && &&&when &0110&=& keyh&=&0000&;keyl&=&0111&;
& && &&&when &0111&=& keyh&=&0000&;keyl&=&1000&;
& && &&&when &1000&=& keyh&=&0000&;keyl&=&1001&;
& && &&&when &1001&=& keyh&=&0001&;keyl&=&0000&;
& && &&&when &1010&=& keyh&=&0001&;keyl&=&0001&;
& && &&&when &1011&=& keyh&=&0001&;keyl&=&0010&;
& && &&&when &1100&=& keyh&=&0001&;keyl&=&0011&;
& && &&&when &1101&=& keyh&=&0001&;keyl&=&0100&;
& && &&&when &1110&=& keyh&=&0001&;keyl&=&0101&;
& && &&&when &1111&=& keyh&=&0001&;keyl&=&0110&;
有目的的学习是最有效的学习!
在线时间490 小时
威望9087分
芯币12386枚
TA的帖子TA的资源
五彩晶圆(高级), 积分 9087, 距离下一级还需 913 积分
五彩晶圆(高级), 积分 9087, 距离下一级还需 913 积分
可以肯定的说,是你的程序设计出了问题。具体啥问题,要仔细分析你的程序
一个为理想不懈前进的人,一个永不言败人!
http://shop.taobao.com/
欢迎光临网上店铺!
在线时间326 小时
威望4510分
芯币3278枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
后来加了一个检测到后的终止扫描语句,也依然会这样的状态,
时钟频率是20hz,
用的是红色飓风的开发板。
资料上说,在20hz情况下,可以不用另外去抖,
有目的的学习是最有效的学习!
在线时间326 小时
威望4510分
芯币3278枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
P1: process(c20hz,hang)
& & & & variable temp : std_logic_vector(1 downto 0);
& & & & begin
&&& & & &&&if c20hz'event and c20hz='1' then
& & & & & & & & if temp & 3 then temp := temp + 1;
& && && &&&if (hang=&1110& or hang=&1101& or hang=&1011& or hang=&0111&) then& & ----stop scan
& && && && &&&temp:=
& && && &&&
& & & & & & & & else temp := (others =& '0');
& & & & & & & &
& & & & scan_data &=
这是后来修改后的终止扫描继续的片段
有目的的学习是最有效的学习!
在线时间326 小时
威望4510分
芯币3278枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
我困惑了一个下午了,请坛友帮忙看看,哪里出的问题~~谢谢了!
有目的的学习是最有效的学习!
在线时间326 小时
威望4510分
芯币3278枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
回复 5楼 eeleader 的帖子
正在分析,那个原因是因为没有去抖,
现在的问题成了只能识别一行,不能具体到一个按键~~
有目的的学习是最有效的学习!
在线时间131 小时
TA的帖子TA的资源
一粒金砂(高级), 积分 453, 距离下一级还需 47 积分
一粒金砂(高级), 积分 453, 距离下一级还需 47 积分
回复 5楼 eeleader 的帖子
顶这个回复,呵呵。
矩阵键盘的扫描注意在代码上加入10ms的延时祛痘,同时在8根扫描线上串接1~10K的去痘电阻,呵呵。
在线时间326 小时
威望4510分
芯币3278枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
五彩晶圆(中级), 积分 4510, 距离下一级还需 1490 积分
回复 7楼 pepsi360 的帖子
问题已解决,谢谢你的回复。
不过最后的问题不在于去抖,而是在扫描保持的控制上。
有目的的学习是最有效的学习!
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
想问问大侠最后的问题是怎么解决的& &我刚刚学习VHDL语言,你说的那个扫描停止控制,我尝试了很多次,依旧没有成功,还希望大侠能够不吝赐教!谢了!我得邮箱是
在线时间29 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
这个我也做了当时我只有5和B有用,按其他键都没用,最后发现是程序的问题···
在线时间8 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
是不是写个延时啊?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
楼主 我们刚也遇到你这个问题,没法突破,你是怎么解决的,求指导
在线时间0 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
楼主 我们刚也遇到你这个问题,没法突破,你是怎么解决的,求指导
数字不会来回变,因为加了个中断时钟信号的设置,但是只能定位行,没法定位确定的数字,
在线时间0 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
一粒金砂(中级), 积分 6, 距离下一级还需 194 积分
数字不会来回变,因为加了个中断时钟信号的设置,但是只能定位行,没法定位确定的数字,
问题已经解决,我做个总结,网络上的vhdl代码有的可以有的不行,要慎重参考,因为除了代码本身(代码本身是正确的,但是每个人写法不同,比如网上某个写的代码中0111表示第一列,或许另个人的代码中1110表示第一列),还有一个非常重要的因素----管脚的锁定,楼主的问题是,按下一个键,数字会交替显示,也就是说,有两个问题:1、扫描过程中无法定位确定的数字,而是只能定位一行,而在这一行中来回显示。2、按下按键后,扫描没有停止,还在继续扫描。问题1就是管脚锁定的问题,4*4矩阵键盘有一组输出管脚和输入管脚,这两组管脚都要设定,否则不能定位到具体的数字(但是管脚的具体功能我还没懂,总之都要设定)。问题2,增加一个中断信号,这个自己可以研究出来,百度里的代码里也有。
以上内容,仅供参考。若有错误,请指出
EEWORLD 官方微信
Powered by数码管显示4×4矩阵键盘的键盘号( 程序解释好了 )大作业_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数码管显示4×4矩阵键盘的键盘号( 程序解释好了 )大作业
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢44矩阵键盘扫描C程序(C51)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
44矩阵键盘扫描C程序(C51)
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 4x4矩阵键盘扫描原理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信