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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

键盘扫描与数码管及点阵显示设计.docx

1、键盘扫描与数码管及点阵显示设计 课 程 设 计课程名称 EDA技术 课题名称 键盘扫描与数码管及点阵显示设计 专 业 电子科学与技术 班 级 0802 学 号 * 姓 名 * 指导教师 * 2011年 6 月 20 日 湖南工程学院课程设计任务书课程名称: EDA技术 题 目:键盘扫描与数码管及点阵显示设计 专业班级:电科0802 学号: * 学生姓名: * 指导老师: * 审 批:任务书下达日期 2011 年 6 月 13 日设计完成日期 2011年 6 月 20 日设计内容与设计要求一 设计内容:1 设计并调试键盘扫描与数码管显示电路;2 键盘为3*4,数码管为7段8位;3 以数字形式显示

2、键盘16个输入键的识别;4 外设置控制开关和防抖动电路;5 功能扩展(自选):彩灯状态的转换以及点阵字符的显示 二 设计要求:1.设计思路清晰,整体设计给出框图,提供顶层电路图;2.应用vhdl完成各次级模块设计,绘出具体设计程序;3.完成设计仿真和程序下载; 4.写出设计报告主要设计条件1 提供所需元件及芯片;2 提供电源和调试设备;3 提供EWB设计软件说明书格式1 课程设计封面;2 设计仿真;3 编程下载;4 总结与体会;5 附录;6 参考文献。7 任务书;8 说明书目录;9 设计总体思路;10 单元电路设计程序;进 度 安 排月 日 日 课题电路设计。 月 日日 总体电路设计和子模块设

3、计 月 日 日 软件仿真和联线。 月 日 日 电路调试 月 日 写设计报告,打印相关图纸,月 日 答辩; 参 考 文 献一电子技术与EDA技术课程设计 郭照南 主编中南大学出版社目录第1章 总体方案设计分析 11.1 基本设计思路 11.2 总体框图 1第2章 各级模块设计与分析 22.1 键盘扫描程序设计及仿真 22.2 点阵显示程序设计及仿真 52.3 彩灯显示程序设计及仿真 112.4 数码管扫描程序设计及仿真 14第3章 系统总电路设计与仿真 163.1 系统总电路模块图 163.2 总电路仿真波形 163.3 系统总体电路图 17第4章 软件的调试与下载 184.1 引脚锁定 184

4、.2 引脚锁定后总电路图 194.3 程序下载界面 194.4 系统总体仿真结果 20第5章 总结与体会 21第6章 参考文献 22第7章 附录 237.1 点阵字符显示效果图 237.2 彩灯显示结果 23第1章 总体方案设计分析1.1 基本设计思路 首先利用键盘扫描程序完成键盘扫描及按键输出值的输出,同时在其中加入按键消抖程序,以保证按键每次按下的键值都是有效准确的理想输出信号。同时通过按键扫描的输出定义两个控制信号量(程序中即xuanze和dz两信号)以通过按键的按下来达到控制彩灯状态切换以及点阵字符显示切换的目的。其中,定义了两个彩灯控制信号,以用来选择彩灯模块中两种彩灯显示状态的切换

5、,而点阵控制信号则定义了五个状态以控制点阵显示的五个状态的切换。从而整个系统则通过键盘扫描程序中的两个控制信号连接成了一个整体。最后就将键盘扫描的输出信号连接到数码管显示模块,彩灯模块连接到8个led灯,而点阵模块的输出则接入到点阵上。再在现有的基础上加入清零信号cr。综上,整个系统的功能即得以实现。1.2 总体框图图1.1 系统总体框图第2章 各级模块设计与分析2.1 键盘扫描程序设计及仿真2.1.1 基本设计思路 本模块采用行输入,列输出,并定义一个五位的矢量信号count,此矢量通过时钟脉冲的输入计数,并且定义一个信号量sel并取其中间两位,以此两位构成的四个状态进行键盘列扫描,同时再在

6、另外一个进程中通过三个条件语句的选择判断以确定三个行键中哪个按下,并结合列扫描中sel所取的四个状态共同连接赋值给一个四位矢量knum,并由此确定了键盘的12个状态。最后利用另外一个进程中对knum值的判断从而确定对应的按键值的输出,以及其他各控制键值的信号输出(其中包括,控制彩灯状态的控制信号xuanze,以及控制点阵显示状态的控制信号dz)。2.1.2 键盘扫描模块图图2.1.1 键盘扫描模块图 图中clk接时钟脉冲,cr是复位端,kin1,kin2,kin3为行扫描输入,xuanze为彩灯控制信号,dz为点阵控制信号,keyv为列输出,keycode为按键显示数值输出。2.1.3 键盘扫

