exp3矩阵键盘扫描电路设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一实验目的
设计并实现一个4×4键盘接口控制器,含有时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路、按键码存储电路、显示电路。要求:当按下某一键时,4位LED上显示对应的键值。
二实验内容
实验仪器中4×4矩阵键盘的电路原理图如图1所示。
图1 4×4矩阵键盘电路原理图
当X1—X4四条行选线中有其中一位为0时,读入Y1—Y4的四位行值。如Y1—X4输出为:0111,读入的Y1—Y4值为:0111,则对应按下的键为S1;当读入的Y1—Y4值为:1111时,则说明没有按键按下。X1—X4为扫描信号,在程序中我们用SEL[3..0]表示;Y1—Y4为键值读取信号,在程序中我们用KEYIN[3..0]表示。
扫描信号为SEL[3..1],当SEL1为‘0’,其他位为‘1’,我们按下第一排第一键,此时KEYIN0输出‘0’,KEYIN1—KEYIN3输出全为‘1’,按下第二排第二键时,KEYIN1输出‘0’,其他输出‘1’;当SEL2为‘0’,其它位为‘1’时,我们按下第一排第二键,此时KEYIN0输出‘0’,KEYIN1—KEYIN3输出全为‘1’,同理其他键依此类推。
键盘上的每个按键就是一个开关,当某键被按下时,该按键的接点会呈现‘0’状态,反之为‘1’。扫描信号为SEL[3..0]输出到键盘,所以第一次只能扫描一排,依此周而复始。按键位置与数码的关系如表1所示。
若从KEYIN[3..0]输出的皆为‘1’时,表示没有按键按下,代表该列没有按键被按下,则不进行按键编码的操作,反之,如果有被按下时,则应将KEYIN[3..0]读出的值送到译码电路进行编码。
表1 按键位置与键值对应关系
光靠矩阵键盘是无法正确地完成输入工作的,另外还需搭配以下几个电路模块:
1、时钟产生电路
当一个系统中使用不同操作频率的脉冲波形时,最方便的方法就是利用一个自由计数器来产生各种频率。本电路中就使用三种不同频率的工作脉冲波形。它们分别是:系统时钟(它是系统内部所有时钟的提供者,频率最高)、弹跳消除取样信号、键盘扫描信号和七段显示器扫描信号。在很多的电路设计中,键盘扫描信号和七段显示器扫描信号可以使用相同的时钟信号,本设计也采用此方法。
具体做法:
●先建立一个N位的计数器,N的大小由电路的需求所定。N的值越大,分频的
次数就越多,但所占用的空间也越大。
●若要得到一个脉冲波形信号,可以只取计数器中一个值,如使用CLK<=Q(4)
语句,其值变化为0-1-0-1-1……。
●若要得到脉冲波形序列,可以取计数器中的几个值,如使用CLK<=Q(4
DOWNTO 3)语句,其值变化为00-01-10-11-00-01……。
2、键盘扫描电路
扫描电路的作用是用来提供键盘扫描信号(表1中的SEL3—SEL0)的电路,扫描信号的变化的顺序依次为1110—1101—1011—0111—1110依次的周而复始。扫描时依序分别扫描4列按键,当扫描信号为1110时,扫描0这一列按键……每扫描一列按键,就检查一次是否有按键按下,如果这排有按键按下,就马上停止扫描,立即进行按键编码动作,存储键码,如果没有按键按下,则继续扫描下一列。
3、弹跳消除电路
因为按键大多是机械式开关结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,对于激活关闭一般电器并不会有何影响,但对于灵敏度较高的电路,却有可能产生误动作而出错。
弹跳现象产生的原因可从图2说明。虽然只是按下按键一次然后放掉,然而实际产生的按键信号却不只跳动一次,经过取样的检查后将会造成误判,以为按键两次。
图2 弹跳现象产生错误的抽样结果
如果调整抽样频率(如图3),可以发现弹跳现象获得了改善。
图3 调整抽样频率后得到的抽样结果
因此必须加上弹跳消除电路,避免误操作信号的发生。注意,弹跳消除电路所使用脉冲信号的频率必须比其它电路使用的脉冲信号的频率更高;通常将扫描电路或LED 显示电路的工作频率定在24H Z 左右,两者的工作频率是通常的4倍或更高。 4、 键盘译码电路
上述键盘中的按键可分为数字键和功能键。 数字键主要用来输入数字,但从表2中发现,键盘所产生的输出KEYIN3—KEYIN0无法拿来直接使用;另外不同的数字按键也担负不同的功能,因此必须由键盘译码电路来规划第个按键的输出形式,以便执行相应的动作。
有了表2,要写出键盘译码电路的VHDL 程序就非常容易了,尤其针对有表可以对照的电路设计,只要使用CASE-WHEN 或WHNE-ELSE 语句,便可轻松完成设计。
表2 键盘参数表
按键信号 抽样信号 抽样结果
按键信号 抽样信号 抽样结果
译码电路负责的工作有:
a)判别是否有键按下。
b)若被按下的是数字键或字母键,则编码成相对应的16进制编码。
c)若被按下的是数字键,除进行16进制编码外,同时还编码成BCD
码。
d)若按下是的功能键或其他按键,则编码成16进制编码。
5、按键码存储电路
因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕后记录下来。按键存储电路可以用移位寄存器构成,在这里对移位寄存器就不再介绍,请参阅前面相关实验。
键盘接口电路的引脚如图4所示。
图4 矩阵键盘接口模块引脚图
三实验连线
功能选择位VGA[3..0]状态为0101,即4X4键盘功能选取,此时16位数据总线只有最低的8位有效,其中高4位为键盘的4位行扫描输出,即SCAN[3..0];低4位为键盘的4位列查询输入,即KEYIN[3..0]。
RST即对应CPU板上的RESET
CLK_IN即对应CPU板上的50MHz晶振输入,50MHz输入时钟经内部分频产生扫描时钟
LEDS0—LED3分别对应PIO9—PIO12,STATE对应PIO16,将PIO9—PIO12、PIO16用导线连接L1—L5