ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:80.63KB ,
资源ID:5475263      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5475263.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(键盘及接口显示电路 EDA.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

键盘及接口显示电路 EDA.docx

1、键盘及接口显示电路 EDA河南科技大学课 程 设 计 说 明 书课程名称 EDA技术 题 目 键盘及接口显示电路 学 院 车辆与动力工程学院 班 级 农业电气化与自动化091 学生姓名 卢浩冉 指导教师 罗四倍 日 期 2012年7月12号 键盘及接口显示电路摘 要本文通过对44矩形键盘的信息采集,并能够在数码显示管上显示所按下的信息。通过循环输出行信号,检测列信号输入,将行列信号相并,来达到采集信号的目地,并通过译码在7段数码管上显示出来。此次设计,为了防止抖动引起的混乱,加入了一个防抖动环节。在译完一个键值后,加了一个计算环节,一旦检测到列信号后,译码,紧跟着进入计数环节,此时键抖动不会进

2、入其他环节,这样可以防止抖动。给精度较高的场合应用提供了良好的条件,为以后高精度的应用创造良好空间。设计中通过按键控制可以显示字符串,例如“HELLO”,较小的改动可以任意显示5个字符,这在广告中的用处随处可见,给现代生活带来了方便。关键词:键盘扫描 译码显示 字符串 第一章 绪论1.1 设计目的和意义 本次设计的目的就是通过实践深入理解计算机组成原理,了解EDA技术并掌握VHDL硬件描述语言的设计方法和思想。以计算机组成原理为指导,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。通过对掌握44键盘的扫描的巧妙实现和对字符串的显示过程.

3、巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。1.2 设计任务及要求 1. 键盘扫描功能:能够对矩形键盘信息采集;2. 显示功能:能够显示相应的按键信息,并能够在按键控制下切换为字符串显示“HELLO”!3. 掌握数码管工作的原理,并能够对设计的程序进行仿真和测试,以实现相应的功能。第二章 总体设计2.1工作原理可编程器件的KEY_HANG3.0行信号输出端不停循环输出“1110”“1101”“1011”“0111”。当没有键按下时可编程器件的KEY_LIE3.0列信号输入端检测到的是“1111”。当有按键按下时,如按下1,此时KEY_HANG3.0

4、行信号输出为“0111”,即KEY_HANG3.0的3管脚为“0”,可由电路看出,此时输入端KEY_LIE3.0检测到的将是“0111”。KEY_LIE3.0的3管脚为0,可以在编写程序时,将输出信号KEY_HANG3.0与输入信号KEY_LIE3.0同时判断,比如可以认为当数据“KEY_HANG&KEY_LIE”为“01110111”时,可译码成数据1,。同理可得其他按键的编码。根据不同数据的编码译成不同的数据。2.2设计思路 1.循环输出行信号,检测列信号输入,将行列信号相并。 2.译键值。3.去抖动。在译没一个键值后,为了防止抖动,加了一个计算环节,一旦检测到列信号后,译码,紧跟着进入计

5、数环节,此时键抖动不会进入其他环节,这样可以防止抖动。4.数码管译码、循环显示。电路的具体功能罗列如下: 1) 采用44矩阵键盘作为操作数和操作符的输入设备。 2) 采用2位8段数码管作为输出显示设备,显示按下的数字及简单的功能。 3) 由于所有键盘在按下或者弹起的时候均有按键抖动,所以应该采用去抖电路,当检测到有按键按下去的时候,应该延时20ms后,再进行检测,如果仍有键盘按键被按下去的话,则进行键盘读值。 当CLK_1K上升沿到来时状态转为state0,然后判断列与非后的值,看是否有按键按下,如果有输入数据,则自动启动20ms的计数器,当计满数后,产生一个指示信号,此信号为1bit,高电平

6、有效。当读到此指示信号后,便再次将row信号锁存至寄存器,便得到键盘的一个返回值。如果row没有变化,则state转换为state2,对第二行进行按键扫描。依此类推,扫描第三行与第四行。因为普通的按键都是接触式的,当按键闭合或释放时,上下接触面都会产生一个很短暂的抖动,如图2.2所示,这个抖动时间一般都会持续5-10ms,虽然这个抖动时间很短,但对于FPGA工作在50M的高频率上的器件来说,还是可以捕捉的到的。为了使CPU对于一次按键操作只处理一次,在软件中必须加入去除抖动处理。如图2.1所示图2.1 按键闭合时产生的抖动由图中可以看出,最简单的去抖方法就是每隔一段时间读一次键盘,时间间隔大于

7、10ms即可。如果连续两次检测都有按键被按下,则可以肯定有按键被按下,而且也进入闭合稳定期。2.3数码管显示译码模块设计 数码管显示译码电路主要用来对实际的二进制数据装换为8段数码管的实际显示控制码,采用两个2位的8段共阴极数码管,数码管的显示方式有两种:静态显示和动态显示。具体如下: 静态显示方式:所谓静态显示就是指无论是多少位数码管,同时处于显示状态需要的硬件电路较多(每一个数码管都需要一个锁存器),将造成很大的不便,同时由于所有数码管都处于被点亮状态,所以需要的电流很大,当数码管的数量增多时,对电源的要求也就随之增高。所以,在大部分的硬件电路设计中,很少采用静态显示方式。 动态显示方式:

