正在加载图片...
实验九键盘扫描显示实验 一、实验目的 1、了解普通4×4键盘扫描的原理。 2、进一步加深七段码管显示过程的理解。 二、硬件要求 1、4×4键盘阵列。 2、FPGA主芯片。 3、可变时钟源。 4、七段码显示区。 三、实验原理 本实验主要完成的实验是完成4×4键盘扫描的,然后获取其键值,并对其进行编码, 从而进行按键的识别,并将相应的按键值进行显示。 键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键, 只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出 4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉 低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为 低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取 列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有 哪一位为低电平,那么肯定对应的那一列有按键按下。 获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键 进行匹配,找到键值后在7段码管显示。 四、实验内容及步骤 本实验内容是完成4×4键盘的扫描,然后将正确的键值进行显示,实验步骤如下: 1、编写键盘扫描和显示的HDL代码。 2、用QuartusII对其进行编译仿真。 3、在仿真确定无误后,选择芯片ACEX1KEP1K10TC100一3。 4、给芯片进行管脚绑定,在此进行编译。 5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连 线。 6、给目标板下载代码,在4×4键盘输入键值,观看实验结果。 五、实验连线 如果是调用的本书提供的HDL代码,则实验连线如下: C1k:FPGA工作时钟信号,大约位5KHz至50Kz即可。 Kr[0:3]:分别接4×4键盘部分的R1、R2、R3和R4。 Kc[0:3]:分别接4×4键盘部分的C1、C2、C3和C4。 Sa、Sb、Sc:接七段码显示区的Se10、Sel1和Sel2. A、B、C、D、E、F、G:接七段码显示区的A、B、C、D、E、F和G。 六、实验部分VHDL代码 library ieee; entity keyscan is port(clk in std_logic;--Clock Signal kr inout std_logic_vector(3 downto 0);--Row of Key Scan kc inout std_logic_vector(3 downto 0):--Colume of Key Scan a,b,c,d,e,f,g:out std_logic; --7 segment driver sa,sb,sc out std_logic): --Display Select end keyscan;实验九 键盘扫描显示实验 一、实验目的 1、 了解普通 4×4 键盘扫描的原理。 2、 进一步加深七段码管显示过程的理解。 二、硬件要求 1、 4×4 键盘阵列。 2、 FPGA 主芯片。 3、 可变时钟源。 4、 七段码显示区。 三、实验原理 本实验主要完成的实验是完成 4×4 键盘扫描的,然后获取其键值,并对其进行编码, 从而进行按键的识别,并将相应的按键值进行显示。 键盘扫描的实现过程如下:对于 4×4 键盘,通常连接为 4 行、4 列,因此要识别按键, 只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出 4 行为高电平,然后输出 4 列为低电平,在读入输出的 4 行的值,通常高电平会被低电平拉 低,如果读入的 4 行均为高电平,那么肯定没有按键按下,否则,如果读入的 4 行有一位为 低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取 列值也是如此,先输出 4 列为高电平,然后在输出 4 行为低电平,再读入列值,如果其中有 哪一位为低电平,那么肯定对应的那一列有按键按下。 获取到行值和列值以后,组合成一个 8 位的数据,根据实现不同的编码在对每个按键 进行匹配,找到键值后在 7 段码管显示。 四、实验内容及步骤 本实验内容是完成 4×4 键盘的扫描,然后将正确的键值进行显示,实验步骤如下: 1、编写键盘扫描和显示的 VHDL 代码。 2、用 QuartusII 对其进行编译仿真。 3、在仿真确定无误后,选择芯片 ACEX1K EP1K10TC100-3。 4、给芯片进行管脚绑定,在此进行编译。 5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和 FPGA 之间进行正确连 线。 6、给目标板下载代码,在 4×4 键盘输入键值,观看实验结果。 五、实验连线 如果是调用的本书提供的 VHDL 代码,则实验连线如下: Clk:FPGA 工作时钟信号,大约位 5KHz 至 50KHz 即可。 Kr[0:3]:分别接 4×4 键盘部分的 R1、R2、R3 和 R4。 Kc[0:3]:分别接 4×4 键盘部分的 C1、C2、C3 和 C4。 Sa、Sb、Sc:接七段码显示区的 Sel0、Sel1 和 Sel2。 A、B、C、D、E、F、G:接七段码显示区的 A、B、C、D、E、F 和 G。 六、实验部分 VHDL 代码 library ieee; -------------------------------------------------------------------- entity keyscan is port( clk : in std_logic; --Clock Signal kr : inout std_logic_vector(3 downto 0); --Row of Key Scan kc : inout std_logic_vector(3 downto 0); --Colume of Key Scan a,b,c,d,e,f,g : out std_logic; --7 segment driver sa,sb,sc : out std_logic); --Display Select end keyscan;
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有