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

上传人:土8路 文档编号:10207356 上传时间:2021-04-29 格式:DOC 页数:32 大小:1.56MB
返回 下载 相关 举报
EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc_第1页
第1页 / 共32页
EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc_第2页
第2页 / 共32页
EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc_第3页
第3页 / 共32页
EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc_第4页
第4页 / 共32页
EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc》由会员分享,可在线阅读,更多相关《EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc(32页珍藏版)》请在三一文库上搜索。

1、 课 程 设 计 课程名称课程名称 EDA 技术技术 课题名称课题名称 键盘扫描与数码管及点阵显示设计键盘扫描与数码管及点阵显示设计 专专 业业 电子科学与技术电子科学与技术 班班 级级 0802 学学 号号 * 姓姓 名名 * 指导教师指导教师 * 2011 年年 6 月月 20 日日 湖南工程学院 课程设计任务书 课程名称课程名称: EDA 技术 题题 目目:键盘扫描与数码管及点阵显示设 计 专业班级:电科 0802 学号: * 学生姓名: * 指导老师: * 审 批: 任务书下达日期 2011 年 6 月 13 日 设计完成日期 2011 年 6 月 20 日 设计内容与设计要求 一设计

2、内容: 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 参

3、考文献。 7 任务书; 8 说明书目录; 9 设计总体思路; 10 单元电路设计程序; 进 度 安 排 月 日 日 课题电路设计。 月 日日 总体电路设计和子模块设计 月 日 日 软件仿真和联线。 月 日 日 电路调试 月 日 写设计报告,打印相关图纸, 月 日 答辩; 参 考 文 献 一 电子技术与 EDA 技术课程设计 郭照南 主编 中南大学出版社 目录目录 第第 1 章章 总体方案设计分析总体方案设计分析.1 1.1 基本设计思路.1 1.2 总体框图.1 第第 2 章章 各级模块设计与分析各级模块设计与分析.2 2.1 键盘扫描程序设计及仿真.2 2.2 点阵显示程序设计及仿真.5 2

4、.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 章章

5、总体方案设计分析总体方案设计分析 1.1 基本设计思路基本设计思路 首先利用键盘扫描程序完成键盘扫描及按键输出值的输出,同时在 其中加入按键消抖程序,以保证按键每次按下的键值都是有效准确的理 想输出信号。同时通过按键扫描的输出定义两个控制信号量(程序中即 xuanze 和 dz 两信号)以通过按键的按下来达到控制彩灯状态切换以及点 阵字符显示切换的目的。其中,定义了两个彩灯控制信号,以用来选择 彩灯模块中两种彩灯显示状态的切换,而点阵控制信号则定义了五个状 态以控制点阵显示的五个状态的切换。从而整个系统则通过键盘扫描程 序中的两个控制信号连接成了一个整体。最后就将键盘扫描的输出信号 连接到数码

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

7、个按下,并结合列扫描 中 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,k

8、in3 为行扫描输入, 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

9、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); sign

10、al 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

11、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;xuan

12、ze=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=

13、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 个按键 的控制分别输出“湖” , “南” , “工” , “程” , “

14、学” , “院”六 个字符。 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; ent

15、ity 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_

16、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=00

17、1) 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 ;

18、 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_stat

19、e 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_

20、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 ; n

21、ext_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

22、 ; 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

23、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

24、 case; end process p1; end behav; 2.2.4 点阵显示仿真波形点阵显示仿真波形 图 2.2.2 点阵显示仿真波形 2.3 彩灯显示程序设计及仿真彩灯显示程序设计及仿真 2.3.1 基本设计思路基本设计思路 程序通过键盘扫描程序输出的彩灯控制信号 xuanze 的控制来保证两 个彩灯在两个状态之间的顺利切换,其中一个状态为彩灯向左流水与向 右流水的循环显示,另一个状态为彩灯向中间流水。整体利用状态机来 实现,并在第一个状态的时候就利用条件语句对 xuanze 值的判断从而控 制状态机的循环路径,从而达到了控制两个彩灯状态的目的。 2.3.2 彩灯显示模块图彩灯显

25、示模块图 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

26、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

27、; 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; e

28、lse 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_stat

29、e 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

30、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 数码管扫描程

