EDA技术课程设计报告键盘扫描与数码管及点阵显示设计.doc
《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_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 课程设计 报告 键盘 扫描 数码管 点阵 显示 设计
链接地址:https://www.31doc.com/p-10207356.html