数字电路课程设计:微波炉控制器设计  _第1页
数字电路课程设计:微波炉控制器设计  _第2页
数字电路课程设计:微波炉控制器设计  _第3页
数字电路课程设计:微波炉控制器设计  _第4页
数字电路课程设计:微波炉控制器设计  _第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

08电自8班 郑倩倩 学号:20080711125课 程 设 计 报 告课 题: 微波炉控制器设计学 院: 电气与信息工程学院报 告 人: 郑倩倩 20080711125 班 级: 电自8班同组成员: 宋春丽、黄永州 课设时间: 12月06日-12月17 日 目录1 课题描述32 系统总体设计方案32.1系统功能分模块描述3 2.1.1 输入模块32.1.2 控制模块42.1.3 显示模块42.2系统的工作流程52.3 系统状态图63 系统详细设计63.1 输入模块设计63.1.1 键盘模块63.1.2 键盘译码93.2 控制模块输入113.3 控制模块输入153.3.1 LCD显示模块153.3.2 LED显示模块183.4 其它外围模块的设计203.5 系统的总体原理图214 主控模块的波形仿真 225 课程设计感想241 课题描述本课题是基于FPGA的微波炉控制器设计,采用VHDL语言,设计一个具备定时、加热功能设置、信息显示和音效、指示灯提示功能的微波炉控制器,实现一些功能:1.微波炉控制器的工作步骤是:复位待机设置加热功能和定时初值启动定时和工作开始结束烹调,蜂鸣器提示、LED灯亮。2.在上电或手动按复位键RESET时,微波炉处于等待输入状态,LCD显示为00:00和WAIT。3.具有4位时间预置功能,由SET_TIME启动时间设置,可以根据需要设置烹调时间的长短,系统最长的烹调时间为59分59秒。开始烹调后,LCD上能够显示剩余时间是多少。4.具有3档微波加热功能,有SET_COOK启动加热功能的设置,设置为COOK、BAKE、THAW,分别表示微波炉加热为烹调、烘烤、解冻,实验时用三个LED模拟,LED1LED3分别代表三个档位,实验时以三个LED灯闪烁的不同加以区别,同时在LCD上能够显示出当前所选的加热功能。5.设置完成后,闭合开关START,一方面按选择的档位启动相应的微波加热;另一方面是计时电路以秒为单位作倒计时。当计时时间为00:00则终止加热,并由蜂鸣器给出声音提示,由LED灯给出光亮提示。2 系统总体设计方案根据题目要求,该系统控制部分以FPGA为核心,实现时间设置、加热功能设置、蜂鸣器提示、LCD显示、提示灯等。2.1系统功能分模块描述本系统主要由输入、控制和显示部分组成。2.1.1输入模块本系统采用键盘作为主要输入部分,配合开关实现数据输入功能。本系统所用到的4*4键盘上的各按键如下所示:MADDSADDRESETSET_TIMEMSUBSSUBSET_COOKCOOKBAKETHAW图2.1.1_1 4*4键盘各按键对应的功能在图2.1.1中,各按键功能如下:RESET:按下此键,系统进入初始状态,LCD上显示00:00和WAIT,所有的LED灯不亮,蜂鸣器停止蜂鸣。SET_TIME:设置系统工作时间。按下此键,进入调整MADD、MSUB、SADD、SSUB状态。其中,MADD、MSUB设置时间的分,按下MADD表示定时时间加一分,按下MSUB 表示定时时间减一分;SADD、SSUB设置时间的秒,按下SADD表示加一秒,按下SSUB 表示减一秒。比如设定时间为4分59秒,则只需要按MADD四下,按SSUB一下。SET_COOK:用于加热功能选择。按下该键,进入选择COOK,BAKE,THAW按键状态。另外本次系统的输入除了键盘,也用到了开关,比如,本实验用了一个开关代替了START按键,设置好时间和加热功能后,合上开关START,开始进行加热,开关如下图所示:图2.1.1_2 开关2.1.2控制模块控制部分作为整个微波炉控制器系统的核心,它通过输入模块实现数据信息装载处理,并将处理结果通过显示模块显示出来。其涉及到数据的装载、状态转换控制、烹饪计时、火力控制,音效提示等。2.1.3显示模块显示部分采用162 LCD来显示剩余烹饪时间和当前加热功能(即火力),如下图所示: 59:59COOK 图2.1.3 液晶显示示例 本实验还采用三个LED灯来显示火力。如选择烹调,即COOK,是最强的火力,此时第一个LED以最大的占空比闪烁;如选择解冻,即THAW,是最弱的火力,此时第三个LED以最小的占空比闪烁。另外,完成加热功能,则蜂鸣器会响,同时伴随一个LED指示灯亮。2.2 系统的工作流程综上所述,主程序的流程图如下所示:开始系统复位数据装载选择加热功能设定时间数据装载完成START键闭合否N运行烹饪倒计时时间到否结束YYN图2.2 总体工作流程图2.3系统状态图本题所涉及的微波炉控制系统是一个按照时间顺序动作的顺序控制器。对于这类电路,能很方便地应用VHDL中的有限状态机进行描述。图2.3所示为微波炉控制器的状态图。S1S2S5S3S4S0SETCOOK=1SETTIME=1SETTIME=1SETCOOK=1START=1START=1图2.3 微波炉工作状态图图中各状态的含义如下:S0:初始状态S1:复位后的状态S2:设置定时时间S3:设置加热功能S4:定时一秒S5:定时时间减一秒3 系统详细设计3.1 输入模块设计3.1.1 键盘输入输入模块主要采用4*4矩阵键盘作为输入设备,实现数据输入,首先将键盘转换为按键,相应程序为:-File name PADTOKEY- 目的:将键盘的按键转为16个按键信号-配合库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;生成的电路符号如下图: 图3.1.1_1 键盘转按键电路符号 配合库FPGA Peripherals.Intlib中的 KEYPADA 模块,得到键盘输入模块的电路符号如下: 图3.1.1_2 键盘输入模块电路符号3.1.2 键盘译码将键盘转换为按键以后,根据需要重新定义键盘,即按下哪个键表示什么含义,参见图2.1.1_1,相应程序如下: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;生成电路符号为:图3.1.2 键盘译码的电路符号3.2 控制模块设计控制部分作为整个微波炉控制器系统的核心,它通过输入模块实现数据信息装载处理,并将处理结果通过显示模块显示出来。其涉及到数据的装载、状态转换控制、烹饪计时、火力控制,音效提示控制等,具体程序为: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; -DONE=1表示工作结束 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;生成的电路符号为: 图3.2 主控模块的电路符号3.3 显示模块的设计显示模块有两个部分,一个是LCD显示,一个是LED显示。3.3.1 LCD显示模块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) -分频为500US周期BEGIN CLK=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 W 57H,9 A 4FH,10 I 49H,11 T 54H,12,即显示WAIT;- C 43H,9 O 4FH,10 O 4FH,11 K 4BH,12,即显示COOK;- B 42H,9 A 41H,10 K 4BH,11 E 45H,12,即显示BAKE;- T 54H,9 H 48H,10 A 41H,11 W 57H,12,即显示THAW;- =6,7 MYH,3 MYL,4- =8,9 SYH,6 SYL,7PROCESS(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;生成电路符号为: 图3.3.1_1 根据LCD程序生成的电路符号配合库FPGA器件库中的器件,得到LCD液晶显示模块的电路符号如下:图3.3.1_2 LCD显示模块的电路符号3.3.2 LED显示模块本实验采用三个LED灯来显示火力。如选择烹调,即COOK,是最强的火力,此时第一个LED以最大的占空比闪烁;如选择解冻,即THAW,是最弱的火力,此时第三个LED以最小的占空比闪烁。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;LED显示模块的电路符号如下图所示: 图3.3.2 LED显示模块的电路符号其中,第八个LED灯由主控模块的输出端DONE控制,当微波炉工作完成时,DONE=1,LED灯亮,提示工作已完成。3.4 其它外围模块的设计当工作完成后,即DONE=1时,不仅有LED亮灯提示,还有蜂鸣器的声音提示,蜂鸣器的具体程序如下: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;因为系统输入的时钟脉冲频率是10MHz,频率太高,因此,用两个256的分频器进行分频,最终得到蜂鸣器模块的电路符号如下图所示: 图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论