- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- Appendix IV_Division of Responsibilities设计内容分工表_120401.docx
- Appendix V_Deliverables设计团队设计成果_120401_EN CH_Redlined.docx
- BIAD_20120815-BIM深度及BIM文件夹.docx
- BIAD设计团队对于Z15项目BIM实施导则的回复(草稿)20120806.docx
- DTC服务配置指南.doc
- RCII-CY1C12开发板USB IN示例说明.doc
- RCII-CY1C12开发板USB OUT示例说明.doc
- U8-OA12.0企业版安装文档.docx
- XDS100系列仿真器驱动清除及再安装的方法.doc
- Z15项目软硬件配置方案建议_v1.docx
文档评论(0)