版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学课程设计说明书学生姓名:金博楠学 号:0906024139学 院 :电子与计算机科学技术学院专 业 :微电子题 目 :利用键盘控制数码管进行十进制数字显示指导教师: 崔永俊 职称 : 副教授2012 年 6 月 22 日目录1、课程设计的目的 12、课程设计内容和要求 12.1 、设计内容 12.2 、设计要求 13、设计方案及实现情况 13.1 、设计思路 13.2 、工作原理及框图 13.3 、各模块功能描述 33.4 、仿真结果 93.5 、试验箱验证情况 104、课程设计总结 115、参考文献 121、课程设计的目的1)、学习操作数字电路设计实验开发系统,掌握数码管显示模块的工
2、作原理及应用。2)、掌握组合逻辑电路、时序逻辑电路的设计方法。3)、学习掌握可编程器件设计的全过程。2、课程设计内容和要求2.1 、设计内容1)、学习掌握键盘控制模块、数码管显示模块的工作原理及应用;2)、熟练掌握 VHDL编程语言,编写键盘控制模块的控制逻辑。2.2 、设计要求1)、仿真所编写的程序,模拟验证所编写的模块功能;2)、下载程序到芯片中,硬件验证所设置的功能,能够实现十进制数的显示;3)、整理设计内容,编写设计说明书。3、设计方案及实现情况3.1 、设计思路1)、键盘不断扫描,有按键按下则输出相应信号,并且发出使能信号给处理模块。2)、处理模块对收到的信号进行判断,决定执行什么操
3、作,对数据进行运算。3)、对于数字键需要移位显示,功能键要考虑优先级判断,进行倒计时操作时要能对时 钟信号分频自减。4)、专门的程序段用来不断将当前数据各位求出,译码成显示内容输给数据选择模块。5)、数据选择模块根据扫描电路选择信号将各位数字显示出来。3.2 、工作原理及框图1、键盘原理键盘电路网络很像一台微缩的计算机,它拥有自己的处理器和在该处理器之间传输 数据的电路,这个电路的很大一部分组成了键矩阵。键矩阵是位于键下方的一种电路网 格。在所有的键盘(中,每个电路在每个按键所处的位置点下均处于断开状态。当您按 下某个键时,此按键将按下了开关,从而闭合电路,使得少量电流可以通过。开关的机 械作
4、用会导致某种振动(称作回弹) ,处理器可以过滤掉这种振动。如果您按下某键并保持住,则处理器认为您是在反复按下该键。试验箱上的键盘可以看做是 8*4 的矩阵键盘(虽然外部不是),8行由 38 译码器选择,所以有外部 sel0-2 三根线控制扫描。2、键盘中按键的判断 对于键盘中有无键按下的判断是很重要的,具体判断如下:将全部行线置低电平, 然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的 键位于低电平线与行线相交叉的按键之中。若所有列线均为高电平,则键盘中无键按下。 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电 平,即在置某根行线为低电
5、平时,其它线为高电平。在确定某根行线位置为低电平后, 再逐行检测各列线的电平状态。若某列为低,则该列线与低电平的行线交叉处的按键就 是闭合的按键。键盘扫描模块在时钟下不断将行置零,扫描列的状态,判断按键。Sel2-0Kin3-0对应按键00011100001111010101110201111103110111041111110500011016001110173、键盘按键对应的编码Sel2-0Kin3-0对应按键10011018101110191101011NEXT0001011LAST1111011ENTER1011110ESC1101101A(+)1111101B(-)4、数据处理 键盘
6、扫描模块检测到按键按下后,给下级发出使能脉冲,同时将按键信息给数据处理模 块。根据按键不同进行不同处理。数字键按下时,要进行移位操作;加减键按下时要进行寄存操作;自加减键按下是要进 行加减 1 操作;清零键按下时要进行全部清零;确认键按下时要进行计算操作或者倒计时操 作。这就需要设立一些标志位来判断。计算采用一位 BCD形式计算,进借位标志位辅助,这样比用实数计算后转 BCD形式的电路简单高效。处于倒计时模式时,引入外部时钟,内部分频后自减一操作。5、多路选择显示 四个需要显示的数码管的值始终输入,通过片选决定某一时刻那个值输出。选择信号即 为扫描输出信号,因为数码管和键盘是共用一个扫描端。所
7、以当扫描信号选中相应数码管时 让对应值输出即可。6、整体电路结构框图图 1. 原理图框架3.3 、各模块功能描述扫描模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;- 输入时钟- 有键按下时输出使能ENTITY scan ISPORT(clk:IN STD_LOGIC;en:OUT STD_LOGIC;data:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); slk:OUT STD_LOGIC_VECTOR(2 D
8、OWNTO 0); kin:IN STD_LOGIC_VECTOR(3 DOWNTO 0); END scan;ARCHITECTURE behave OF scan IS BEGINPROCESS(clk)VARIABLE pslk:STD_LOGIC_VECTOR(2 DOWNTO 0);VARIABLE p:STD_LOGIC_VECTOR(6 DOWNTO 0);VARIABLE i:INTEGER RANGE 0 TO 7;VARIABLE rel:INTEGER RANGE 0 TO 300;- 输出按键信息- 数码管选择端口- 键盘响应输入端口- 扫描变量- 按键信息变量- 扫描
9、循环变量- 重复按键延时变量VARIABLE int:STD_LOGIC;BEGINIF(clkEVENT AND clk=1)THEN IF(rel=300)THEN- 按键中断变量-500HZ 的时钟信号上升沿触发- 两次按键产生有效的最短时间,延时避免重复触发rel:=rel;ELSErel:=rel+1;END IF;IF(i=7)THEN - 扫描信号为 000111,8 次循环扫描 slkdatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadataNULL;END CASE;en=1;END IF;ELSE- 消抖
10、后再次确认有键按下- 结合 slk 和 kin 的信息判断哪个键按下- 判断按键信息-0-1-2-3-4-5-6-7-8-9-10-NEXT-11-LAST-12-ENTER-13-ESC-14-A(+)-15-B(-)- 产生脉冲信号END LOOP;enbit0bit0bit0bit0bit0bit0bit0bit0bit0bit0bit09)THENc2:=1; zz:=zz-10;ELSEc2:=0;END IF;z:=zz;END PROCEDURE add;PROCEDURE sub(a:IN INTEGER;b:IN INTEGER; c1:IN INTEGER RANGE 0
11、TO 2; z:OUT INTEGER;c2:OUT INTEGER RANGE 0 TO 2)IS VARIABLE zz:INTEGER;BEGINzz:=a-b-c1;IF(zzn:=0;IF(a=1)THENa:=0;add(q1,p1,0,q1,c);add(q2,p2,c,q2,c);add(q3,p3,c,q3,c);add(q4,p4,c,q4,c);ELSIF (b=1)THEN b:=0; sub(p1,q1,0,q1,c); sub(p2,q2,c,q2,c); sub(p3,q3,c,q3,c); sub(p4,q4,c,q4,c);ELSIF (r=0)THENr:=
12、1;ELSE- 时钟信号上升沿触发检查端口状态- 使能信号有效,且重复屏蔽信号关闭时响应按键信息- 按键为“ enter ”键,执行求结果,倒计时启动暂停功能- 解除加减法待操作状态- 有加法则进行加法运算- 加法标志位清零- 被加数与加数求和- 有减法则进行减法运算- 减法标志位清零- 被减数与减数作差- 没有加减法操作又不在倒计时状态则启动倒计时- 否则为在倒计时状态, “ enter ”键功能为暂停r:=0; END IF; WHEN 1110 = IF (r=0)THEN a:=1;b:=0;n:=1;x_to_y(q1,q2,q3,q4,p1,p2,p3,p4); x_to_y(0,
13、0,0,0,q1,q2,q3,q4);END IF;WHEN 1111 =IF (r=0)THENa:=0;b:=1;n:=1;x_to_y(q1,q2,q3,q4,p1,p2,p3,p4); x_to_y(0,0,0,0,q1,q2,q3,q4);END IF;WHEN 1010 =IF (r=0)THENIF (n=0)THEN add(q1,1,0,q1,c); add(q2,0,c,q2,c); add(q3,0,c,q3,c); add(q4,0,c,q4,c);END IF;END IF;- 按键为“ A(+)”键,执行加法功能- 不在倒计时状态,则(否则无效)- 加法标注位置 1
14、 - 减法标志位清零 - 待操作位置 1 - 被加数暂存- 显示清零- 按键为“ B(- )”键,执行减法功能- 不在倒计时状态,则(否则无效)- 加法标志位清零 - 减法标志位置 1 - 待操作位置 1 - 被减数暂存- 显示清零- 按键为“ next ”键,执行自加 1 功能- 不在倒计时状态,则(否则无效) - 不在加减号刚输入之后(否则无效)- 加 1WHEN 1011 =IF (r=0)THENIF (n=0)THEN sub(q1,1,0,q1,c); sub(q2,0,c,q2,c); sub(q3,0,c,q3,c); sub(q4,0,c,q4,c);END IF;END I
15、F;WHEN 1101 =IF (r=0)THENx_to_y(0,0,0,0,p1,p2,p3,p4);x_to_y(0,0,0,0,q1,q2,q3,q4);- 按键为“ last ”键,执行自减 1 功能- 不在倒计时状态,则(否则无效)- 不在加减号刚输入之后(否则无效)- 减 1- 按键为“ esc ”键,执行清零功能 - 不在倒计时状态,则(否则无效) - 寄存器,标志位清零a:=0;b:=0;n:=0;END IF;WHEN OTHERS =IF (r=0)THENn:=0; q4:=q3; q3:=q2; q2:=q1; q1:=CONV_INTEGER(date2);END
16、IF;END CASE;e:=1;ELSIF (en2=0)THENe:=0;- 按键为“ 09”,执行多位数据输入,移位显示- 不在倒计时状态,则(否则无效) - 解除加减法待操作状态- 后一个数码管显示内容给前一个- 第一位读取输入的数字- 重复屏蔽信号打开,防止重复触发- 使能脉冲过去后重复屏蔽信号关闭END IF;IF(r=1)THENIF(countnumbernumbernumbernumbernumber=00000000;END CASE;END PROCESS;END behave;- 扫描信号,用作选择- 各数码管要显示的内容- 片选的数码管显示的内容- 片选信号对应的多路
17、选择器的选通规则- 高四位数码管未用,选到是统一输出全暗图 2. 扫描电路模块仿真3.4 、仿真结果图 3. 数据处理模块仿真图 4. 多路开关模块仿真3.5 、试验箱验证情况将编写好的程序编译运行并检查无误后下载到装有一款EP1K30TC144 3N 芯片的实验箱,分配好各个管脚后再次验证次所用程序下载的是否完整后根据课程设计要求按某一个在 09 的数字键能正确显示所按数字,各功能键是否起作用,从而实现利用键盘控制数码管 进行十进制数字的显示。图 5. 输入被加数图 6. 按下“ A”表示减图 8. 按下“ ENTER”表示等于图 7. 输入加数- 10 -图 9. 按下“ NEXT”表示下
18、一个数图 10. 按下“ LAST”表示上一个数图 11. 再按下“ ENTER”表示倒计时,暂停也是该键图 12. 按下“ ESC”表示清零4、课程设计总结此次试验用一周多的时间用 FPGA设计实现了键盘控制数码管显示十进制数的功能。 题目 很简单,可自由发挥。所以我在十进制数输入和显示的基础上给自己增加了加减法运算和倒 计时的要求。本次课设运用的是 FPGA芯片,编程语言为 VHDL语言,对于没有真正学过 FPGA,VHDL又 已有些生疏的我们来说,开始阶段确实遇到不少麻烦。比如,数码管的扫描信号和键盘的扫 描信号共用,如何让键盘实现扫描又能在对应位显示。开始运用中断程序分时工作,后来发 现可以同时存在。开始写程序从头写到尾,各种功能交叉在一起,后来发现经过模块化分, 各模块功能独立,便于编写,检查和拓展。这种模块化的设计思路被证明确实是种好习惯。程序语言的设计中经常出现信号不能按所希望的方式变化, 而且 VHDL语言对变量的属性 要求很高,因此在一种程序表达不能够实现的情况下可以通过另一种表达方式或者逻辑形式- 11 - 去实现,从自己的经历我体会到同样的效果确实可以有不同的程序设计思路一个礼拜的时间,我经历过最初的课本复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度数据中心PPP项目运维服务合同3篇
- 2024食用菌菌种生产技术改造与升级合同3篇
- 2025年度水电工程安全防护与应急处理合同样本4篇
- 2024私家车短期租赁合同
- 2025年农业科技园区土地承包种植合同4篇
- 2025年度新能源汽车充电车棚建设及运营管理合同4篇
- 北京朗视仪器股份有限公司介绍企业发展分析报告
- 2025年度个人户外活动组织管理合同范本4篇
- 2025年度个人艺术品鉴定与评估合同4篇
- 2025年山东兖矿煤化供销有限公司招聘笔试参考题库含答案解析
- 称量与天平培训试题及答案
- 超全的超滤与纳滤概述、基本理论和应用
- 2020年医师定期考核试题与答案(公卫专业)
- 2022年中国育龄女性生殖健康研究报告
- 各种静脉置管固定方法
- 消防报审验收程序及表格
- 教育金规划ppt课件
- 呼吸机波形分析及临床应用
- 常用紧固件选用指南
- 私人借款协议书新编整理版示范文本
- 自荐书(彩色封面)
评论
0/150
提交评论