8、所谓动态显示,是指无论在任何时刻只有一个数码管处于显示状态,每个数码管轮流显示。动态显示的优点是:硬件电路简单(数码管越多,这个优势越明显),由于每个时刻只有一个数码管被点亮,所以所有数码管消耗的电流较小;缺点是:数码管亮度不如静态显示时的亮度高,例如有8个数码管,以1秒为单位,每个数码管点亮的时间只有1/8秒,所以亮度较低;如果刷新率较低,会出现闪烁现象;如果数码管直接与单片机连接,软件控制上会比较麻烦等。 显示译码方式如下: 1) 时钟上升沿到来时分别对位选和段选进行译码。 2) 将输入的2bite位选数据译码成4比特数据控制数码管的2位,由于是共阴极数码管要选定相应的数码管则使该位位低电

9、平,其它位为高电平即可,如:0000译码为0111_1111,对应于实验板上的左边第一位数码管。 3) 将输入的4bite段选数据译码为8比特数据控制8个LED的亮灭,最高位接A,最低位接小数点位DP。若要显示0则对应的译码为 8b1111_1100。 2.4字符串“HELLO”的模块实现2.4.1 七段数码管译码扫描显示clk:时钟输入端,此信号是串行扫描的同步信号。data_control7.0:8个分别控制数码管显示的输入信号; led_addr7.0:对8个数码管进行串行扫描的输出控制信号; seg7_data6.0:驱动7段数码管各显示段的输出信号;2.4.2 原理图图2.2 字符串

10、显示原理图第三章 仿真3.1 键盘扫描功能的仿真没有键按下时行循环输出“”“”“”“”图3.1 无按键时波形当随机按下时行保持所按下的状态不变 图3.2 随机按键时波形3.2 字符串的仿真图3.3 字符串显示第四章 程序4.1 键盘扫描程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jp is port( clk,start:in std_logic; kbcol:in std_logic_vector(3 downto 0); -行扫描信号 kbrow:out std_logi

11、c_vector(3 downto 0); -列扫描信号 seg7_out:out std_logic_vector(6 downto 0);-显示控制信号 scan:out std_logic_vector(7 downto 0) -数码管地址选择控制信号 );end jp;architecture one of jp issignal count,sta:std_logic_vector(1 downto 0);signal seg7:std_logic_vector(6 downto 0);signal dat:std_logic_vector(4 downto 0);signal fn

12、:std_logic; -按键标志位,判断是否有键被按下begin scan=00000001; -只使用一个数码管显示-循环扫描计数器 process(clk) begin if clkevent and clk=1then count kbrow=0001; sta kbrow=0010; sta kbrow=0100; sta kbrow=1000; sta kbrow=1111; end case; end if; end process;-行扫描译码 process(clk,start) begin if start=0then seg7 case kbcol is when 000

13、1= seg7=1111001; dat seg7=1101101; dat seg7=0110000; dat seg7=1111110; dat seg7=0000000; dat case kbcol is when 0001= seg7=1111000; dat seg7=1011111; dat seg7=1011011; dat seg7=0110011; dat seg7=0000000; dat case kbcol is when 0001= seg7=0011111; dat seg7=1110111; dat seg7=1111011; dat seg7=1111111;

14、 dat seg7=0000000; dat case kbcol is when 0001= seg7=1000111; dat seg7=1001111; dat seg7=0111101; dat seg7=1001110; dat seg7=0000000; dat seg7=0000000; end case; end if; end process;-产生按键标志位,用于存储按键信息 fn=not (dat(0) and dat(1) and dat(2) and dat(3) and dat(4); process(fn) begin if fnevent and fn=1the

15、n -按键信息存储 seg7_out =seg7; end if; end process; end one;4.2 字符串显示程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Scan8led is port(clk:in std_logic;data_control:in std_logic_vector(4 downto 0); led_addr:out std_logic_vector(4 downto 0); seg7_data:out std_logic_vector(

16、6 downto 0);end entity scan8led;architecture one of scan8led istype aaaa is array (0 to 3)of integer;constant a:aaaa:=(0,1,2,3);type seg7_data_type is array(natural range)of std_logic_vector(6 downto 0);constant seg7_data_table:seg7_data_type(0 to 5):=(-gfedcba 1110110, 1111001, 0111000, 0111000, 00

17、11111, 0000000); type led_addr_type is array(natural range)of std_logic_vector(7 downto 0); constant led_addr_table:led_addr_type(0 to 4):=(-dizhibiao 00000001, 00000010, 00000100, 00001000, 00010000); begin process(clk) variable count:integer range 0 to 4:=0; begin if(clkevent and clk=1)then count:

18、=count+1; led_addr=led_addr_table(count); if(data_control(count)=1)thenseg7_data=seg7_data_table(count); else seg7_data=seg7_data_table(5); end if; end if; end process;end architecture one;第五章 结论这次EDA课程设计历时十天,学到很多很多的东西。同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子

19、模块编写调试成功时,都会很高兴。在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误。排除困难后,程序编译就通过了。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示,后来,经过屡次的调试之后,才发现在写代码之前对信号的相位考虑不足。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为以后的工作所服务。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的

20、知识理解得不够深刻,掌握得不够牢固。 总的来说,这次设计还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤指导下,终于迎刃而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的老师和所有同学再次表示忠心的感谢! 参考文献1 徐志军.徐光辉CPLD/FPGA的开发与应用 .2001.电子工业出版社2 朱正伟 EDA技术及应用 清华大学出版社3 延明、张亦华 数字电路EDA技术入门 北京邮电大学出版社4 EDA技术与VHDL 徐志军、王金明、尹延辉 北京: 电子工业出版社5 于润伟.数字系统设计与EDA技术. 北京:机械工业出版社

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2