VHDL键盘去抖动计数器教学内容_第1页
VHDL键盘去抖动计数器教学内容_第2页
VHDL键盘去抖动计数器教学内容_第3页
VHDL键盘去抖动计数器教学内容_第4页
VHDL键盘去抖动计数器教学内容_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。VHDL键盘去抖动计数器-实验三键盘扫描显示实验实验目的1.了解普通44键盘扫描的原理。2.掌握组合逻辑电路和时序逻辑电路的混和设计。3.进一步加深七段码管显示过程的理解。二、实验仪器及设备1、44键盘阵列。2、FPGA主芯片。3、可变时钟源。4、七段码显示区。5、LED显示模块。三、实验原理本实验主要完成的实验是完成44键盘扫描的,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。键盘扫描的实现过程如下:对于44键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行

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

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

4、ntityscanfisport(clk:instd_logic;-扫描时钟信号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;architectureoneofscanfissignalcount

5、: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)beginifclkeventandclk=1thencountkbrow=0001;stakbrow=0010;stakbrow=0100;stakbrow=

6、1000;stakbrow=1111;endcase;endif;endprocess;-行扫描译码process(clk,start)beginifstart=0thenseg7casekbcoliswhen0001=seg7=1111001;datseg7=1101101;datseg7=0110000;datseg7=1111110;datseg7=0000000;datcasekbcoliswhen0001=seg7=1110000;datseg7=1011111;datseg7=1011011;datseg7=0110011;datseg7=0000000;datcasekbcoli

7、swhen0001=seg7=0011111;datseg7=1110111;datseg7=1111011;datseg7=1111111;datseg7=0000000;datcasekbcoliswhen0001=seg7=1000111;datseg7=1001111;datseg7=0111101;datseg7=1001110;datseg7=0000000;datseg7=0000000;endcase;endif;endprocess;fn=not(dat(0)anddat(1)anddat(2)anddat(3)anddat(4);-产生按键标志位,用于存储按键信息proce

8、ss(fn)beginiffneventandfn=1then-按键信息存储seg7_out=seg7;endif;endprocess;endone;从实验的结果可以看出,当使能端处于高电平即有效电平时,把时钟输出按键打开,此时按。2、按键加1或减1显示并且移位VHDL代码:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityabc2isport(key1:instd_logic;key2:instd_logic;clk:instd_logic;wei:outstd_logic_vector(

9、2downto0);led_seg:outstd_logic_vector(7downto0);out0:outstd_logic_vector(2downto0);out1:outstd_logic_vector(2downto0);out2:outstd_logic_vector(2downto0);out3:outstd_logic_vector(2downto0);out4:outstd_logic_vector(2downto0);out5:outstd_logic_vector(2downto0);end;architectureaofabc2issignaltemp1:std_l

10、ogic_vector(2downto0);signaltemp2:std_logic_vector(2downto0);signalflag1:std_logic_vector(1downto0);signalflag2:std_logic_vector(1downto0);-signalwei_si:std_logic_vector(2downto0);signalnum:std_logic_vector(2downto0);signalnum0:std_logic_vector(2downto0);signalnum1:std_logic_vector(2downto0);signaln

11、um2:std_logic_vector(2downto0);signalnum3:std_logic_vector(2downto0);signalnum4:std_logic_vector(2downto0);signalnum5:std_logic_vector(2downto0);signalnum6:std_logic_vector(2downto0);signalnum7:std_logic_vector(2downto0);beginp1:process(clk)variablewei_si:std_logic_vector(2downto0):=000;beginifclkev

12、entandclk=1thentemp1(0)=key1;temp1(1)=temp1(0);temp1(2)=temp1(1);temp2(0)=key2;temp2(1)=temp2(0);temp2(2)=temp2(1);iftemp1=111thenflag1(0)=1;flag1(1)=flag1(0);endif;iftemp1=000thenflag1(0)=0;flag1(1)=flag1(0);endif;iftemp2=111thenflag2(0)=1;flag2(1)=flag2(0);endif;iftemp2=000thenflag2(0)=0;flag2(1)=

13、flag2(0);endif;ifflag1=10thennum0=num0+1;num1=num0;num2=num1;num3=num2;num4=num3;num5=num4;num6=num5;num7=num6;endif;ifflag2=10thennum0=num0-1;num1=num0;num2=num1;num3=num2;num4=num3;num5=num4;num6=num5;num7=num6;endif;wei_si:=wei_si+1;weinumnumnumnumnumnumnumnumled_segled_segled_segled_segled_segle

14、d_segled_segled_segnull;endcase;endprocessp4;out0=num;out1=num1;out2=num2;out3=num3;out4=num4;out5=num5;end;3、键盘扫描带有去抖并且移位VHDL代码:-按键libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjianpanisport(clk:instd_logic;-100mhz=0.01us1us100col:instd_logic_vector(3downto0);row:outst

15、d_logic_vector(3downto0);wei:outstd_logic_vector(2downto0);duan:outstd_logic_vector(7downto0);end;architectureaofjianpanissignalcount:std_logic_vector(16downto0);signalwei_s:std_logic_vector(2downto0);signalt:std_logic_vector(5downto0);signalflag:std_logic;signalnum0:std_logic_vector(4downto0);-inte

16、ger;signalnum1:std_logic_vector(4downto0);-integer;signalnum2:std_logic_vector(4downto0);-integer;signalnum3:std_logic_vector(4downto0);-integer;signalnum4:std_logic_vector(4downto0);-integer;signalnum5:std_logic_vector(4downto0);-integer;signalnum6:std_logic_vector(4downto0);-integer;signalnum7:std

17、_logic_vector(4downto0);-integer;signalnum8:std_logic_vector(4downto0);-integer;signalduan_s:std_logic_vector(4downto0);-integer;signalold_num:std_logic_vector(4downto0);-integer;signalp_num:std_logic_vector(4downto0);-integer;signalstate:std_logic_vector(4downto0);-integer;beginprocess(clk)beginifc

18、lkeventandclk=1thencount=count+1;ifcount=11000011010100000thencount0);endif;endif;endprocess;process(clk,count(16)beginifcount(16)eventandcount(16)=0then-ifclkeventandclk=1thenwei_s=wei_s+1;t=t+1;endif;endprocess;weiduan_sduan_sduan_sduan_sduan_sduan_sduan_sduan_swei_sduanduanduanduanduanduanduanduanduanduanduanduanduanduanduanduannull;endcase;endprocess;process(clk,state)begincasestateiswhen00000=rowrowro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论