欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    简易微波炉控制器的设计与实现.docx

    • 资源ID:692881       资源大小:1.12MB        全文页数:44页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    简易微波炉控制器的设计与实现.docx

    1、简易微波炉控制器的设计与实现数电综合实验报告-简易微波炉控制器的设计与实现班级: 姓名: 学号: 日期: 一:设计课题的任务要求设计制作一个简易微波炉控制器。基本要求:1、微波炉的火力有大、中、小三档可选。用一个按键实现火力的选择,用点阵显示火力档位,点阵的显示随着按键的按下次数而变化,没有选择时默认的火力为大。2、微波加热时间在0-59分59秒之间可选。用4个按键分别设置加热时间各位的长度,用数码管显示加热时间。3、设置一个开始键,按下此键后开始加热。加热过程中,用数码管倒计时显示剩余时间。4、加热过程中,不能修改火力和加热时间。5、加热完成后蜂鸣器至少鸣响两声以提醒使用者加热已结束,加热结

    2、束后回到等待状态。6、设置复位键,任何时候按下复位键可以取消加热,回到等待状态,只有在等待状态下才可以修改火力和加热时间。提高要求:1、用8个LED灯作为加热进度显示条,随着加热时间的增加匀速增加点亮LED灯的个数,无论加热时间是多长,最后都必须将8个LED灯全部点亮。2、增加烧烤功能,用一个键选择微波或烧烤功能,用一个数码管指示当前处于微波还是烧烤功能。3、烧烤火力和加热时间要求与微波功能相同。4、自拟其它功能。二:系统设计(包括设计思路、总体框图、分块设计)设计思路由一个总的控制器完成各个状态的转换。主要分两个大状态,一为没有开始前的可编辑状态。二为开始后的不可编辑状态。所以总的控制器中应

    3、有个edit输出控制各个模块是否可改变。Start开始前,为设置时间状态和火力状态和烧烤选择状态。Start开始后edit变量为0,各个模块不可在编辑。控制器转入倒计时模块,同时led灯进入工作状态。需要注意的是需要为所有模块设置reset输入,以重置各个模块状态值。主要考虑问题:1:由于键盘输入不稳定,数字跳变太快,所以需要加键盘防抖模块。2:键盘防抖模块需要特殊的频率,所以分频器模块不止一个。综上,主要涉及以下几个模块。分频器,键盘防抖模块,控制器,数据选择,数据装载,数字译码,数码管显示模块,led进度显示模块,火力选择和显示模块,倒计时模块,蜂鸣器模块总体框图 分块设计1分频器 1hz

    4、用于倒计时,100hz是时间输入防抖所用频率,10khz是火力防抖所用(也可以用100hz的,不过就是输入稳定性略差)2:防抖模块 左边为时间输入防抖,右边为火力输入和开始键的防抖。3:控制器状态控制器的功能根据输入信号和自身当时所处的状态完成状态的转换和输出相应的控制信号,其模块框图如图所示。其中,输出信号LD_DONE指示数据装载电路载入的烹调结束的状态信息的显示的驱动信息数据;LD_CLK显示数据装载电路的设置的时间数据;LD_EDIT用于输出给其他分模块以便设置是否可改变;COOK指示烹饪的状态,并提示计时器进行减法计算;DATA15.0:将key转化为二进制编码;KEY为定时时间输入

    5、信号,用于设置烹饪时间的长短,其高到低分别表示时间分、秒的十位、个位。当LD_DONE有效时,输出烹调结束数据。当LD_CLK有效时,输出烹调的设置时间数据。4:数据装载当LD_DONE有效时,输出烹调结束的信息数据数据。当L_CLK有效时,输出烹调的设置时间数据。由于结构内部用到与或表达式LOADqqqqqqqq=10000000;的循环。Dianzhenlieshuju是每列对应的数据,用于完成大中小三个字的显示。低电平有效。8:led显示模块Clk外接1hz分频,用于内部对秒的计数。Key接受输入的时间信号,并在内部转化成秒数。对clk的计数和key转化的总时间数比较,当计数对应1/8,

    6、2/8,3/87/8个key时点亮相应的led灯。Ledbar用于输出led显示信号从00000000-11111111.clk没到达一定数字,相应的增加一位1显示。计数完成时,led全部点亮。Set用于清空clk计数。Start用于将key的输入转化成秒数。9:蜂鸣器模块Clk用于1hz输入。对秒计数。每两秒输出一个高电平。总共输出2下。Reset用于清空计数Done用于接收倒计时的完成信号。当done为高电平时开始计数。Out1用于连接蜂鸣器。高电平蜂鸣器响。10总框图三:仿真波形及波形分析1:控制器仿真图中,CLK是输入脉冲,RESET复位,SET_T设置时间,KEY按键输入,START

    7、开始计时,COOK正在烹饪,Key输入59分00秒。Start按之前,ld_clk为有效,可改变数码管显示,start按下后ld-clk为0,不能改变,同时ld-edit变为低电平,控制其他模块不可改变,同时cook信号变为1,表示开始倒计时。Reset后DATA变回0.2数据装载仿真LDclk有效时,DATAOUT=DATAIN,同时load信号有效,表示倒计时接受来自LOADER的信号3倒计时模块:图中,LOAD为高电平时读取信号DATA的值,当COOK信号为高电平时,对DATA的值进行减法计数,并在每个时钟周期都输出减法计数器的当前值。仿真结果与预先设定的电路功能相吻合。4:decode

    8、r译码电路模块每个数字对应相应的数码管脚显示信号如0的时候数码管脚为0111111,与预期一致。5:驱动数码管模块可见a轮流显示每个数码管T则相应的数码管上显示相应的数字。符合预期。6:led显示模块Key输入11秒在start后11秒左右,ledbar全部为1,完成led功能。且reset后ledbar清零。7:蜂鸣器模块在接受done信号后每两秒输出一个高电平且持续两秒。总共响2次。完成功能。8:总体仿真四:源程序1:分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenp

    9、inqi1hz is port(clk_in : in std_logic; clk_out : out std_logic);end;architecture a of fenpinqi1hz is signal cnt : integer range 0 to 24999999; -用于clk计数。(10khz为2499,100hz为249999) signal clk_tmp : std_logic;begin process(clk_in) begin if (clk_inevent and clk_in=1) then if cnt=24999999 then cnt=0; clk_

    10、tmp= not clk_tmp; -输出相反电平 else cnt=cnt+1; end if; end if; end process; clk_out=clk_tmp;end;2:防抖模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity fangdou is port (CLK_100hz:in std_logic; -定义端口 key:in std_logic_vector(3 downto 0); -按键输入 keyo

    11、ut:out std_logic_vector(3 downto 0) -按键输出 ); end fangdou; architecture art of fangdou is signal tmp1:std_logic_vector(3 downto 0); signal tmp2:std_logic_vector(3 downto 0); begin PROCESS(CLK_100hz,key) BEGIN IF(CLK_100hzevent AND CLK_100hz=0)THEN消抖部分 tmp2(0)=tmp1(0); tmp1(0)=key(0); tmp2(1)=tmp1(1);

    12、 tmp1(1)=key(1); tmp2(2)=tmp1(2); tmp1(2)=key(2); tmp2(3)=tmp1(3); tmp1(3)=key(3); END IF; keyout(0) = CLK_100hz AND tmp1(0) AND (NOT tmp2(0); keyout(1) =CLK_100hz AND tmp1(1) AND (NOT tmp2(1); keyout(2) =CLK_100hz AND tmp1(2) AND (NOT tmp2(2); keyout(3) =CLK_100hz AND tmp1(3) AND (NOT tmp2(3); END

    13、PROCESS; end art;3:控制器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY controller IS PORT( RESET:IN STD_LOGIC; -复位 KEY: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -键盘时间输入 START:IN STD_LOGIC; -开始键 CLK:IN STD_LOGIC; -1hz输入 DONE:IN STD_LOGIC; -完成信号 COOK

    14、:OUT STD_LOGIC; LD_CLK:OUT STD_LOGIC; -将key载入作为时间信号 DATA:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-key转换后的输出 LD_DONE:OUT STD_LOGIC ; -完成输出 LD_EDIT:OUT STD_LOGIC );END controller;ARCHITECTURE rtl OF controller ISTYPE STATES IS(IDLE,SET_CLOCK,TIMER,DONE_MSG);SIGNAL NXT,CUR:STATES; -两个状态,当前和下一个SIGNAL DATATMP:

    15、STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL EDIT:STD_LOGIC;-signal startn:std_logic:=0;BEGIN PROCESS(CLK,RESET) -时钟和复位进程 BEGIN IF RESET=1 THEN -复位时将IDLE(显示0000)赋予当前状态 CUR=IDLE; ELSIF CLKEVENT AND CLK=1 THEN CUR=NXT; -如果不是,遇到上边沿则自动跳转下一状态 END IF;END PROCESS; PROCESS(RESET,KEY) -复位和输入的进程 BEGIN -可以让输入4位数字 显示时

    16、间 IF RESET = 1 THEN -复位时不论任何状态数码管都将显示0000 DATATMP 0); ELSE IF KEY(3)EVENT AND KEY(3) = 1 THEN -设置分的十位 IF DATATMP(15 DOWNTO 12) = 0101 THEN -5自动跳转到0 DATATMP(15 DOWNTO 12) = 0000; ELSE DATATMP(15 DOWNTO 12) = DATATMP(15 DOWNTO 12) + 1; END IF; -否则自动加1 END IF; IF KEY(2)EVENT AND KEY(2) = 1 THEN -设置分的个位

    17、 IF DATATMP(11 DOWNTO 8) = 1001 THEN -9自动跳转到0 DATATMP(11 DOWNTO 8) = 0000; ELSE DATATMP(11 DOWNTO 8) = DATATMP(11 DOWNTO 8) + 1; END IF; -否则自动加1 END IF; IF KEY(1)EVENT AND KEY(1) = 1 THEN -设置秒的十位 IF DATATMP(7 DOWNTO 4) = 0101 THEN -5自动跳转到0 DATATMP(7 DOWNTO 4) = 0000; ELSE DATATMP(7 DOWNTO 4) = DATAT

    18、MP(7 DOWNTO 4) + 1; END IF; -否则自动加1 END IF; IF KEY(0)EVENT AND KEY(0) = 1 THEN -设置秒的个位 IF DATATMP(3 DOWNTO 0) = 1001 THEN -9自动跳转到0 DATATMP(3 DOWNTO 0) = 0000; ELSE DATATMP(3 DOWNTO 0) = DATATMP(3 DOWNTO 0) + 1; END IF; END IF; -否则自动加1 END IF; DATA = DATATMP; END PROCESS; PROCESS(START,RESET) - BEGIN

    19、 IF RESET = 1 THEN -将edit置1 EDIT = 1; ELSIF STARTEVENT AND START = 1 THEN -如何start按下将edit置0 EDIT = 0; END IF; END PROCESS;PROCESS(CLK,CUR,EDIT,DONE) ISBEGIN NXT=IDLE; -将IDLE载入NXT - LD_POWER=0; - LD_DONE=0; LD_CLK=0; COOK -烹调时间测试状态 LD_CLK=1; COOK -完成信息显示状态 LD_DONE=0; COOK -初始状态定义 IF EDIT=1 THEN -设置计时

    20、模式 NXT=SET_CLOCK; LD_CLK=1; ELSIF DONE=0 THEN NXT=TIMER; COOK IF DONE=1 THEN -设置计时完成 NXT=DONE_MSG; LD_DONE=0; cook=0; ELSE NXT=TIMER; COOKNULL; END CASE; END PROCESS;PROCESS(EDIT) IS BEGIN LD_EDIT=EDIT;END PROCESS;END rtl;4:数据装载模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;

    21、ENTITY loader IS PORT( DATAIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0); -输入16位数据 LD_TEST:IN STD_LOGIC; LD_CLK:IN STD_LOGIC; LD_DONE:IN STD_LOGIC; DATAOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); -输出16位数据 LOAD:OUT STD_LOGIC -选择状态 );END loader;ARCHITECTURE rtl OF loader ISBEGIN PROCESS(DATAIN,LD_TEST,LD_CLK,LD_DONE

    22、) CONSTANT ALLS:STD_LOGIC_VECTOR(15 DOWNTO 0)-测试信息 :=1000100010001000; -显示8888 CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0)-烹调完成信息 :=1010101111001101; VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN LOAD-烹调完成 DATAOUT DATAOUTNULL; END CASE; END PROCESS;END rtl;5:倒计时模块1:十进制计数器LIBRARY IEEE;USE IEEE.ST

    23、D_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 IS PORT( CLK:IN STD_LOGIC; LOAD,CLR:IN STD_LOGIC; -CLR:清除数据 EN:IN STD_LOGIC; -信号使能 DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -输入的4位数据 Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -输出的4位数据 CARRY_OUT:OUT STD_LOGIC -数据装载 );END cnt10;ARCHITECTURE rtl OF

    24、 cnt10 IS SIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0); -链接输入输出BEGIN -数据的信号 PROCESS(CLK,LOAD,CLR,EN) BEGIN IF CLR = 1 THEN -当CLR高电平,数据变为0000 TMP= 0000; ELSIF LOAD=1THEN -否则装载输入的数据 TMP=DATAIN; ELSIF CLKEVENT AND CLK=0THEN -上升沿时,执行10进制减法 IF EN=1THEN IF TMP=0000THEN -0跳转到9 TMP=1001; ELSE -自动减1 TMP=TMP-1; EN

    25、D IF; END IF; END IF; IF TMP=0000THEN CARRY_OUT=1; -COOK=CARRY_OUT ELSE CARRY_OUT=0; END IF; END PROCESS; Q=TMP;END rtl;2:-六进制减法计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt6 IS PORT( CLK:IN STD_LOGIC; LOAD,CLR:IN STD_LOGIC; EN:IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC );END cnt6;ARCHITECTURE rtl OF cnt6 ISSIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PR


    注意事项

    本文(简易微波炉控制器的设计与实现.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开