资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
课程设计课程名称 课题名称键盘扫描显示与加减运算电路设计专业电子科学与技术班 级 学号 201101040216姓 名 m指导教师 2014年3 月20日湖南工程学院课程设计任务书课程名称:eda技术题目:键盘扫描显示与加减运算电路设计专业班级:电科1102学号:201101040216学生姓名:周洁指导老师:陈意军审 批:任务书下达日期2014 年3月10日设计完成日期 2014 年3月20日设计内容与设计要求一.设计内容:1.设计并调试键盘扫描与数码管显示电路;2.键盘为3*4,数码管为7段8位;3.以数字形式或字母显示键盘12个输入键的 功能;4.完成2位数的加减运算,并显示运算结果。5.设置控制开关和防抖动电路设计;6.功能扩展(自选);通过键盘完成汉字显示 或对某外部硬件对象的控制。二.设计要求:1. 设计思路清晰,整体设计给出框图,提供顶层 电路图;2应用vhdl或verilog完成各次级模块设计,给 出具体设计程序;3. 完成设计仿真和程序下载;4. 写出设计报告主要设计条件1. 提供EDA实验室;2. 提供EL实验箱和CPLD芯片3. 提供ALTERA公司的quartus II设计软件;说明书格式1. 课程设计封面;2. 任务书;3. 说明书目录;4. 设计总体思路;5. 单元电路设计程序;6. 设计仿真;7. 编程下载;8. 总结与体会;9. 附录;10. 参考文献。进度安排月日0课题电路设计。月0 -日总体电路设计和子模块设计月日日软件仿真和联线。月日日电路调试月日写设计报告,打印相关图纸,月日答辩;参考文献目录第一章总体方案设计分析11.1基本设计思路11.2总体框图1第二章子模块程序模块分析22.1键盘扫描和消抖程序设计与分析22.1.1基本设计思路22.1.2流程图22.1.3键盘扫描、编码、防抖输出42.1.4键盘扫描、编码、防抖仿真结果及分析42.1.5子程序52.2加减功能模块程序与分析112.2.1功能模块基本设计思路112.2.2加减功能流程图112.2.3加减功能模块122.2.4加减法电路仿真图结果与分析132.2.5加减功能模块程序132.3数码管译码显示模块162.3.1显示模块基本设计思路162.3.2数码管显示模块流程图162.3.3数码管显示模块172.3.4数码管电路仿真图1723.5数码管显示子程序18第三章总电路213.1总电路连接图213.2电路仿真波形图21第四章程序下载224.1实验箱及芯片简介224.2管脚224.3下载224.4实际接线图及加减法运算实例23第五章心得体会25第一章总体方案设计分析1.1基本设计思路本设计利用键盘扫描程序完成3*4键盘的扫描并编码输出按 键值,然后对按键输出值进行消抖,以保证每次按键值都能准确 无误的输出,同时利用加减功能模块对输入值进行简单的二进制 加法、减法操作,并将加减之后的结果转换成BCD码输出到显示 控制模块,通过译码显示模块将加减后的结果显示在数码管上。本设计对时钟的利用充分,通过同一个时钟使各个模块之间 协同工作,充分利用时钟的上下边沿,使整个系统处于一种高速 工作状态,以提高整个系统工作效率。1. 2总体框图第二章子模块程序模块分析2. 1键盘扫描和消抖程序设计与分析2.1.1基本设计思路本模块釆用行输入,列输出,并定义一个4进制计数信号,在 时钟脉冲的上升沿输入时计数,利用3进制提供行扫描信号,在 没有按键按下时,行扫描的输入信号变化顺序为 110-101-011-依次周而复始;列扫描的输出信号变化顺序 为 1110-1101 10110111当有按键按下时,在时钟的下降沿延按键输出,同时将行扫描 值与列输入值合并形成组合值作为按键的输入值,并对按键的输 入值进行编码使其输出为7位二进制值。按键时通常会造成持续时间不大于10ms的信号抖动,这种抖 动使系统无法正确识别按键的操作次数,本系统的抖动消除电路 使用一个16进制计数器,当输入值在计数16次的过程中没有变 化时,则认为该值为一个正确的可识别的数值,同时输出该值。 2.1.2流程图开始32.1.3键盘扫描、编码、防抖输出、图中elk为时钟脉冲输入,在该模块中利用时钟的上下边沿, 使该工作模块更高效。clear为清零信号,con为控制功能输出方 式信号,row_key2. 0为按键输入值,column_key 3. 0为编码, key_out3.0为扫描编码输出值(消抖后输出值),sei为选择性 输出时钟信号。2. 1.4键盘扫描、编码、防抖仿真结果及分析2. 1. 4. 1键盘扫描模块仿真图 Mee?ae3a H2J51O 出皿3325m lrtaai 一ISSSre A&42. 1.4. 2键盘编码模块仿真图6AJTJA 1uALJALJ L_JAn rArA 1f Ik (1Al_J l_J L_lAn rAi_iA时钟信号为1465Hz2.1.5子程序library IEEE;use IEEE. STD_L0GIC_1164. ALL;use IEEE. STD_LOGIC_ARITH. ALL;use IEEE. STD_LOGIC_UNSIGNED. ALL;entity scan_column isPort (scan_clk : in STD_L0GIC;column_key : out STD_LOGIC_VECTOR (3 downto 0) );end scan_column;architecture behavioral of scan_column issignal count : std_logic_vector(1 downto 0):=00;beginprocess(scan_clk)beginif rising_edge (scan_clk) thenif count=ll thencount=“00;elsecountcolwnn_key01110;when 01”=column_keycolumn_keyO1011;when ll=column_keyO0111”;when others =column_key=z,0000/z;end case;end process;end behavioral;键盘编码程序library IEEE;use IEEE. STD LOGIC 1164. ALL;use IEEE. STD LOGIC ARITH. ALL;use IEEE. STD LOGIC UNSIGNED. ALL;entity key_code isPort ( code_clk, clearrow_key : in:in std_logic;STD_LOGIC_VECTOR (2 downto 0);column_key : inSTD LOGIC VECTOR (3 downto 0);con:in std_logic;key_out : out STD_LOGIC_VECTOR);(3 downto 0)end key_code;architecture oneof key_code issignaltempSTD LOGIC VECTOR(6downto0);signalkey_valueSTD LOGIC VECTOR(3downto0):=0000;signalcountstd_logic_vector(1downto0):二00;begintemp=column_key&row_key;process(code_clk)beginif clear=,O thenkey_value=z,0000/z;elsif falling_edge(code_clk) thenif row_key=llll thenif count=ll then key_value=/1111; countO00”;elsecountlf con=,T thenkey_value=z,0000z,;else key_valueif con=1 thenkey_value=*1010*;else key_valueif con=T then key_valuekey_valuekey_valuekey_valuekey_value00100; when0111101=key_valuekey_valuekey_valuekey_valuekey_valuekey_value=key_value: end case;end if;end if;end process;key_out=key_value;end one;消抖模块library IEEE;use IEEE. STD_L0GIC_1164. ALL;use IEEE. STD_LOGIC_ARITH. ALL;use IEEE. STD_LOGIC_UNSIGNED. ALL;entity xiaodou isPort ( xiaodou_clk : in STD_LO
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号