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

下载本文档

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

文档简介

一、课程设计目的1、学习操作数字电路设计实验开发系统,掌握数码管显示模块的工作原理及应用。2、掌握组合逻辑电路、时序逻辑电路的设计方法。3、学习掌握可编程器件设计的全过程。二、课程设计内容和要求2.1 设计内容1、学习掌握键盘控制模块、数码管显示模块的工作原理及应用;2、熟练掌握VHDL编程语言,编写键盘控制模块的控制逻辑。2.2 设计要求1、仿真所编写的程序,模拟验证所编写的模块功能;2、下载程序到芯片中,硬件验证所设置的功能,能够实现十六进制数字的显示;3、整理设计内容,编写设计说明书。三、设计方案及实现情况3.1、设计思路时序产生电路键盘译码及显示电路键盘扫描电路 图 1 实验设计思路总体图3.2、工作原理及框图1、键盘原理简述键盘电路网络很像一台微缩的计算机,它拥有自己的处理器和在该处理器之间传输数据的电路,这个电路的很大一部分组成了键矩阵。键矩阵是位于键下方的一种电路网格。在所有的键盘(中,每个电路在每个按键所处的位置点下均处于断开状态。当您按下某个键时,此按键将按下了开关,从而闭合电路,使得少量电流可以通过。开关的机械作用会导致某种振动(称作回弹),处理器可以过滤掉这种振动。如果您按下某键并保持住,则处理器认为您是在反复按下该键。 2、键盘中按键的判断对于键盘中有无键按下的判断是很重要的,具体判断如下:将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与行线相交叉的按键之中。若所有列线均为高电平,则键盘中无键按下。在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与低电平的行线交叉处的按键就是闭合的按键。3、 键盘按键对应的编码表如下SEL2-SEL0KIN3-KIN0对应的按键000111000001101600111101001110170101110201111103110111041111110 5 图 2 按键编码表4、各个模块程序代码如下时序产生电路分频器DCLK程序代码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(6 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 -60110000when (b=001 and a=1110 ) else -11110000when (b=001 and a=1101 ) else -71101101when (b=010 and a=1110 ) else -21111001when (b=011 and a=1110 ) else -30110011when (b=110 and a=1110 ) else -41011011when (b=111 and a=1110 ) else -50000000;end yima_arch;3.3、各模块功能描述1、时序产生电路是由分频器DCSSSSLK来实现的,时序产生电路产生时钟信号用来控制整个电 路各功能模块功能的实现。2、键盘扫描信号的变化顺序为000-001-010-011-110-111,依次循环变化来扫描 8列按键,键盘扫描电路是用来分析输入信号的。3、键盘扫描译码及显示电路中,当按下数字键时,键盘所产生的的输出KIN3KIN0跟扫描 信号SEL2SEL0结合,编译成与数字键键值相对应数字的七段显示码,输出到数码管显 示,键盘译码电路经过译码后在数码管上显示出输入的信息。3.4、仿真结果 图 3 时序产生电路分频器DCLK 图 4 键盘扫描电路 图 5 键盘译码及显示电路 图 6 总体仿真图3.5、实验箱验证情况 图 7 设计最终线路连接图 图 8 按下“0”时的显示结果“0” 图 9 按下“5”时的显示结果为“5” 图 10 按下“7”时的显示结果为“7”四、设计心得体会通过本次课程设计,我熟悉了硬件电路设计中的一些基本要求,并能够独立的完成一定要求的电路设计任务。而且在原有的基础上加深了对所学知识的应用以及对电路软件max pllus II的熟悉。这是我此次设计中非常高兴的一件事。同时我发现了自己到现在为止还存在很多的不足,知识还是相当的缺乏。此次设计让我对设计工作有了全新的认识设计者必须有广泛的基础知识,缜密的思路以及认真地工作态度和坚定的毅力。通过设计,发现自己的不足,找到了自己努力方向,改进方向。同时更让我认识到理论和实践必须相结合,通过理论指导实践,在实践中理解理论。同时借此机会,我想对在设计过程中给予我大力帮助的沈老师说声:谢谢!是你给了我许多的指导和帮助,才使我能

温馨提示

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

最新文档

评论

0/150

提交评论