利用键盘控制数码管进行十进制数字显示.doc_第1页
利用键盘控制数码管进行十进制数字显示.doc_第2页
利用键盘控制数码管进行十进制数字显示.doc_第3页
利用键盘控制数码管进行十进制数字显示.doc_第4页
利用键盘控制数码管进行十进制数字显示.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

一、课程设计目的 1、学习操作数字电路设计实验开发系统,掌握数码管显示模块的工作原理及应用。2、掌握组合逻辑电路、时序逻辑电路的设计方法。3、学习掌握可编程器件设计的全过程。二、课程设计内容和要求2.1、设计内容1、学习掌握键盘控制模块、数码管显示模块的工作原理及应用;2、熟练掌握VHDL编程语言,编写键盘控制模块的控制逻辑。 2.2、设计要求1、仿真所编写的程序,模拟验证所编写的模块功能;2、下载程序到芯片中,硬件验证所设置的功能,能够实现十六进制数的显示;3、整理设计内容,编写设计说明书。三、课程设计方案及实现情况3.1、设计思路 1、首先设计一个可以实现时序产生信号的电路; 2、其次设计一个可以实现键盘扫描的电路; 3、再次设计一个可以实现键盘翻译及显示的电路; 4、最后将3个模块电路组合成具有实用功能的整合电路。3.2、工作原理及框图1、键盘原理键盘电路网络很像一台微缩的计算机,它拥有自己的处理器和在该处理器之间传输数据的电路,这个电路的很大一部分组成了键矩阵。键矩阵是位于键下方的一种电路网格。在所有的键盘(中,每个电路在每个按键所处的位置点下均处于断开状态。当您按下某个键时,此按键将按下了开关,从而闭合电路,使得少量电流可以通过。开关的机械作用会导致某种振动(称作回弹),处理器可以过滤掉这种振动。如果您按下某键并保持住,则处理器认为您是在反复按下该键。 2、键盘中按键的判断对于键盘中有无键按下的判断是很重要的,具体判断如下:将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与行线相交叉的按键之中。若所有列线均为高电平,则键盘中无键按下。在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与低电平的行线交叉处的按键就是闭合的按键。 图 1 键盘的基本电路图 3、键盘按键对应的编码表如下SEL2-SEL0KIN3-KIN0对应按键00011100 000 1101 6 001 1110 1 001 1101 7 010 1110 2 011 1110 3 100 1101 8 101 1101 9 110 1110 4 111 1110 5 图 2 键盘控制编码表3.3、各模块功能描述时钟模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dclk is port(clk:in std_logic; divclk:out std_logic);end dclk;architecture dclk_arch of dclk is beginprocess(clk)variable cnt:std_logic_vector(1 downto 0);variable a:std_logic;beginif clkevent and clk=1 then if a=0 thenif cnt=11 then a:=1; else cnt:=cnt+1; end if; elsif a=1 thenif cnt=00 then a:=0; else cnt:=cnt-1;end if;end if;end if;divclk=a;end process;end dclk_arch;键盘扫描模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt isport( clk:in std_logic; sel2,sel1,sel0:out std_logic);end cnt;architecture cnt_arch of cnt isbegin process(clk)variable cn:std_logic_vector(2 downto 0);beginif clkevent and clk=1 thenif cn=111 thencn:=000;elsecn:=cn+1;end if;end if;sel0=cn(0);sel1=cn(1);sel2=cn(2);end process;end cnt_arch;键盘译码显示模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yima is port(kin3,kin2,kin1,kin0:in std_logic; sel2,sel1,sel0:in std_logic; Y:out std_logic_vector(9 downto 0);end yima;architecture yima_arch of yima issignal a:std_logic_vector(3 downto 0);signal b:std_logic_vector(2 downto 0);begina=kin3&kin2&kin1&kin0;b=sel2&sel1&sel0;Y=1111110when (b=000 and a=1110 ) else -0 1011111when (b=000 and a=1101 ) else -6 0110000when (b=001 and a=1110 ) else -1 1110000when (b=001 and a=1101 ) else -7 1101101when (b=010 and a=1110 ) else -2 1111001when (b=011 and a=1110 ) else -3 1111111when (b=100 and a=1101 ) else -8 1111011when (b=101 and a=1101 ) else -9 0110011when (b=110 and a=1110 ) else -4 1011011when (b=111 and a=1110 ) else -5 0000000; end yima_arch;3.4、仿真结果 图 3 Cnt键盘扫描模块 图 4 Dclk分频模块仿真图 图 5 键盘译码级显示模块仿真图 图 6 系统总体框图3.5实验箱验证情况验证过程如下:将编写好的程序编译运行并检查无误后下载到装有一款EP1K30TC1443N芯片的实验箱,分配好各个管脚后再次验证次所用程序下载的是否完整后根据课程设计要求按某一个在09的数字键能正确显示所按数字,从而实现利用键盘控制数码管进行十进制数字的显示。 图7 总体电路连接图 图8 按下键“0”时显示结果“0” 图9 按下键“2”时显示结果“2” 图10 按下键“5”时显示结果“5” 图11 按下键“6”时显示结果“6” 图12 按下键“9”时显示结果“9”四、课程设计总结通过本次的课程设计,对所学的硬件语言以及实验的相关注意事项有了进一步的掌握与认识,过程中遇到的些错误及误操作,例如,编写程序时标点的缺失、错误以及程序的繁冗,数据库的滥用、误用及错用,各个基本电路模块的组合方式的不合理,编译时结果的错误判断,下载时误操作引起的实验结果的错误甚至无法显示,还有实验箱的功能验证无方法有了基本的认识以及改正方法。虽然经历过许多难题,但是在老师和同学的帮助下,通过自己的努力后能够基本上完成次课程设计,对自己所学的知识有了一个新的理解,更对自己的专业有了进一步的认识。在沈老师的帮助和指导下,此次的课程设计自己感觉比较成功,同时在

温馨提示

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

评论

0/150

提交评论