31、序设计及仿真数码管扫描程序设计及仿真 2.4.1 基本设计思路基本设计思路 由于本程序中只需要用到一位数码管的显示,因此就无需数码管进 行动态扫描,因此,直接在程序中选通一位数码管即可。并把键盘扫描 程序的键值输出信号直接接到数码管扫描程序的输入信号端口,再通过 case 语句的选择即可将对应的数码管段值状态输入到数码管进行相应的 显示,实现系统指定的功能。 2.4.2 数码管扫描模块图数码管扫描模块图 cr keycode14.0 SG6.0 BT SCAN_LED inst5 图 2.4.1 数码管扫描模块图 图中 cr 接复位端,keycode1 接键盘扫描的键值输出信号端口,SG 作为

32、数码管七段的控制输出信号,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 S

33、CAN_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

34、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

35、 章章 软件的调试与下载软件的调试与下载 4.1 引脚锁定引脚锁定 图 4.1.1 引脚锁定列表 4.2 引脚锁定后总电路图引脚锁定后总电路图 图 4.2.1 引脚锁定后总电路图 4.3 程序下载界面程序下载界面 图 4.3.1 程序下载界面 4.4 系统总体仿真结果系统总体仿真结果 图 4.4.1 系统总体仿真结果 部分相应的实验显示效果参见附录。 第第 5 章章 总结与体会总结与体会 历时两个星期的 EDA 课程设计终于落下帷幕,在这两个星期中,我 们从接到课题,到查找资料,再到自己独立编程仿真调试程序,最后到 接硬件调试,我们的每一步都走出了自己奋斗的精彩。刚开始我们组抽 到了做键盘扫描

36、程序的课题。本以为这是个很容易的课题,也很快地查 找好了资料,编出了程序,尤其也在键盘消抖上下了功夫,原本我的方 案是通过计数器延时而实现键盘消抖(借鉴了单片机键盘消抖的程序思 路) 。但是,当我们借回来 EDA 试验箱自己搭接好了线路,下载程序后, 才发现,效果不如人意,其中那个消抖电路最不好实现,于是,我们一 组的人就经常聚在一起讨论这个问题,因为我们的消抖效果都不理想。 但是,讨论了半天也没个好的方案,于是,我们就大量查阅资料,最后, 找到了一个效果比较理想的消抖程序设计方法,并借鉴了此思路,顺利 地攻克了键盘扫描及消抖的问题,实现了既定的功能,原本我们的课题 任务仅仅只要完成这一步就可

37、以啦,但是,后来陈老师要我们各自扩展 相应的功能,我选择的是扩展一个彩灯,以及点阵,做彩灯模块的时候, 由于刚开始有一个 if 语句的顺序写错弄的结果总是不理想,经过我一次 又一次耐心的检查调试,最后终于完成了彩灯控制模块的设计,我也切 切实实的感受到了经过自己努力后换来的成功的喜悦。最后,我就做点 阵模块,刚开始,我还不了解点阵的工作原理,于是,我利用一个高电 平信号线分别测试点阵的 20 个引脚,最终确定了行高电平有效,列低电 平有效的基本信息。然后,再对字符进行编码。最后,经过,几次调试 后,这个模块的功能也实现了,当我们提前完成了既定的任务后,老师 也表扬了我们,我们从中也真正尝到了学

38、习的乐趣,虽然编程都是自己 独立完成,但我们组四个成员遇到问题相互探讨,在这个过程中,我们 学到的不仅是将课内的理论知识与实践动手操作联系了起来,而且我们 也发挥了团队合作的效力,最终都取得了比较好的结果。在最后,我也 得对我们的指导老师陈老师表示衷心的感谢。 第第 6 章章 参考文献参考文献 1. 康华光主编的电子技术基础(数字部分) ,高等教育出版社。 2. 阎石主编的电子技术基础(数字部分) ,清华大学出版社。 3. 刘洪喜,陆颖编著.VHDL 电路设计实用教程 ,清华大学出版 社。 4. 郭照南主编的电子技术与 EDA 技术课程设计 ,中南大学出版 社。 第第 7 章章 附录附录 7.

39、1 点阵字符显示效果图点阵字符显示效果图 图 7.1.1 点阵字符显示效果图 7.2 彩灯显示结果彩灯显示结果 图 7.2.1 彩灯显示结果 电气信息学院课程设计评分表 项 目评 价 设计方案的合理性与创造性 硬件制作或软件编程完成情况* 硬件制作测试或软件调试结果* 设计说明书质量 设计图纸质量 答辩汇报的条理性和独特见解 答辩中对所提问题的回答情况 完成任务情况 独立工作能力 组织纪律性(出勤率) 综合评分 指导教师签名:_ 日 期:_ 注:表中标*号项目是硬件制作或软件编程类课题必填内容; 此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、 正文、评分表、附件(非 16K 大小的图纸及程序清单) 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


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