数电电路综合实验报告 电磁炉 北邮.docx
- 文档编号:15473917
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:28
- 大小:337.02KB
数电电路综合实验报告 电磁炉 北邮.docx
《数电电路综合实验报告 电磁炉 北邮.docx》由会员分享,可在线阅读,更多相关《数电电路综合实验报告 电磁炉 北邮.docx(28页珍藏版)》请在冰点文库上搜索。
数电电路综合实验报告电磁炉北邮
数电电路综合实验报告
实验名称:
简易电磁炉控制器的设计与实现
学院:
专业:
班级:
班内序号:
学号:
姓名:
辅导教师:
北京邮电大学
时间:
2013年11月6日
一、设计任务及要求
1、烹饪模式选择:
电磁炉的烹饪模式有火锅、煎炒、爆炒、煲汤和蒸炖五档可选。
用一个按键(BTN7)实现烹饪档位的选择(按下此键依上述顺序依次变化),用点阵显示当前的烹调档位(火锅显示H、煎炒显示J、爆炒显示B、煲汤显示T和蒸炖显示Z),烹调档位的选择按键同时也是加热的开始按键,即烹调档位选定的同时电磁炉就以最大功率开始加热,没有选择时电磁炉处于停止状态,点阵不显示。
2、火力调节:
电磁炉的活力分5档可调:
1900W-1500W-1100W-600W-100W,用数码管DISP3-DISP0显示当前的火力,用两个按键(BTN6和BTN5)实现火力的增加或减少,烹调过程中,除爆炒模式外,其他模式均可以随时调节火力,爆炒模式只能以最高功率加热。
3、定时功能:
用一个按键(BTN4)实现定时设这,按下定时键,蜂鸣器响一声,每按一次定时键,定时时间以5-10-30-60秒钟的顺序依次递增,定时设定完毕后,电磁炉开始倒计时。
用数码管DISP5和DISP4显示定时档位和倒计时的过程,倒计时时间到后,电磁炉自动停止加热并关机。
4、不进行定时操作时,电磁炉以默认加热时间进行加热。
蒸炖模式的默认时间为20秒钟;爆炒模式的默认时间是3秒钟,爆炒3秒钟后自动返回煎炒模式;其他模式的默认时间为90秒。
5、用点亮的发光二极管LD4表示开机加热,熄灭表示关机。
6、设置关闭键,任何时候按下关闭键即可将电磁炉关机。
提高要求:
自拟其他功能。
二、系统设计
1、设计思路和分块设计
首先从题目进行分析,采用VHDL模块化的设计方法来进行洗衣机控制器的设计,即自顶向下,从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块.最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。
根据实验的要求,其中有烹饪模式选择功能、火力调节功能、定时功能和开关机功能,这些部分相互作用,共同组成了电磁炉的基本功能。
开始、关机控制着整个控制部分和显示部分,而控制部分又将电磁炉的状态不同以及倒计时时间的不同反映到了状态显示和时间显示部分。
故可将整个设计过程分为分频模块、按键模块、显示模块和控制模块。
(1)、分频模块由3000分频模块、30000000分频模块构成的,通过对实验室芯片的系统时钟进行分频为其他模块提供适当的时钟信号。
(2)、按键模块由防抖模块和按键信号产生模块构成。
防抖模块用来增加按键的灵活性和有效性;按键控制信号产生模块是通过按键来产生模式选择信号、各模式火力、时间选择信号和关机信号,形成控制模块需要的各种控制信号。
(3)、显示模块由点阵显示模块、数码管显示模块、时间显示模块、火力显示模块以及控制模块的指示灯构成。
其中点阵显示模块用来完成点阵的编码,和根据不同的模式显示不同的点阵信号;数码管显示模块用用来完成显示数字的编码;时间显示模块用来根据不同的定时时间显示个位和十位;火力显示模块用来根据不同的火力选择调动数码管显示不同的信号。
(4)、控制模块是整个系统的中心部分,是状态机设计部分。
在该模块实现了电磁炉各种状态的运行和转换,并调用各子程序。
2、总体框图
三、仿真波形及波形分析
1、点阵显示模块
当模式MODE从0-4变化时,点阵模块分别按照顺序显示字母:
H、J、B、T、Z。
2、数码管显示模块
当show变量按照0-9变化时,驱动数码管显示对应的0-9数字。
3、定时模块
按下BTN7(模式选择按键)开机后,烹饪模式根据BTN7的信号依次变化,数码管信号(TIMER_0,R_10)控制数码管从90开始倒计时。
选定一个模式后,按下BTN4(定时按键),数码管信号将根据按键次数依次按照5-10-30-60递增,且蜂鸣器信号(SPD)根据按键发出声响。
当处于爆炒模式时,默认时间为3秒,之后返回煎炒模式,且时间默认为90秒。
当处于蒸炖模式时,时间默认为20秒。
倒计时结束后,关机信号起作用。
4、火力调节模块
当按下火力增加(BTN5)时,火力(FIRE信号)按照100-600-1100-1500-1900逐次增加。
当按下火力减小(BTN6)时,火力逐次递减。
按下开机键(BTN7)开机后,火力默认处于1900w的状态。
5、分频模块
在仿真中采用100分频这样便于观察结果。
四、源程序
1、分频模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdividerISPORT(CP:
INSTD_LOGIC;CLK:
OUTSTD_LOGIC);--分频器1
ENDENTITYdivider;
ARCHITECTUREbehaveOFdividerIS
SIGNALCOMB:
INTEGERRANGE0TO2499;
SIGNALTEMP:
STD_LOGIC;
BEGIN
PROCESS(CP)
BEGIN
IF(CP'EVENTANDCP='1')THEN--cp输入
IF(COMB=24999999)THEN
COMB<=0;TEMP<=NOTTEMP;
ELSE
COMB<=COMB+1;TEMP<=TEMP;
ENDIF;
ENDIF;
ENDPROCESS;
CLK<=TEMP;--clk输出
ENDbehave;
(分频器2省略)
2、点阵显示模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYlatticeIS
PORT(CLK2,STATE:
INSTD_LOGIC;
MODE:
inSTD_LOGIC_VECTOR(2DOWNTO0);
ROW:
outSTD_LOGIC_VECTOR(7DOWNTO0);
COL:
outSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYlattice;
ARCHITECTUREbehaveOFlatticeIS
SIGNALTEMP:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(CLK2,STATE)
BEGIN
IFSTATE='1'THEN--当开机时
IFCLK2'EVENTANDCLK2='1'THEN
CASEMODEIS--当模式为煎炒时,点阵显示J
WHEN"001"=>
CASETEMPIS
WHEN"01111111"=>ROW<="01110000";TEMP<="11111110";
WHEN"11111110"=>ROW<="11111000";TEMP<="11111101";
WHEN"11111101"=>ROW<="11011000";TEMP<="11111011";
WHEN"11111011"=>ROW<="00011000";TEMP<="11110111";
WHEN"11110111"=>ROW<="00011000";TEMP<="11101111";
WHEN"11101111"=>ROW<="00011000";TEMP<="11011111";
WHEN"11011111"=>ROW<="01111110";TEMP<="10111111";
WHEN"10111111"=>ROW<="01111110";TEMP<="01111111";
WHENOTHERS=>ROW<="11111111";TEMP<="11111110";
ENDCASE;
WHEN"010"=>--当模式为爆炒时,点阵显示B
CASETEMPIS
WHEN"01111111"=>ROW<="01111100";TEMP<="11111110";
WHEN"11111110"=>ROW<="01100110";TEMP<="11111101";
WHEN"11111101"=>ROW<="01100110";TEMP<="11111011";
WHEN"11111011"=>ROW<="01111100";TEMP<="11110111";
WHEN"11110111"=>ROW<="01111100";TEMP<="11101111";
WHEN"11101111"=>ROW<="01100110";TEMP<="11011111";
WHEN"11011111"=>ROW<="01100110";TEMP<="10111111";
WHEN"10111111"=>ROW<="01111100";TEMP<="01111111";
WHENOTHERS=>ROW<="11111111";TEMP<="11111110";
ENDCASE;
WHEN"011"=>--当模式为煲汤时,点阵显示T
CASETEMPIS
WHEN"01111111"=>ROW<="00011000";TEMP<="11111110";
WHEN"11111110"=>ROW<="00011000";TEMP<="11111101";
WHEN"11111101"=>ROW<="00011000";TEMP<="11111011";
WHEN"11111011"=>ROW<="00011000";TEMP<="11110111";
WHEN"11110111"=>ROW<="00011000";TEMP<="11101111";
WHEN"11101111"=>ROW<="00011000";TEMP<="11011111";
WHEN"11011111"=>ROW<="01111110";TEMP<="10111111";
WHEN"10111111"=>ROW<="01111110";TEMP<="01111111";
WHENOTHERS=>ROW<="11111111";TEMP<="11111110";
ENDCASE;
WHEN"100"=>--当模式为蒸炖时,点阵显示Z
CASETEMPIS
WHEN"01111111"=>ROW<="01111110";TEMP<="11111110";
WHEN"11111110"=>ROW<="01111110";TEMP<="11111101";
WHEN"11111101"=>ROW<="00110000";TEMP<="11111011";
WHEN"11111011"=>ROW<="00011000";TEMP<="11110111";
WHEN"11110111"=>ROW<="00001100";TEMP<="11101111";
WHEN"11101111"=>ROW<="00000110";TEMP<="11011111";
WHEN"11011111"=>ROW<="01111110";TEMP<="10111111";
WHEN"10111111"=>ROW<="01111110";TEMP<="01111111";
WHENOTHERS=>ROW<="11111111";TEMP<="11111110";
ENDCASE;
WHEN"000"=>--当模式为火锅时,点阵显示H
CASETEMPIS
WHEN"01111111"=>ROW<="01100110";TEMP<="11111110";
WHEN"11111110"=>ROW<="01100110";TEMP<="11111101";
WHEN"11111101"=>ROW<="01100110";TEMP<="11111011";
WHEN"11111011"=>ROW<="01111110";TEMP<="11110111";
WHEN"11110111"=>ROW<="01111110";TEMP<="11101111";
WHEN"11101111"=>ROW<="01100110";TEMP<="11011111";
WHEN"11011111"=>ROW<="01100110";TEMP<="10111111";
WHEN"10111111"=>ROW<="01100110";TEMP<="01111111";
WHENOTHERS=>ROW<="11111111";TEMP<="11111110";
ENDCASE;
WHENOTHERS=>ROW<="11111111";TEMP<="11111110";
ENDCASE;
ENDIF;
ENDIF;
IFSTATE='0'THEN--在关机状态下,点阵不显示
TEMP<="11111111";
ENDIF;
ENDPROCESS;
COL<=TEMP;
ENDbehave;
3、数码管显示模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdecoderIS
PORT(show1:
STD_LOGIC_VECTOR(3DOWNTO0);
show2:
STD_LOGIC_VECTOR(3DOWNTO0);
show3:
STD_LOGIC_VECTOR(3DOWNTO0);
show4:
STD_LOGIC_VECTOR(3DOWNTO0);
show5:
STD_LOGIC_VECTOR(3DOWNTO0);
show6:
STD_LOGIC_VECTOR(3DOWNTO0);
CLK2,STATE:
INSTD_LOGIC;
comb:
outSTD_LOGIC_VECTOR(6DOWNTO0);
CAT:
outSTD_LOGIC_VECTOR(5DOWNTO0));
ENDENTITYdecoder;
ARCHITECTUREbehaveOFdecoderIS
SIGNALCOMB1:
INTEGERRANGE1TO6;
BEGIN
p1:
PROCESS(CLK2)
BEGIN
IF(CLK2'EVENTANDCLK2='1')THEN
IF(COMB1=6)THEN
COMB1<=1;
ELSE
COMB1<=COMB1+1;
ENDIF;
ENDIF;
ENDPROCESS;
P2:
PROCESS(STATE,show1,show2,show3,show4,show5,show6)
BEGIN
IFSTATE='1'THEN--在开机的状态下
IFCOMB1=1THEN--如果调用第一个数码管
CAT<="011111";
CASEshow1IS--根据信号使第一个数码管分别显示0-9
WHEN"0000"=>comb<="1111110";
WHEN"0001"=>comb<="0110000";
WHEN"0010"=>comb<="1101101";
WHEN"0011"=>comb<="1111001";
WHEN"0100"=>comb<="0110011";
WHEN"0101"=>comb<="1011011";
WHEN"0110"=>comb<="0011111";
WHEN"0111"=>comb<="1110000";
WHEN"1000"=>comb<="1111111";
WHEN"1001"=>comb<="1110011";
WHENOTHERS=>comb<="1111111";
ENDCASE;
ELSE
IFCOMB1=2THEN--如果调用第二个数码管
CAT<="101111";
CASEshow2IS--根据信号使第二个数码管分别显示0-9
WHEN"0000"=>comb<="1111110";
WHEN"0001"=>comb<="0110000";
WHEN"0010"=>comb<="1101101";
WHEN"0011"=>comb<="1111001";
WHEN"0100"=>comb<="0110011";
WHEN"0101"=>comb<="1011011";
WHEN"0110"=>comb<="0011111";
WHEN"0111"=>comb<="1110000";
WHEN"1000"=>comb<="1111111";
WHEN"1001"=>comb<="1110011";
WHENOTHERS=>comb<="1111111";
ENDCASE;
ELSE
IFCOMB1=3THEN--如果调用第三个数码管
CAT<="110111";
CASEshow3IS--根据信号使第三个数码管分别显示0-9
WHEN"0000"=>comb<="1111110";
WHEN"0001"=>comb<="0110000";
WHEN"0010"=>comb<="1101101";
WHEN"0011"=>comb<="1111001";
WHEN"0100"=>comb<="0110011";
WHEN"0101"=>comb<="1011011";
WHEN"0110"=>comb<="0011111";
WHEN"0111"=>comb<="1110000";
WHEN"1000"=>comb<="1111111";
WHEN"1001"=>comb<="1110011";
WHENOTHERS=>comb<="1111111";
ENDCASE;
ELSE
IFCOMB1=4THEN--如果调用第四个数码管
CAT<="111011";
CASEshow4IS--根据信号使第四个数码管分别显示0-9
WHEN"0000"=>comb<="1111110";
WHEN"0001"=>comb<="0110000";
WHEN"0010"=>comb<="1101101";
WHEN"0011"=>comb<="1111001";
WHEN"0100"=>comb<="0110011";
WHEN"0101"=>comb<="1011011";
WHEN"0110"=>comb<="0011111";
WHEN"0111"=>comb<="1110000";
WHEN"1000"=>comb<="1111111";
WHEN"1001"=>comb<="1110011";
WHENOTHERS=>comb<="1111111";
ENDCASE;
ELSE
IFCOMB1=5THEN--如果调用第五个数码管
CAT<="111101";
CASEshow5IS--根据信号使第五个数码管分别显示0-9
WHEN"0000"=>comb<="1111110";
WHEN"0001"=>comb<="0110000";
WHEN"0010"=>comb<="1101101";
WHEN"0011"=>comb<="1111001";
WHEN"0100"=>comb<="0110011";
WHEN"0101"=>comb<="1011011";
WHEN"0110"=>comb<="0011111";
WHEN"0111"=>comb<="1110000";
WHEN"1000"=>comb<="1111111";
WHEN"1001"=>comb<="1110011";
WHENOTHERS=>comb<="1111111";
ENDCASE;
ELSE
IFCOMB1=6THEN--如果调用第六个数码管
CAT<="111110";
CASEshow6IS--根据信号使第六个数码管分别显示0-9
WHEN"0000"=>comb<="1111110";
WHEN"0001"=>comb<="0110000";
WHEN"0010"=>comb<="1101101";
WHEN"0011"=>comb<="1111001";
WHEN"0100"=>comb<="0110011";
WHEN"0101"=>comb<="1011011";
WHEN"0110"=>comb<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数电电路综合实验报告 电磁炉 北邮 电路 综合 实验 报告