基于VHDL的键盘扫描及显示电路_第1页
基于VHDL的键盘扫描及显示电路_第2页
基于VHDL的键盘扫描及显示电路_第3页
基于VHDL的键盘扫描及显示电路_第4页
基于VHDL的键盘扫描及显示电路_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

广西工学院课程设计说明书———装订线——设计题目系别专业班级学生姓名学号指导教师日期基于VHDL的键盘扫描及显示电路摘要运VHDL硬件描述语言和图形设计综合方法,实现了4×4键盘扫描电路的程序设计,通过运用QuartusⅡ软件平台生成电路符号,建立波形文件,设置输入端口,实现模拟仿真,得到仿真波形图。关键字:VHDLQuartusⅡ数码管1题目分析本次课程设计题目为4×4键盘扫描电路的设计。要求通过查阅相关书籍资料,熟悉和初步掌握VHDL语言的语法及其功能,根据要求首先进行理论上的分析,深入分析4×4键盘扫描电路的原理,然后根据分析结果设计程序,进行上机的调试,通过Quartus4.1以上软件进行仿真,并记录仿真的结果。————装订线——矩阵键盘及显示电路能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上,每次新的按键值显示在最右端的第O号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1。总体而言,矩阵键盘及显示电路的设计可分为4个局部:(1)矩阵键盘的行及列的扫描控制和译码。该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。(2)机械式按键的防抖设计。由于机械式按键在按下和弹起的过程中均有5~10ms的信号抖动时间,在信号抖动时间内无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。(3)按键数值的移位存放。由于该设计需要在8个数码管上依次显示前后共8次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。(4)数码管的扫描和译码显示。由于该设计使用了8个数码管,因此需要对每个数码管进行扫描控制,并根据按键值对每个数码管进行7段数码管的译码显示。2矩阵键盘及显示电路的实现本文所设计的矩阵键盘及显示电路的电路符号如图2所示。其中,clk为时钟信号输入端(频率可为1024~32768Hz);start为清零控制端;kbrow为列扫描信号输入端;kbeol为行扫描信号输出端;scan为数码管地址扫描信号输出端;seg7为数码管显示信号输出端。3.矩阵键盘及显示电路的电路符号4×4键盘扫描电路的电路符号如图2所示。其中clk1为时钟信号输入———装订线——4.程序设计4×4键盘扫描电路用VHDL语言描述,全部代码由五个模块组成,其代码分别如下:键盘扫描模块程序、原理图及仿真波形:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysaomiaoisport(en:outstd_logic;state:outstd_logic_vector(1downto0);clk:instd_logic;kbrow:instd_logic_vector(3downto0);kbcol:outstd_logic_vector(3downto0));Endsaomiao;architectureoneofsaomiaoissignalcount:std_logic_vector(1downto0);beginprocess(clk,kbrow)beginen<=not(kbrow(0)orkbrow(1)orkbrow(2)orkbrow(3));if(clk'eventandclk='1')thenifnot(kbrow(0)orkbrow(1)orkbrow(2)orkbrow(3))='1'thencount<=count+1;endif;endif;endprocess;process(clk)beginifclk'eventandclk='1'thencasecountiswhen"00"=>kbcol<="0001";state<="00";when"01"=>kbcol<="0010";state<="01";when"10"=>kbcol<="0100";state<="10";when"11"=>kbcol<="1000";state<="11";whenothers=>kbcol<="1111";endcase;endif;endprocess;End;按键数值输出模块:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityshujuisport(at:outstd_logic_vector(3downto0);tate:instd_logic_vector(1downto0);clk:instd_logic;brow:instd_logic_vector(3downto0));Endshuju;architectureoneofshujuisBeginprocess(clk)beginifclk'eventandclk='1'thencasetateiswhen"00"=>casebrowiswhen"0001"=>at<="1111";when"0010"=>at<="1110";when"0100"=>at<="1101";When"1000"=>at<="1100";whenothers=>null;endcase;when"01"=>casebrowiswhen"0001"=>at<="1011";when"0010"=>at<="1010";when"0100"=>at<="1001";When"1000"=>at<="1000";whenothers=>null;endcase;when"10"=>casebrowiswhen"0001"=>at<="0111";when"0010"=>at<="0110";when"0100"=>at<="0101";When"1000"=>at<="0100";whenothers=>null;endcase;when"11"=>CasebrowisWhen"0001"=>at<="0011";When"0010"=>at<="0010";When"0100"=>at<="0001";When"1000"=>at<="0000";whenothers=>null;endcase;endcase;endif;endprocess;End;防抖模块:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydizfenpisport(n:instd_logic;da:instd_logic_vector(3downto0);data:outstd_logic_vector(3downto0);start:instd_logic;clk:instd_logic;scan:outstd_logic_vector(2downto0));Enddizfenp;architectureoneofdizfenpissignaltemp:std_logic_vector(31downto0);Signalfnq:std_logic;Signalcnt8:std_logic_vector(2downto0);Signalkey:std_logic_vector(7downto0);beginprocess(clk)variablereg8:std_logic_vector(7downto0);beginif(clk'eventandclk='1')thenreg8:=reg8(6downto0)&n;endif;key<=reg8;endprocess;fnq<=key(0)andkey(1)andkey(2)andkey(3)andkey(4)andkey(5)andkey(6)andkey(7);process(fnq,start)beginifstart='0'thentemp<="00000000000000000000000000000000";elsif(fnq'eventandfnq='1')thentemp<=temp(27downto0)&da;endif;endprocess;process(clk,temp,cnt8)beginifclk'eventandclk='1'thencnt8<=cnt8+1;endif;casecnt8iswhen"000"=>scan<="000";data<=temp(3downto0);when"001"=>scan<="001";data<=temp(7downto4);when"010"=>scan<="010";data<=temp(11downto8);when"011"=>scan<="011";data<=temp(15downto12);when"100"=>scan<="100";data<=temp(19downto16);when"101"=>scan<="101";data<=temp(23downto20);when"110"=>scan<="110";data<=temp(27downto24);when"111"=>scan<="111";data<=temp(31downto28);whenothers=>null;endcase;endprocess;End;译码模块:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityyimaisport(data:instd_logic_vector(3downto0);seg7:outstd_logic_vector(7downto0));Endyima;architectureoneofyimaisbeginProcess(data)BeginCasedataisWhen"0000"=>seg7<="00111111";When"0001"=>seg7<="00000110";When"0010"=>seg7<="01011011";When"0011"=>seg7<="01001111";When"0100"=>seg7<="01100110";When"0101"=>seg7<="01101101";When"0110"=>seg7<="01111101";When"0111"=>seg7<="00000111";When"1000"=>seg7<="01111111";When"1001"=>seg7<="01101111";When"1010"=>seg7<="01110111";When"1011"=>seg7<="01111100";When"1100"=>seg7<="00111001";When"1101"=>seg7<="01011110";When"1110"=>seg7<="01111001";When"1111"=>seg7<="01110001";Endcase;Endprocess;End;整体电路程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitykeyboardisport(start1:instd_logic;Clk1:instd_logic;kbrow1:instd_logic_vector(3downto0);scan1:outstd_logic_vector(2downto0);kbcol1:outstd_logic_vector(3downto0);seg71:outstd_logic_vector(7downto0));Endkeyboard;architectureoneofkeyboardisComponentsaomiaoport(en:outstd_logic;state:outstd_logic_vector(1downto0);clk:instd_logic;kbrow:instd_logic_vector(3downto0);kbcol:outstd_logic_vector(3downto0));Endcomponent;Componentshujuport(at:outstd_logic_vector(3downto0);tate:instd_logic_vector(1downto0);clk:instd_logic;brow:instd_logic_vector(3downto0));Endcomponent;Componentdizfenpport(n:instd_logic;da:instd_logic_vector(3downto0);data:outstd_logic_vector(3downto0);start:instd_logic;clk:instd_logic;scan:outstd_logic_vector(2downto0));EndComponent;Componentyimaport(data:instd_logic_vector(3downto0);seg7:outstd_logic_vector(7downto0));EndComponent;Signala:std_logic;signalb:std_logic_vector(1downto0);signalc,d:std_logic_vector(3downto0);BeginU1:

温馨提示

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

评论

0/150

提交评论