实验二键盘扫描实验.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二键盘扫描实验 一、 实验目的 熟悉VHDL的语法和编译排错,重点掌握组合逻辑中显示译码器的设 计。附加学习键盘和数码管显示控制。 二、 实验内容 设计一个BCD码到LED的七段译码器,非BCD值时仅G段亮(输 出为“一”)。 下载验证键盘显示实验。 改写程序,将学号的数据固定地显示在1-8位数码管上。 将F键功能改为换向键,即可以控制数字滚动显示的方向。 三、 实验步骤 用文本输入法,在键盘显示程序的译码部分,分别用三种语法填 写BCD到LED的译码器。三种语法为When else、With select、Case,建议 使用模板。每一种都需编译通过提交程序。 选一种语法,编译,绑定引脚,下载验证结果。 改写程序,将0-7的数据固定地显示在1?8位数码管上。编译、 下载验证结果。 4?将F键功能改为换向键,即可以控制数字滚动显示的方向。编译、 下载验证结果。 四、 实验硬件图 图1 4x4键盘 图2数码管动态显示原理框图 一种推荐的适配卡连线如下表所示: 时钟扫描程序文五、实验文件(需要填写译码部分)KEYSCAN 时钟扫描程序文 件名:KEYSCAN.VHD library IEEE; use lEEE.std」ogic_1164.all; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity KEYSCAN is port ( CLK1: in STD_L0GIC; KEYROW1,KEYROW2ZKEYROW3,KEYROW4: in STD_L0GIC;??键盘行接 口 KEYCOL: out STD_LOGIC_VECTOR (3 D0WNT0 0);■■键盘列接口 LED_BIT: out STD_LOGIC_VECTOR (7 D0WNT0 0); -LED 位选接口 LED_SEG: out STD_LOGIC_VECTOR (7 DOWNTO 0)); -LED 段选接口 end KEYSCAN; architecture KEYSCAN_ARCH of KEYSCAN is SIGNAL SEG : STD_LOGIC_VECTOR (6 DOWNTO O);-LED 段选 SIGNAL BIT : STD_LOGIC_VECTOR (2 DOWNTO O);-LED 位选 SIGNAL NUM : STD_LOGIC_VECTOR (3 DOWNTO 0);-显示数字 SIGNAL COUNT: STD_LOGIC_VECTOR (4 DOWNTO 0);-计数脉冲 SIGNAL CO UNTO : STD_LOGIC; 一计数脉冲最低位 LSB SIGNAL COL: STD_LOGIC_VECTOR (1 DOWNTO 0); 一键盘列 begin -计数器模块 PROCESS (CLK1) BEGIN IF CLK1#39;event AND CLK1 = #39;1 #39; THEN COUNT lt;二 COUNT+1; END IF; END PROCESS; -计数器模块 ■■键盘模块 COL lt;=COUNT(3 DOWNTO 2); KEYCOL lt;二,,1110,1 WHEN COL = 0 ELSE n1101 WHEN COL =1 ELSE ?lOll WHEN COL = 2 ELSE Olli WHEN COL = 3 ELSE CO UNTO lt;=COUNT(0); PROCESS (countO,COUNT;KEYINbKEYIN2) BEGIN IF COUNTO#39;event and (COUNTO = #39;1 #39;)THEN -分四行扫 描 IF (KEYROW1 = #39;0#39;) and (COUNT(1) = #39;0#39;) THEN NUM(3 DOWNTO 2)lt;= n00n; NUM(1 DOWNTO 0) lt;二 COUNT(3 DOWNTO 2); -COUNT(1 DOWNTO 0) 只起分频延时的作用 ELSIF (KEYR0W2 = #39;0#39;) and (COUNT(l) = #39;0#39;) THEN NUM(3 DOWNTO 2)lt;= n01n; NUM(1 DOWNTO 0) lt;二 C0UNT(3 DOWNTO 2); ELSIF (KEYROW3 = #39;0#39;) and (COUNT(l) = #39;0#39;) THEN NUM(3 DOWNTO 2)lt;= n10n; NUM(1 DOWNTO 0) lt;二 C0UNT(3 DOWNTO 2); ELSIF (

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档