7、描程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity keyscan is port(clk ,cr : in std_logic; -扫描时钟输入 kin1,kin2,kin3 : in std_logic; -按键行扫描输入 xuanze : out std_logic_vector(1 downto 0); dz:out std_logic_vector(2 downto 0); keyv: out std_lo

8、gic_vector(3 downto 0);-按键列扫描 keycode : out std_logic_vector(4 downto 0) ); -段码显示输出 end keyscan; architecture a of keyscan is signal sel : std_logic_vector(1 downto 0); signal knum : std_logic_vector(3 downto 0); signal count : std_logic_vector(4 downto 0); signal count0 : std_logic; begin sel=count

9、(3 downto 2); count0=count(0); p1: process(clk) -产生扫描信号 begin if clkevent and clk=1 then count keyv keyv keyv keyv keyv=1111; end case ; end process; p3: process(count0,count,kin1,kin2,kin3) -查键值 begin if (cr=0) then knum=1 & 1& count(3 downto 2); elsif count0event and count0=1 then if(kin3=0) and c

10、ount(1)=0 then -第三行有键按下时 knum=1 & 0& count(3 downto 2); elsif(kin2=0) and count(1)=0 then -第二行有键按下时 knum=0 & 1 & count(3 downto 2); elsif (kin1=0) and count(1)=0 then -第一行有键按下时 knum=0 & 0 & count(3 downto 2); end if; end if; end process; p4:process(knum) -键值译码显示输出 begin if cr=0 then xuanze=11;dz key

11、code=00000;xuanze=00;dz keycode=00001;xuanze=00;dz keycode=00010;xuanze=00;dz keycode=00011;xuanze=00;dz keycode=00100;xuanze=00;dz keycode=00101;xuanze=00;dz keycode=00110;xuanze=00;dz keycode=00111;xuanze=00;dz keycode=01000;xuanze=00;dz keycode=01001;xuanze=00;dz keycode=01010;xuanze=01;dz keycod

12、e=01011;xuanze=10;dz keycode=01100;xuanze=00;dz=000; end case ; end if; end process; end a;2.1.4 键盘扫描仿真波形 图2.1.2 键盘扫描仿真波形2.2 点阵显示程序设计及仿真2.2.1 基本设计思路 程序通过键盘扫描程序中的点阵输出控制信号dz来控制点阵字符显示的状态,然后定义点阵的行列为输出类型,通过六个case语句以及16个显示状态的循环扫描来达到字符显示效果。最终结果,通过6个按键的控制分别输出“湖” ,“南” ,“工” ,“程” ,“学” ,“院”六个字符。2.2.2 点阵显示模块图图2.

13、2.1 点阵显示模块图其中clk接时钟脉冲,cr接复位端,dz接从键盘扫描程序中输出的点阵控制信号,hang,lie分别定义为点阵的行列的20个输入引脚。2.2.3 点阵显示程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity dianzheng isport( clk ,cr : in std_logic; -扫描时钟输入 dz : in std_logic_vector(2 downto 0); hang : out

14、 std_logic_vector(15 downto 0); lie : out std_logic_vector(3 downto 0);end entity dianzheng;architecture behav of dianzheng issignal sel : std_logic_vector(3 downto 0);signal count : std_logic_vector(4 downto 0);type zhuangtai is (s0,s1,s2,s3,s4,s5); signal current_state, next_state: zhuangtai; begi

15、nsel=count(3 downto 0);p0: process(clk) -产生扫描信号 begin if cr=0 then count=00000; elsif clkevent and clk=1 then count=count+1; if( count=10000) then count=00000; end if; current_state if(dz=001) then case sel is when 0000= lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;

16、hang lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state=s0; elsif(dz=010) then next_state=s1; elsif(dz=011)then lie=1111;hang=0000000000000000;next_state=

17、s2; elsif(dz=100)then lie=1111;hang=0000000000000000;next_state=s3; elsif(dz=000)then lie=1111;hang=0000000000000000;next_state=s4; elsif(dz=111)then lie=1111;hang=0000000000000000;next_state case sel is when 0000= lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;hang l

18、ie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state case sel is when 0000= lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;ha

19、ng lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state case sel is when 0000= lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;hang lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state case sel is when 0000= lie=1111;h

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1