vhdl键盘去抖动计数器

vhdl键盘去抖动计数器

ID:29631105

大小:60.01 KB

页数:11页

时间:2018-12-21

vhdl键盘去抖动计数器_第1页
vhdl键盘去抖动计数器_第2页
vhdl键盘去抖动计数器_第3页
vhdl键盘去抖动计数器_第4页
vhdl键盘去抖动计数器_第5页
资源描述:

《vhdl键盘去抖动计数器》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验三键盘扫描显示实验一、实验目的1.了解普通4×4键盘扫描的原理。2.掌握组合逻辑电路和时序逻辑电路的混和设计。3.进一步加深七段码管显示过程的理解。二、实验仪器及设备1、4×4键盘阵列。2、FPGA主芯片。3、可变时钟源。4、七段码显示区。5、LED显示模块。三、实验原理本实验主要完成的实验是完成4×4键盘扫描的,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输

2、出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管和LED显示。四、实验内容(1)本实验内容是完成4×4键盘的扫描,然后将正确的键值进行显示,实验步骤如下:1、编写键盘扫描和显示的VHDL代码。2、用MaxPlusII对其

3、进行编译仿真。3、在仿真确定无误后,选择芯片ACEX1KEP1K30QC208。4、给芯片进行管脚绑定,在此进行编译。5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连线。6、给目标板下载代码,在4×4键盘输入键值,观看实验结果。(2)按键加1减1显示并且移位的程序与调试。五、实验数据记录与分析1、4×4键盘的扫描VHDL代码:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityscanfisport(clk:instd_logic;-------------扫描时钟

4、信号start:instd_logic;-------------开始信号,高电平有效kbcol:instd_logic_vector(3downto0);--------------行扫描信号kbrow:outstd_logic_vector(3downto0);-------------列扫描信号seg7_out:outstd_logic_vector(6downto0);-------------七段显示控制信号(abcdefg)scan:outstd_logic_vector(2downto0));-------------数码管地址选择控制信号endscanf;architectur

5、eoneofscanfissignalcount:std_logic_vector(1downto0);signalsta:std_logic_vector(1downto0);signalseg7:std_logic_vector(6downto0);signaldat:std_logic_vector(4downto0);signalfn:std_logic;------------------按键标志位,判断是否有键被按下beginscan<="000";---------------只使用一个数码管显示---------------------循环扫描计数器process(clk)be

6、ginifclk'eventandclk='1'thencount<=count+1;endif;endprocess;---------------------循环列扫描process(clk)beginifclk'eventandclk='1'thencasecountiswhen"00"=>kbrow<="0001";sta<="00";when"01"=>kbrow<="0010";sta<="01";when"10"=>kbrow<="0100";sta<="10";when"11"=>kbrow<="1000";sta<="11";whenothers=>kbrow<="1111"

7、;endcase;endif;endprocess;---------------------行扫描译码process(clk,start)beginifstart='0'thenseg7<="0000000";elsifclk'eventandclk='1'thencasestaiswhen"00"=>casekbcoliswhen"0001"=>seg7<="1111001";dat<="00

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。