当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

中国地质大学(武汉):《EDA技术基础与实践(Electronic Design Automation)》课程教学资源(实验内容)实验九 键盘扫描显示实验

资源类别:文库,文档格式:PDF,文档页数:3,文件大小:76.9KB,团购合买
点击下载完整版文档(PDF)

实验九键盘扫描显示实验 一、实验目的 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;

architecture behave of keyscan is signal display std_logic_vector(6 downto 0): signal dcount std_logic_vector(2 downto 0); signal keyr,keyc std_logic_vector(3 downto 0); signal kcount std_logic_vector(2 downto 0); signal kflagl,kflag2 std logic; signal buff0,buff1,buff2,buff3,buff4,buff5,buff6,buff7 std_logic_vector(6 downto 0); begin process(clk) --In this process,two counts will accumulate begin if(clk'event and clk='1')then dcount<=dcount+l; kcount<=kcount+1; end if; end process; process(clk) --In this process, the main task is to scan keyboard begin if(clk'event and clk='1')then if(kcount=0)then k<="1111"; kc<="0000”: elsif(kcount=1)then keyr<=kr: … keyc<=kc; end if; end if; end process; process(clk) change the key flags begin if(clk'event and clk='1')then if(kcount=4 and keyr="1111")then kf1ag1<='0': elsif(kcount=4)then kf1ag1<'1': end if; kflag2<=kflagl; end if; end process: process(clk) -- shift the displays begin if(clk'event and clk='1')then if(kcount=5 and kflagl='1'and kflag2='0')then buffO<=buffl; … buff6<=buff7: end if;

-------------------------------------------------------------------- architecture behave of keyscan is signal display : std_logic_vector(6 downto 0); signal dcount : std_logic_vector(2 downto 0); signal keyr,keyc : std_logic_vector(3 downto 0); signal kcount : std_logic_vector(2 downto 0); signal kflag1,kflag2 : std_logic; signal buff0,buff1,buff2,buff3,buff4,buff5,buff6,buff7 : std_logic_vector(6 downto 0); begin process(clk) --In this process, two counts will accumulate begin if(clk'event and clk='1') then dcount<=dcount+1; kcount<=kcount+1; end if; end process; process(clk) --In this process, the main task is to scan keyboard begin if(clk'event and clk='1') then if(kcount=0) then kr<="1111"; kc<="0000"; elsif(kcount=1) then keyr<=kr; …… keyc<=kc; end if; end if; end process; process(clk) -- change the key flags begin if(clk'event and clk='1') then if(kcount=4 and keyr="1111") then kflag1<='0'; elsif(kcount=4) then kflag1<='1'; end if; kflag2<=kflag1; end if; end process; process(clk) -- shift the displays begin if(clk'event and clk='1') then if(kcount=5 and kflag1='1' and kflag2='0') then buff0<=buff1; …… buff6<=buff7; end if;

end if; end process; process(clk) --get the result of the key begin if(clk'event and clk='1')then if(kcount=5)then if(keyr="1110")then case keyc is when"1110"=>buff7buff7buff7displaydisplaydisplay<="0000000": end case; end if; end process; process(clk) -In this process,a,b,c,d,e,f,g will output begin if(clk'event and clk='1')then a<=display(0); 0。年ge g<=display(6); end if; end process: end behave: 七、实验报告要求 1、总结FPGA是如何识别按键的?与单片机读取键值有何不同? 2、在深入理解了4×4键盘实现的原理基础上,试试利用VHDL在目标器件FPGA/CPLD上实 现PS/2键盘接口。 3、比较4×4键盘与PS/2键盘接口用FPGA实现方法的异同点

end if; end process; process(clk) -- get the result of the key begin if(clk'event and clk='1') then if(kcount=5) then if(keyr="1110") then case keyc is when "1110"=>buff7buff7buff7displaydisplaydisplay<="0000000"; end case; end if; end process; process(clk) --In this process, a,b,c,d,e,f,g will output begin if(clk'event and clk='1') then a<=display(0); …… g<=display(6); end if; end process; end behave; 七、实验报告要求 1、 总结 FPGA 是如何识别按键的?与单片机读取键值有何不同? 2、 在深入理解了 4×4 键盘实现的原理基础上,试试利用 VHDL 在目标器件 FPGA/CPLD 上实 现 PS/2 键盘接口。 3、 比较 4×4 键盘与 PS/2 键盘接口用 FPGA 实现方法的异同点

点击下载完整版文档(PDF)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
已到末页,全文结束
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有