矩阵键盘扫描LED显示程序说明书.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 2 艾曼电子技术文档 键盘扫描LED显示程序说明书 官方网站: 淘宝销售: 邮箱: owein@163.com PHONE :一、硬件平台:艾曼电子FPGA基础扩展板 二、功能:通过按动板子上6个按键来控制4个灯。 三、硬件电路图: 四、程序说明: 将ROW[3:0]设为输入,COL[1:0]设为输出。如果没有任何键被按下,则ROW[3:0]一直被上拉为高电平。只有当有键被按下,且COL[1:0]中有低电平输出,ROW[3:0]中才有可能有低电平输入,也可说是被动地输入。 注意:由于板子上的按键外部未加上拉电阻,需要通过Quartus II 来设置输入管脚弱上拉。详细方法请看光盘中的资料。 //艾曼电子 // module matrixKeyboard_drive( input i_clk, input i_rst_n, input [3:0] row, // 矩阵键盘 行 output reg [1:0] col, // 矩阵键盘 列 output reg [3:0] keyboard_val // 键盘值 ); //++++++++++++++++++++++++++++++++++++++ // 分频部分 开始 //++++++++++++++++++++++++++++++++++++++ reg [19:0] cnt; // 计数子 always @ (posedge i_clk, negedge i_rst_n) if (!i_rst_n) cnt = 0; else cnt = cnt + 1b1; wire key_clk = cnt[19]; // (2^20/50M = 21)ms // // 分频部分 结束 // //++++++++++++++++++++++++++++++++++++++ // 状态机部分 开始 //++++++++++++++++++++++++++++++++++++++ // 状态数较少,独热码编码 parameter NO_KEY_PRESSED = 6b000_001; // 没有按键按下 parameter SCAN_COL0 = 6b000_010; // 扫描第0列 parameter SCAN_COL1 = 6b000_100; // 扫描第1列 parameter SCAN_COL2 = 6b001_000; // 扫描第2列 parameter SCAN_COL3 = 6b010_000; // 扫描第3列 parameter KEY_PRESSED = 6b100_000; // 有按键按下 reg [5:0] current_state, next_state; // 现态、次态 always @ (posedge key_clk, negedge i_rst_n) if (!i_rst_n) current_state = NO_KEY_PRESSED; else current_state = next_state; // 根据条件转移状态 always @ * case (current_state) NO_KEY_PRESSED : // 没有按键按下 if (row != 4hF) next_state = SCAN_COL0; else next_state = NO_KEY_PRESSED; SCAN_COL0 : // 扫描第0列 if (row != 4hF) next_state = KEY_PRESSED; else next_state = SCAN_COL1; SCAN_COL1 : // 扫描第1列 if (row != 4hF) next_state = KEY_PRESSED; else next_state = NO_KEY_PRESSED; KEY_PRESSE

文档评论(0)

文人教参 + 关注
实名认证
文档贡献者

老师教学,学生学习备考课程、成人语言培训课程及教材等为提升学生终身学习竞争力,塑造学生综合能力素质,赋能学生而努力

版权声明书
用户编号:6103150140000005

1亿VIP精品文档

相关文档