1、 1 矩阵键盘接口设计矩阵键盘接口设计 题目:题目:矩阵键盘接口设计矩阵键盘接口设计 一、一、 实验实验要求:要求: 用 12 个按键开关实现如表 1 所示的矩阵键盘,某一 时刻在数码管上显示器对应的键值。 表 1 二、实验二、实验目的:目的: 1. 了解用 12 位按键输入开关来设计并实现一个 3*4 矩阵键盘接口控制器。 2. 了解弹跳消除电路的工作原理。 3. 理解 7 段数码管显示电路的原理。 三、硬件要求:三、硬件要求: 主芯片 EPF10K10LC84-4。 可变时钟源。 12 位按键开关。 一位 7 段数码管。 四、实验四、实验原理原理 该实验系统中没有矩阵键盘, 可以用 12
2、位按键开关来实现矩阵键盘的功能。 表 1 为按键开关所对应的键值,当按键被按下时改按键的节点会呈现0状态, 反之为1 。将 12 个按键进行编码后就可以实现矩阵键盘的功能。 键盘编码电路: 由于每个按键开关都是独立的,故有 12 路输入,3X4 键盘有 12 个键值,4 位二进制数即可表示全部状态。因此键盘编码电路为 12 输入 4 编码器,12 个按 键可分为 10 个数字键和两个功能键。数字键主要用来输入数字,功能键一般实 现一些特殊用途(如确认,清除等) 。4 位输出从 09 表示 10 个数字键,11 和 12 表示两个功能键。 弹跳消除电路弹跳消除电路:因为按键开关是机械式结构,在开
3、关切换的瞬间会在接触点 出现来回弹跳的现象,对于激活关闭一般电器并不会有何影响,但对于灵敏度较 高的电路,却有可能产生误动作而出错。跳现象产生的原因可从图 1 说明。虽然 只是按下按键一次然后放开,然而实际产生的按键信号却不只跳动一次,经过取 样的检查后将会造成误判,以为按键两次。 1 2 3 4 5 6 7 8 9 0 * # 2 图 1 弹跳现象产生错误的抽样结果 图 2 调整抽样频率后得到的抽样结果 因此在开关输入信号处必须加上弹跳消除电路,避免误操作信号的发生。注 意:弹跳消除电路所使用脉冲信号的频率必须要选用合适,频率太低则按键反应 痴动,频率太高则起不到消除弹跳的作用,而且消除弹跳
4、电路设计的不同对频率 也有不同的要求。 弹跳消除电路程序代码: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; library altera; use altera.maxplus2.all; entity debouncing is port ( d_in,clk:in std_logic; dd1,dd0,qq1,qq0:out std_logic; d_out,d_out1:out std_logic); end deboun
5、ce; architecture a of debounce is signal vcc,inv_d:std_logic; 3 signal d1,d0:std_logic; begin vccq0,clk=clk,clrn=inv_d,prn=vcc); dff2:dff port map(d=vcc,q=q1,clk=clk,clrn=q0,prn=vcc); process (clk) begin if clkevent and clk=1 then d0=not q1; d1=d0; end if ; end process; d_out =not (d1 and not d0); e
6、nd a; 程序说明: (1)因为必须取样到三次以上的“1” ,才会输出 1,两次“0” ,才会输出 0; (2) 微分的目的是让每一次对按键反应的时间长度都维持一个脉冲波形的时 间长度。 五、实验五、实验内容内容 分析仿真示例程序理解弹跳消除的实现原理。通过改变 CLK 信号,理解时 钟信号对弹跳消除的影响,分别把时钟调高、调低观察按键反应情况。 六、实验连线六、实验连线 实验原理图如图 3 所示: 图 3 矩阵键盘控制接口原理图 程序步骤: 1. 软件的启动:进入 altera 软件包,打开 MAX+plus 软件如下图 4 所示。 4 图 4 max+plus 页面 2. 启动 fileopen菜单,弹出设计输入方式选择窗口,如下图 5。如图选择原图, 单击 ok 键,即把原理图打开。 图 5 文件选择编辑 3. 点击 fileprojectset project to current file 设置此项目为当前文件。启动 MAX+PLUScompiler 编译器菜单,按 start 开始编译: 5 图 6 矩阵键盘控制接口原理图编辑结果 4.