欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc

    • 资源ID:10207356       资源大小:1.56MB        全文页数:32页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc

    课 程 设 计 课程名称课程名称 EDA 技术技术 课题名称课题名称 键盘扫描与数码管及点阵显示设计键盘扫描与数码管及点阵显示设计 专专 业业 电子科学与技术电子科学与技术 班班 级级 0802 学学 号号 * 姓姓 名名 * 指导教师指导教师 * 2011 年年 6 月月 20 日日 湖南工程学院 课程设计任务书 课程名称课程名称: EDA 技术 题题 目目:键盘扫描与数码管及点阵显示设 计 专业班级:电科 0802 学号: * 学生姓名: * 指导老师: * 审 批: 任务书下达日期 2011 年 6 月 13 日 设计完成日期 2011 年 6 月 20 日 设计内容与设计要求 一设计内容: 1 设计并调试键盘扫描与数码管显示电路; 2 键盘为 3*4,数码管为 7 段 8 位; 3 以数字形式显示键盘 16 个输入键的识别; 4 外设置控制开关和防抖动电路; 5 功能扩展(自选):彩灯状态的转换以及点阵字符的显示 二设计要求: 1.设计思路清晰,整体设计给出框图,提供顶层电路图; 2.应用 vhdl 完成各次级模块设计,绘出具体设计程序; 3.完成设计仿真和程序下载; 4.写出设计报告 主要设计条件 1提供所需元件及芯片; 2提供电源和调试设备; 3提供 EWB 设计软件 说明书格式 1 课程设计封面; 2 设计仿真; 3 编程下载; 4 总结与体会; 5 附录; 6 参考文献。 7 任务书; 8 说明书目录; 9 设计总体思路; 10 单元电路设计程序; 进 度 安 排 月 日 日 课题电路设计。 月 日日 总体电路设计和子模块设计 月 日 日 软件仿真和联线。 月 日 日 电路调试 月 日 写设计报告,打印相关图纸, 月 日 答辩; 参 考 文 献 一 电子技术与 EDA 技术课程设计 郭照南 主编 中南大学出版社 目录目录 第第 1 章章 总体方案设计分析总体方案设计分析.1 1.1 基本设计思路.1 1.2 总体框图.1 第第 2 章章 各级模块设计与分析各级模块设计与分析.2 2.1 键盘扫描程序设计及仿真.2 2.2 点阵显示程序设计及仿真.5 2.3 彩灯显示程序设计及仿真.11 2.4 数码管扫描程序设计及仿真.14 第第 3 章章 系统总电路设计与仿真系统总电路设计与仿真.16 3.1 系统总电路模块图.16 3.2 总电路仿真波形.16 3.3 系统总体电路图.17 第第 4 章章 软件的调试与下载软件的调试与下载.18 4.1 引脚锁定.18 4.2 引脚锁定后总电路图.19 4.3 程序下载界面.19 4.4 系统总体仿真结果.20 第第 5 章章 总结与体会总结与体会.21 第第 6 章章 参考文献参考文献.22 第第 7 章章 附录附录.23 7.1 点阵字符显示效果图.23 7.2 彩灯显示结果.23 第第 1 章章 总体方案设计分析总体方案设计分析 1.1 基本设计思路基本设计思路 首先利用键盘扫描程序完成键盘扫描及按键输出值的输出,同时在 其中加入按键消抖程序,以保证按键每次按下的键值都是有效准确的理 想输出信号。同时通过按键扫描的输出定义两个控制信号量(程序中即 xuanze 和 dz 两信号)以通过按键的按下来达到控制彩灯状态切换以及点 阵字符显示切换的目的。其中,定义了两个彩灯控制信号,以用来选择 彩灯模块中两种彩灯显示状态的切换,而点阵控制信号则定义了五个状 态以控制点阵显示的五个状态的切换。从而整个系统则通过键盘扫描程 序中的两个控制信号连接成了一个整体。最后就将键盘扫描的输出信号 连接到数码管显示模块,彩灯模块连接到 8 个 led 灯,而点阵模块的输 出则接入到点阵上。再在现有的基础上加入清零信号 cr。综上,整个系 统的功能即得以实现。 1.2 总体框图总体框图 图 1.1 系统总体框图 第第 2 章章 各级模块设计与分析各级模块设计与分析 2.1 键盘扫描程序设计及仿真键盘扫描程序设计及仿真 2.1.1 基本设计思路基本设计思路 本模块采用行输入,列输出,并定义一个五位的矢量信号 count,此 矢量通过时钟脉冲的输入计数,并且定义一个信号量 sel 并取其中间两位, 以此两位构成的四个状态进行键盘列扫描,同时再在另外一个进程中通 过三个条件语句的选择判断以确定三个行键中哪个按下,并结合列扫描 中 sel 所取的四个状态共同连接赋值给一个四位矢量 knum,并由此确定 了键盘的 12 个状态。最后利用另外一个进程中对 knum 值的判断从而确 定对应的按键值的输出,以及其他各控制键值的信号输出(其中包括, 控制彩灯状态的控制信号 xuanze,以及控制点阵显示状态的控制信号 dz) 。 2.1.2 键盘扫描模块图键盘扫描模块图 clk cr kin1 kin2 kin3 xuanze1.0 dz2.0 keyv3.0 keycode4.0 keyscan inst1 图 2.1.1 键盘扫描模块图 图中 clk 接时钟脉冲,cr 是复位端,kin1,kin2,kin3 为行扫描输入, xuanze 为彩灯控制信号,dz 为点阵控制信号,keyv 为列输出,keycode 为按键显示数值输出。 2.1.3 键盘扫描程序键盘扫描程序 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_logic_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(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 elsif count0event and count0=1 then if(kin3=0) and count(1)=0 then -第三行有键按下时 knum<=1 elsif(kin2=0) and count(1)=0 then -第二行有键按下时 knum<=0 elsif (kin1=0) and count(1)=0 then -第一行有键按下时 knum<=0 end if; end if; end process; p4:process(knum) -键值译码显示输出 begin if cr=0 then xuanze<=11;dz keycode<=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 keycode<=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 点阵显示模块图点阵显示模块图 clk cr dz2.0 hang15.0 lie3.0 dianzheng inst2 图 2.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 is port( clk ,cr : in std_logic; -扫描时钟输入 dz : in std_logic_vector(2 downto 0); hang : out std_logic_vector(15 downto 0); lie : out std_logic_vector(3 downto 0); end entity dianzheng; architecture behav of dianzheng is signal 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; begin sel<=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;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<=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 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;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;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;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 next_state<=s0; end case; end process p1; end behav; 2.2.4 点阵显示仿真波形点阵显示仿真波形 图 2.2.2 点阵显示仿真波形 2.3 彩灯显示程序设计及仿真彩灯显示程序设计及仿真 2.3.1 基本设计思路基本设计思路 程序通过键盘扫描程序输出的彩灯控制信号 xuanze 的控制来保证两 个彩灯在两个状态之间的顺利切换,其中一个状态为彩灯向左流水与向 右流水的循环显示,另一个状态为彩灯向中间流水。整体利用状态机来 实现,并在第一个状态的时候就利用条件语句对 xuanze 值的判断从而控 制状态机的循环路径,从而达到了控制两个彩灯状态的目的。 2.3.2 彩灯显示模块图彩灯显示模块图 clk cr xuanze1.0 keycode24.0 comb_outputs7.0 leddeng inst4 图 2.3.1 彩灯显示模块图 图中 clk 接时钟脉冲,cr 接复位端,xuanze 接键盘扫描程序的彩灯 控制信号输出端,comb_outputs 接 8 个 led 灯。 2.3.3 彩灯显示程序彩灯显示程序 library ieee; use ieee.std_logic_1164.all; entity leddeng is port( clk,cr : in std_logic; xuanze : in std_logic_vector(1 downto 0); comb_outputs :out std_logic_vector(7 downto 0); keycode2:in std_logic_vector(4 downto 0) ); end entity leddeng; architecture behav of leddeng is type zhuangtai is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16, s17,s18,s19,s20,s21,s22,s23); signal current_state, next_state: zhuangtai; begin p0: process(clk,cr) begin if cr=0 then current_state<=s0; elsif (clk event and clk=1) then current_state if xuanze=01 then comb_outputs<=01111111;next_state<=s1; elsif xuanze=10 then next_state<=s14; elsif xuanze=00 then next_state<=s23; elsif xuanze=11then comb_outputs<=11111111;next_state<=s23; else comb_outputs<=11111111;next_state comb_outputs<=10111111;next_state comb_outputs<=11011111;next_state comb_outputs<=11101111;next_state comb_outputs<=11110111;next_state comb_outputs<=11111011;next_state comb_outputs<=11111101;next_state comb_outputs<=11111110;next_state comb_outputs<= 11111101;next_state comb_outputs<= 11111011;next_state comb_outputs<=11110111;next_state comb_outputs<=11101111;next_state comb_outputs<=11011111;next_state comb_outputs<=10111111;next_state comb_outputs<=11111111;next_state comb_outputs<=01111110;next_state comb_outputs<=10111101;next_state comb_outputs<=11011011;next_state comb_outputs<=11100111;next_state comb_outputs<=11011011;next_state comb_outputs<=10111101;next_state comb_outputs<=01111110;next_state comb_outputs<=00000000;next_state comb_outputs<=11111111;next_state next_state<=s0; end case; end process p1; end behav; 2.3.4 彩灯显示仿真波形彩灯显示仿真波形 图 2.3.2 彩灯显示仿真波形 2.4 数码管扫描程序设计及仿真数码管扫描程序设计及仿真 2.4.1 基本设计思路基本设计思路 由于本程序中只需要用到一位数码管的显示,因此就无需数码管进 行动态扫描,因此,直接在程序中选通一位数码管即可。并把键盘扫描 程序的键值输出信号直接接到数码管扫描程序的输入信号端口,再通过 case 语句的选择即可将对应的数码管段值状态输入到数码管进行相应的 显示,实现系统指定的功能。 2.4.2 数码管扫描模块图数码管扫描模块图 cr keycode14.0 SG6.0 BT SCAN_LED inst5 图 2.4.1 数码管扫描模块图 图中 cr 接复位端,keycode1 接键盘扫描的键值输出信号端口,SG 作为数码管七段的控制输出信号,BT 作为八位数码管的位选端。 2.4.3 数码管扫描程序数码管扫描程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SCAN_LED IS PORT ( cr : in std_logic; keycode1:IN STD_LOGIC_VECTOR(4 DOWNTO 0); SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); BT : OUT STD_LOGIC ); END; ARCHITECTURE one OF SCAN_LED IS BEGIN P1:PROCESS( keycode1 ) BEGIN if(cr=0) then BT<=0; elsif(cr=1) then BT SG SG SG SG SG SG SG SG SG SG SG SG SG NULL ; END CASE ; END PROCESS P1; END; 2.4.4 数码管扫描仿真波形数码管扫描仿真波形 图 2.4.2 数码管扫描仿真波形 第第 3 章章系统总电路设计与仿真系统总电路设计与仿真 3.1 系统总电路模块图系统总电路模块图 clk cr kin1 kin2 kin3 clk1 SG6.0 BT keyv3.0 comb_outputs7.0 hang15.0 lie3.0 block1 inst2 图 3.1.1 总电路模块图 图中,clk 接时钟脉冲,cr 接复位端,kin1,kin2,kin3 分别接 入键盘行扫描,clk1 接一提供给点阵显示的时钟脉冲。SG60接数码 管段选信号,BT 为数码管位选信号输出,keyv3.0为键盘列扫描, comb_outputs7.0控制彩灯的输出端,hang15.0,lie3.0分别为点阵行 列的输入扫描信号。 3.2 总电路仿真波形总电路仿真波形 图 3.2.1 总电路仿真波形 3.3 系统总体电路图系统总体电路图 图 3.3.1 系统总体电路图 第第 4 章章 软件的调试与下载软件的调试与下载 4.1 引脚锁定引脚锁定 图 4.1.1 引脚锁定列表 4.2 引脚锁定后总电路图引脚锁定后总电路图 图 4.2.1 引脚锁定后总电路图 4.3 程序下载界面程序下载界面 图 4.3.1 程序下载界面 4.4 系统总体仿真结果系统总体仿真结果 图 4.4.1 系统总体仿真结果 部分相应的实验显示效果参见附录。 第第 5 章章 总结与体会总结与体会 历时两个星期的 EDA 课程设计终于落下帷幕,在这两个星期中,我 们从接到课题,到查找资料,再到自己独立编程仿真调试程序,最后到 接硬件调试,我们的每一步都走出了自己奋斗的精彩。刚开始我们组抽 到了做键盘扫描程序的课题。本以为这是个很容易的课题,也很快地查 找好了资料,编出了程序,尤其也在键盘消抖上下了功夫,原本我的方 案是通过计数器延时而实现键盘消抖(借鉴了单片机键盘消抖的程序思 路) 。但是,当我们借回来 EDA 试验箱自己搭接好了线路,下载程序后, 才发现,效果不如人意,其中那个消抖电路最不好实现,于是,我们一 组的人就经常聚在一起讨论这个问题,因为我们的消抖效果都不理想。 但是,讨论了半天也没个好的方案,于是,我们就大量查阅资料,最后, 找到了一个效果比较理想的消抖程序设计方法,并借鉴了此思路,顺利 地攻克了键盘扫描及消抖的问题,实现了既定的功能,原本我们的课题 任务仅仅只要完成这一步就可以啦,但是,后来陈老师要我们各自扩展 相应的功能,我选择的是扩展一个彩灯,以及点阵,做彩灯模块的时候, 由于刚开始有一个 if 语句的顺序写错弄的结果总是不理想,经过我一次 又一次耐心的检查调试,最后终于完成了彩灯控制模块的设计,我也切 切实实的感受到了经过自己努力后换来的成功的喜悦。最后,我就做点 阵模块,刚开始,我还不了解点阵的工作原理,于是,我利用一个高电 平信号线分别测试点阵的 20 个引脚,最终确定了行高电平有效,列低电 平有效的基本信息。然后,再对字符进行编码。最后,经过,几次调试 后,这个模块的功能也实现了,当我们提前完成了既定的任务后,老师 也表扬了我们,我们从中也真正尝到了学习的乐趣,虽然编程都是自己 独立完成,但我们组四个成员遇到问题相互探讨,在这个过程中,我们 学到的不仅是将课内的理论知识与实践动手操作联系了起来,而且我们 也发挥了团队合作的效力,最终都取得了比较好的结果。在最后,我也 得对我们的指导老师陈老师表示衷心的感谢。 第第 6 章章 参考文献参考文献 1. 康华光主编的电子技术基础(数字部分) ,高等教育出版社。 2. 阎石主编的电子技术基础(数字部分) ,清华大学出版社。 3. 刘洪喜,陆颖编著.VHDL 电路设计实用教程 ,清华大学出版 社。 4. 郭照南主编的电子技术与 EDA 技术课程设计 ,中南大学出版 社。 第第 7 章章 附录附录 7.1 点阵字符显示效果图点阵字符显示效果图 图 7.1.1 点阵字符显示效果图 7.2 彩灯显示结果彩灯显示结果 图 7.2.1 彩灯显示结果 电气信息学院课程设计评分表 项 目评 价 设计方案的合理性与创造性 硬件制作或软件编程完成情况* 硬件制作测试或软件调试结果* 设计说明书质量 设计图纸质量 答辩汇报的条理性和独特见解 答辩中对所提问题的回答情况 完成任务情况 独立工作能力 组织纪律性(出勤率) 综合评分 指导教师签名:_ 日 期:_ 注:表中标*号项目是硬件制作或软件编程类课题必填内容; 此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、 正文、评分表、附件(非 16K 大小的图纸及程序清单) 。

    注意事项

    本文(EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc)为本站会员(土8路)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开