




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告主 课 题 : 微波炉控制器 报 告 人 : 宋春丽 20080711117 同组成员 : 郑倩倩、黄永州 课设时间 : 12月6日-12月17 日 1、 绪论随着社会经济的飞速发展和人民生活水平的提高,微波炉开始进入越来越多的家庭,它给人们的生活带来了极大的方便。它省时、省电、方便和卫生,具有很好的实用性能和极大的市场潜力,我们通过对VHDL语言的学习,希望通过自己所学的知识设计一种新型的微波炉控制系统,既是对自己所学知识的一种检验,也是将知识与实际结合起来,是将知识转化为生产力的第一步。2、 课题的内容和要求本课题是基于FPGA的微波炉控制器设计,即设计一个具备定时、信息显示和音响效应提示功能的微波炉控制器,实现一些功能:该微波炉控制器能够在任意时刻取消当前的工作,复位为初始状态。可以根据需要设置烹调时间的长短,并在LCD上动态显示设置时间的过程,系统最长的烹调时间为59分59秒;开始烹调后,能够显示剩余的时间的多少。该微波炉具有三档加热功能,设置为COOK、BAKE和THAW,分别表示加热、烘烤,、解冻,LCD上显示当前的工作状态,同时通过LED灯亮度不同(即闪烁的频率不同)表示不同工作状态所需的火力不同。音响效应提示直接外接一个蜂鸣器,同时用一个LED灯显示。3、 系统总体设计 系统的工作流程微波炉控制器系统的工作流程为:上电后,系统首先处于一种复位状态,其各个模块均处于初始状态。此时,LCD显示器上显示的是:00:00 WAIT,按下SETTIME或者SETCOOK键,则进入相关功能的设置,如果先是SETTIME,则可以用MADD,MSUB,SADD,SSUB这四个键来实现对分和秒的加减,同时LCD上显示当前设定的时间,然后按SETCOOK键,再可以选择COOKBAKETHAW这三个键中的一个,即选择想要的工作模式,同时LCD上显示当前选用的工作模式,LED1/LED2/LED3对应闪烁,然后拨下开关7,即START,工作开始,LCD上动态显示剩余时间,当时间减到零以后,蜂鸣器响同时LED7亮,表示整个工作过程结束。根据系统工作流程,绘制主程序流程图,如下:微波炉控制器设计流图开始 系统复位数据装载选择工作状态设定时间数据装载完成START键闭合否运行烹饪倒计时时间到否结束NYNY微波炉设计状态图S1S2S5S3S4S0SETCOOK=1SETTIME=1SETTIME=1SETCOOK=1START=1START=1S0:复位后的状态;S1:等待按键;S2:设置定时时间;S3:设置工作模式;S4:延时;S5:微波炉开始工作,同时减计数。系统详细设计输入模块设计输入模块采用4*4矩阵键盘作为输入设备,实现数据输入控制,首先将键盘转换为按键,相应程序为:-File name PADTOKEY- 目的:将键盘的按键转为16个按键信号-编程 周冰航 2008年11月-配合库FPGA Peripherals.Intlib中的KEYPADA模块使用-CPIN 时钟脉冲输入 按10MHz设计 ;复位RLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;entity PADTOKEY is port ( CPIN,R,VALIDKEY :IN STD_LOGIC; KEY :IN STD_LOGIC_VECTOR(3 DOWNTO 0); KEYOUT: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); CLK_1MHZ,RST: OUT STD_LOGIC );end entity ;architecture JGT of PADTOKEY is SIGNAL CTCP: INTEGER RANGE 0 TO 5; SIGNAL CPO :STD_LOGIC; SIGNAL CTCPO :INTEGER RANGE 0 TO 4999; TYPE STATES IS (S0,S1,S2); SIGNAL S: STATES;beginPROCESS(CPIN)BEGINIF CPIN=1 AND CPIN EVENT THEN IF CTCP=5 THEN CPO = NOT CPO; CTCP=0; ELSE CTCP=CTCP+1; END IF;END IF;END PROCESS;PROCESS(CPO,R)BEGINCLK_1MHZ=CPO;IF R=1 THEN RST=0;S=S0;CTCPO=0; KEYOUT=0000000000000000;ELSIF CPO=1 AND CPO EVENT THEN IF CTCPO /= 4999 THEN CTCPO=CTCPO+1; ELSE CTCPORST=0; IF VALIDKEY=1 THEN SKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTKEYOUTNULL; END CASE; ELSE S=S0;KEYOUTRST=1;SRST=0;S NULL; END CASE; END IF;END IF;END PROCESS; end architecture JGT;生成的电路符号如下图:数据装载模块的设计(键盘译码)将键盘转换为按键以后,需要根据需要重新定义键盘,即按下哪个键表示什么含义,我们重新设计键盘后,模拟图如下:MADDMSUBRSETTIMESADDSSUBSETCOOKCOOKBAKETHAW相应程序为: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY ZZQ IS PORT ( KEYOUT:IN STD_LOGIC_VECTOR(15 DOWNTO 0); CPIN,R:IN STD_LOGIC; RST,SET_TIME,MADD,MSUB,SADD,SSUB,SET_COOK,COOK,BAKE,THAW:OUT STD_LOGIC );END ENTITY ;ARCHITECTURE BB OF ZZQ ISBEGINPROCESS(CPIN,R)BEGINIF R=1 THEN RST=0;SET_TIME=0;MADD=0;MSUB=0;SADD=0;SSUB=0; SET_COOK=0;COOK=0;BAKE=0;THAWMADDSADDRSTSET_TIMEMSUBSSUBSET_COOKCOOKBAKETHAWSET_TIME=0;MADD=0;MSUB=0; SADD=0;SSUB=0;SET_COOK=0; COOK=0;BAKE=0;THAWNULL; END CASE;END IF;END PROCESS;END BB;生成电路符号为:控制模块的设计控制模块是整个微波炉控制系统的核心。完成最终的控制和数据处理任务,它通过输入模块提供的按键输入实现数据信息的装在处理。具体程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY KZQ IS PORT (CPIN,R,START,SET_TIME,MADD,MSUB,SADD,SSUB,SET_COOK,COOK,BAKE,THAW:IN STD_LOGIC; DONE:OUT STD_LOGIC; MQH,MQL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SQH,SQL :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MODL:OUT STD_LOGIC_VECTOR(1 DOWNTO 0) );END ENTITY ;ARCHITECTURE WBL OF KZQ ISSIGNAL CPCT :INTEGER RANGE 0 TO 249999;SIGNAL CPCT1:INTEGER RANGE 0 TO 20;SIGNAL CP :STD_LOGIC;SIGNAL MYH,MYL: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SYH,SYL: STD_LOGIC_VECTOR(3 DOWNTO 0);TYPE STATES IS (S0,S1,S2,S3,S4,S5);SIGNAL S : STATES;BEGINPROCESS(CPIN,R)BEGINIF R=1 THEN CPCT=249999;CP=0;ELSIF CPIN=1 AND CPIN EVENT THEN IF CPCT=0 THEN CPCT=249999;CP=NOT CP; ELSE CPCT=CPCT-1; END IF;END IF;END PROCESS;PROCESS(CP,R)BEGINIF R=1 THEN S=S0;MYH=0000;MYL=0000; SYH=0000;SYL=0000;MODL=00;CPCT1=0;DONE S IF SET_TIME=1 THEN S=S2; ELSIF SET_COOK=1 THEN S=S3; ELSE S IF MADD=1 THEN IF MYL=1001 THEN MYL=0000; IF MYH=0101 THEN MYH=0000; ELSE MYH=MYH+1; END IF; ELSE MYL=MYL+1; END IF; ELSIF MSUB=1 THEN IF MYL=0000 THEN MYL=1001; IF MYH=0000 THEN MYH=0101; ELSE MYH=MYH-1; END IF; ELSE MYL=MYL-1; END IF; ELSIF SADD=1 THEN IF SYL=1001 THEN SYL=0000; IF SYH=0101 THEN SYH=0000; ELSE SYH=SYH+1; END IF; ELSE SYL=SYL+1; END IF; ELSIF SSUB=1 THEN IF SYL=0000 THEN SYL=1001; IF SYH=0000 THEN SYH=0101; ELSE SYH=SYH-1; END IF; ELSE SYL=SYL-1; END IF; ELSIF SET_COOK=1 THEN S=S3; ELSIF START=1 THEN S=S5; ELSE S IF COOK=1 THEN MODL=01; ELSIF BAKE=1 THEN MODL=10; ELSIF THAW=1 THEN MODL=11; ELSIF SET_TIME=1 THEN S=S2; ELSIF START=1 THEN S=S5; ELSE S IF CPCT1=20 THEN S=S5;CPCT1=0; ELSE CPCT1 IF SYL=0000 AND SYH=0000 AND MYL=0000 AND MYH=0000 THEN DONE=1; ELSIF SYL=0000 AND SYH=0000 AND MYL=0000 THEN SYL=1001;SYH=0101;MYL=1001;MYH=MYH-1;S=S4; ELSIF SYL=0000 AND SYH=0000 THEN SYL=1001;SYH=0101;MYL=MYL-1;S=S4; ELSIF SYL=0000 THEN SYL=1001;SYH=SYH-1;S=S4; ELSE SYL=SYL-1;S NULL; END CASE;END IF;END PROCESS;PROCESS(MYH,MYL,SYH,SYL)BEGINMQH=MYH;MQL=MYL;SQH=SYH;SQL=SYL;END PROCESS;END WBL;生成的电路符号为显示模块的设计显示模块有两个部分,一个是LCD显示,一个是LED显示。LCD显示程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity WBLLCD is port (CPIN,R,BUSY :IN STD_LOGIC; MYH,MYL,SYH,SYL:IN STD_LOGIC_VECTOR(3 DOWNTO 0); MODL: IN STD_LOGIC_VECTOR(1 DOWNTO 0); CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC; DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );end entity ;architecture JGT of WBLLCD is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; SIGNAL LCDPT : INTEGER RANGE 0 TO 9; SIGNAL CPCT : INTEGER RANGE 0 TO 65535; SIGNAL CP: STD_LOGIC; SIGNAL C1,C2,C3,C4: STD_LOGIC_VECTOR(7 DOWNTO 0);beginPROCESS(CPIN,R)BEGINCLK=CPIN;IF R=1 THEN CPCT=65535;ELSIF CPIN=1 AND CPIN EVENT THEN IF CPCT=0 THEN CPCT=65535;CP=NOT CP; ELSE CPCTS2 - :Y: 转S3- ;N; NULL-S2:给出STROBE信号。转S1-S1,S2完成初始化固定显示的功能PROCESS(CP,R)BEGINIF R=1 THEN S=S0;LCDPT=0;RST S=S1;LCDPT=0;RST RST=0;STROBE=0; IF BUSY=0 THEN LCDPT=LCDPT+1; IF LCDPT=2 THEN S=S3; ELSE S S=S1;STROBE STROBE=0; IF BUSY=0 THEN IF LCDPT=9 THEN LCDPT=2; ELSE LCDPT=LCDPT+1; END IF; S STROBE=1;S NULL; END CASE;END IF; END PROCESS;-选择输出进程(LCDPT)-LCDPT=0,NULL- =1 显示 :3AH,5-2,3,4,5 C 43H,9 O 4FH,10 O 4FH,11 K 4BH,12- B 42H,9 A 41H,10 K 4BH,11 E 45H,12- T 54H,9 H 48H,10 A 41H,11 W 57H,12PROCESS(LCDPT)BEGINCASE LCDPT ISWHEN 0 = NULL;WHEN 1= DATA=00111010;ADDR=0101;OUTLINE DATA=C1;ADDR=1001;OUTLINE DATA=C2;ADDR=1010;OUTLINE DATA=C3;ADDR=1011;OUTLINE DATA=C4;ADDR=1100;OUTLINEDATA=0011&MYH;ADDR=0011;OUTLINEDATA=0011&MYL;ADDR=0100;OUTLINEDATA=0011&SYH;ADDR=0110;OUTLINEDATA=0011&SYL;ADDR=0111;OUTLINE NULL;END CASE;END PROCESS;PROCESS(MODL)BEGINCASE MODL ISWHEN 00 = C1=01010111;C2=01000001;C3=01001001;C4 C1=01000011;C2=01001111;C3=01001111;C4 C1=01000010;C2=01000001;C3=01001011;C4 C1=01010100;C2=01001000;C3=01000001;C4 NULL;END CASE;END PROCESS; end architecture JGT;生成电路符号为:LED显示程序为: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY FF IS PORT (CPIN,R,DONE:IN STD_LOGIC; MODL:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LED1,LED2,LED3:OUT STD_LOGIC );END ENTITY ;ARCHITECTURE WBLLED OF FF ISSIGNAL CPCT :INTEGER RANGE 0 TO 999999;SIGNAL CPCTMAX:INTEGER;BEGINPROCESS(CPIN,R,DONE)BEGINIF R=1OR DONE=1 THEN LED1=0;LED2=0;LED3=0;CPCT CPCTMAX=200000;LED2=0;LED3=0; IF CPCT=CPCTMAX THEN LED1=1; CPCT=CPCT+1; ELSIF CPCT=999999 THEN LED1=0; CPCT=0; ELSE CPCTCPCTMAX=500000;LED1=0;LED3=0; IF CPCT=CPCTMAX THEN LED2=1; CPCT=CPCT+1; ELSIF CPCT=999999 THEN LED2=0; CPCT=0; ELSE CPCT CPCTMAX=800000;LED1=0;LED2=0; IF CPCT=CPCTMAX THEN LED3=1; CPCT=CPCT+1; ELSIF CPCT=999999 THEN LED3=0; CPCT=0; ELSE CPCTNULL; END CASE; END IF; END PROCESS; END WBLLED;生成的电路符号为:音响提示模块设计当工作完成后,蜂鸣器响,其程序为:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity spea isport(cp,r:in std_logic; speakers:out std_logic );end spea;architecture jgt of spea issignal cpct:integer range 0 to 5; -GAIsignal speak:std_logic;beginprocess(cp,r)beginif r=0 then cpct=0;speak=0;elsif cp=1 and cp event then if cpct=5 then -GAI cpct=0;speak=not speak; else cpct=cpct+1; end if;end if;end process;process(speak)beginspeakers=speak;end process;end jgt;生成的电路符号为:系统仿真主控模块仿真所加激励为: STIMULUS0:process begin R=1;WAIT FOR 4NS; R=0;WAIT FOR 5NS; SET_TIME=1;WAIT FOR 3NS; SET_TIME=0; MADD=1;WAIT FOR 3NS;MADD=0; MADD=1;WAIT FOR 3NS;MADD=0; MSUB=1;WAIT FOR 3NS;MSUB=0; SADD=1;WAIT FOR 3NS;SADD=0; SADD=1; WAIT FOR 3NS;SADD=0; SSUB=1; WAIT FOR 3NS;SSUB=0; SET_COOK=1;WAIT FOR 3NS;SET_COOK=0; COOK=1; WAIT FOR 3NS;COOK=0; START=1;WAIT FOR 3NS;START=0; wait; end process; PROCESS BEGIN CPIN=1;WAIT FOR 1NS; CPIN=0;WAIT FOR 1NS;end process;所得波形为:分析该仿真文件,可以看出仿真结果符合模块设计的要求。系统完整电路图仿真结束后生成系统完整的电路图为:下板成功后,又经过反复调时钟脉冲,最终实现了预想的功能。课程设计心得两个星期的课程设计转眼就结束了,如今回想起来,当时的场景仍然历历在目 。在那两个星期中,我品尝到了失败的焦虑和痛苦,也最终收获了成功的甜蜜和喜悦,我体会到了个人钻研琢磨的乐趣无穷,也明白了团队合作的重要意义,更为重要的是,我有了很多的领悟,对我来说,这既是一门实践课,也是一门重要的人生课。“细节决定成败”这一点践行于课程设计的始终,无论是程序的编写、模块的仿真、系统的调试,还是原理图的生成和连接,真正的功夫都体现在细节上。或许在我们平时看来,一个分号微不足道,但是它却关系着程序的对错;主程序修改后,留下一个未用的信号似乎也无关紧要,但是编译就是通不过;眼看着连线已经连上了,但是它就是差那么一点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 唐朝女装服饰讲解
- 汽车火灾发生的原因、扑救、逃生
- 信息技术垃圾分类实施路径
- 吸入一氧化氮治疗在急危重症中的临床应用专家共识
- 小学语文关联词基础知识讲解
- 砌体技术质量交底
- 项目跟踪结果汇报
- 糯山药种植技术
- 项目工作完成汇报
- 现代办公楼地面维修施工方案
- 2024年广东省名校小升初数学(新初一)分班考试检测卷(一)人教版A4原卷
- 2024区域代理销售合同标准版
- 湘教版高中数学必修二单元测试卷全册
- 推广项目洽谈方案范文
- 化工回转窑设计规定综述1
- 2024智慧林草信息化系统建设方案
- 人工智能计算智能课件
- VTE团标解读-成人住院患者静脉血栓栓塞症的预防护理
- 初升高英语测试卷(含答案)
- 单向板肋梁楼盖设计计算书
- 泸西县长润冶炼有限公司2x2.55万千伏安铁合金矿热炉技改建设项目环评报告
评论
0/150
提交评论