4×4键盘扫描电路设计
设计项目成绩评定表
设计报告书目录
一、设计目的 . ................................................................ 3 二、设计思路 . ................................................................ 3 三、设计内容 . ................................................................ 4
3.1、原理分析 . ........................................................... 4
3.1 1、4* 4键盘的扫描 ............................................... 4 3.1.2、扫描结果的显示 . ............................................... 5 3.1.3、电路符号 . ..................................................... 5 3.1.4、数码管地址选择控制信号 . ....................................... 6 3.2、程序设计 . ........................................................... 6 3.3、管脚分配 . .......................................................... 10 四、系统调试与结果 . ......................................................... 11 五、主要元器件与设备 . ....................................................... 12 六、课程设计体会 . ........................................................... 13 七、参考文献 . ............................................................... 13
一、设计目的
1、掌握常用的输入设备—行列式键盘接口电路的实现方法。 2、学习较复杂的数字系统设计方法。
二、设计思路
如下图所示为“4 * 4键盘”模拟图。行“kbrow ”有四行:kbrow0、kbrow1、kbrow2、kbrow3。列“kbcol ”有四列:kbcol0、kbcol1、kbcol2、kbcol3 通过给四行赋值循环地对每行进行扫描,例如:通过行线赋值为“1000”时,这样就使得第0行“0键、1键、2键、3键”处在高电平的状态下。此时如果0键被按下,那么就有第0列输出为高电平。即四位kbcol 输出为“1000”,获取键值为“0”然后在7段数码管上显示出来。
图1 4 * 4键盘
三、设计内容
3.1、原理分析
在数字系统设计中,4*4矩阵键盘是一种常见的输入装置,通常作为系统的输入模块。对应于键盘上每一个键的识别,一般采用扫描的方法来实现。下面介绍一种用列信号进行扫描时的基本原理和流程,如图2所示。当进行列扫描时,扫描信号由列引脚进入键盘,以1000、0100、0010、0001的顺序每次扫描不同的一列,然后读取行引脚的点评信号,以此可以判断是哪个按键被按下。例如,当扫描行信号独处的值为“0000”时,表示正在扫描“89AB ”一列,如果该列没有按键被按下,则由行信号读出的值为“0000”;反之,如果按键“9”被按下时,则该行信号读出的值为“0110”。
图2 4 * 4键盘及行列代码
3.1 1、4* 4键盘的扫描
在这一部分中,利用时钟信号进行扫描和频率计数器的计数来完成对键盘的扫描。程序配套的4*4矩阵键盘电路图如下图所示:
图3 程序配套的4*4矩阵键盘电路图
时钟信号给定相应的时钟信号,通过它的上升沿信号给计数器赋值。并同时读取复位信号,一旦获取到相应的复位信号,所有键盘值即被初始化复位。
3.1.2、扫描结果的显示
用7段数码管显示相应的扫描结果。其中7段数码管采用共阴极读取键值。
当某一键被按下,相应的7段数码管获得高电平,便显示该键值,如图4所示:
图4 7段数码管及所对应的I/O接口
3.1.3、电路符号
4*4矩阵键盘扫描电路的电路符号如图5所示。输入信号:时钟信号clk ;开始信号start ;行扫描信号kbrow[3:0]。输出信号:列扫描信号kbcool[3:0];7段显示控制信号seg7_out[6:0];数码管地址选择控制信号scan[2:0],
图5 4*4矩阵键盘扫描电路的电路符号
3.1.4、数码管地址选择控制信号
数码管地址选择控制信号scan[2:0]用于选择哪个数码管显示数字,8个数码管(SM8-SM1)为共阴极数码管(段码为高电平点亮数码管),I/O2-I/O0为数码管位选,位选对应的数码管关系如下表一所示:
3.2、程序设计
module jp(kbrow,seg7_out,scan,clk,start,kbcol); output [3:0] kbrow;// 列扫描信号 output [6:0]seg7_out;// 7段显示控制信号 output [2:0] scan;// 数码管地址选择控制信号
input clk,start;// 扫描时钟信号,开始信号,高电平有效
input [3:0] kbcol;// 行扫描信号 reg [3:0] kbrow; reg [6:0]seg7_out; reg [2:0] scan; reg [1:0] sta;
reg [1:0] count;
reg [6:0] seg7; reg [4:0] dat;
reg fn;// 按键标志位,判断是否有键被按下 initial
scan
count
2'b00:begin kbrow
4'b0001:begin seg7
4'b0001:begin seg7
default:begin seg7
4'b0001:begin seg7
4'b0001:begin seg7
default:seg7
endcase end end always begin
fn
//产生按键标志位,用于储存按键信息 always @ (posedge fn)// 按键信息储存 begin
seg7_out
3.3、管脚分配
表二:管脚分配表
四、系统调试与结果
将实验箱与微机和电源分别连接好。首先检测试验箱是否可以使用,经检测无误后,开通电源。根据引脚的锁定情况,将clk 时钟接128Hz 时钟输入,对引脚配置编译后,可将设计好的程序下载到EDA 实验箱,即可测试功能。
当对应“数字E ”按键的按下,在实验箱的7段数码管上,会显示对应的数字E 。 实验效果图如下图所示:
五、主要元器件与设备
1、EDA 技术试验箱一个
2、计算机一台 3、Quartus Ⅱ软件
六、课程设计体会
通过此次课程设计,让我对EDA 这门技术有了更深的体会,并更好的
学会了使用Quartus Ⅱ软件进行硬件设计。
此次课程设计时基于Verilog HDL语言进行的矩阵键盘控制接口电路设
计,在课程设计时,我逐渐掌握了Verilog HDL语言的语句及语法等的使用。但在学习过程中,也遇到了很多困难,尤其是Verilog HDL语言的运用。我先上网找了一些资料和程序,一点点的看,慢慢摸索着学习写语句。最后在老师和同学的帮助下,终于完成了矩阵键盘控制接口电路的设计。
七、参考文献
[1] 宋烈武. EDA技术与实践教程. 北京:电子工业出版社,2009.8
[2] 江国强. 数字系统的V erilog HDL设计. 北京: 机械工业出版社,2007.8
[3] 罗杰. Verilog HDL与数字ASIC 设计基础. 武汉:华中科技大学出版社,2008年3月 [4] 周润景 苏良碧. 基于Quartus II的数字系统Verilog HDL设计实例详解. 北京:电子工业出版社,2010.5
[5] 潘松 黄继业 潘明. EDA技术实用教程—Verilog HDL版(第四版). 北京:科学出版社,2010