数字电路综合实验-简易微波炉控制器分析解析

上传人:汽*** 文档编号:486275358 上传时间:2023-11-18 格式:DOC 页数:36 大小:1.02MB
返回 下载 相关 举报
数字电路综合实验-简易微波炉控制器分析解析_第1页
第1页 / 共36页
数字电路综合实验-简易微波炉控制器分析解析_第2页
第2页 / 共36页
数字电路综合实验-简易微波炉控制器分析解析_第3页
第3页 / 共36页
数字电路综合实验-简易微波炉控制器分析解析_第4页
第4页 / 共36页
数字电路综合实验-简易微波炉控制器分析解析_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《数字电路综合实验-简易微波炉控制器分析解析》由会员分享,可在线阅读,更多相关《数字电路综合实验-简易微波炉控制器分析解析(36页珍藏版)》请在金锄头文库上搜索。

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

2、束后回到等待状态。6、 设置复位键,任何时候按下复位键可以取消加热,回到等待状态,只有在等待状态下才可以修改火力和加热时间。提高要求:1、 用8个LED灯作为加热进度显示条,随着加热时间的增加匀速增加点亮LED灯的个数,无论加热时间是多长,最后都必须将8个LED灯全部点亮。2、 增加烧烤功能,用一个键选择微波或烧烤功能,用一个数码管指示当前处于微波还是烧烤功能。3、 烧烤火力和加热时间要求与微波功能相同。4、 自拟其它功能。2系统设计2.1 设计思路看到实验设计要求后,首先确定了需要使用的硬件,如数码管、点阵、蜂鸣器、led灯和按键等。然后再分出模块来,一步一步将功能分解成小模块,更容易实现每

3、一步的功能,容易仿真,不容易出错,出错也好查。2.2 总体框图开始火力设置停止时间设置图1 硬件结构框图控制器分频模块进度条显示译码模块点阵火力显示时间显示火力设置时间设置初始化模块图2 模块划分控制器点阵火力显示扬声器进度条显示译码显示计时器分频器时钟开始复位设置图3 逻辑划分框图开始初始化设置加热时间,火力倒计时按下“开始”键?按下“复位”键?倒计时时间到?扬声器响两次是是是否否否图4 ASM图等待加热10010000图5 状态转移图2.3 分块设计这里只对其中几个模块进行说明,不说明的均是一些很简单的、显而易见的模块。2.3.1 初始化模块这是将整个电路的输入信号转化成适合程序处理和计算

4、的信号或变量,再输出到其他模块中进行计算。每当时钟检测到摸个信号变为高电平后,便对这个信号进行处理,比如输出信号自身加1,或置0。2.3.2 减计数计时模块由于在加热过程中,不允许设置时间和火力,所以对reset键进行了特别的设置。还有就是最核心的倒计时程序了。我分别检测秒、十秒、分、十分4位的剩余时间,进行减计数或借位等设置。当检测到4位的时间均为0时,倒计时结束。并输出一个结束信号,控制蜂鸣器报警(这部分在蜂鸣器模块详细说明)。2.3.3 点阵显示火力模块我用三色点阵显示火力,点阵左侧是火苗,火苗大小表示火力大小,右侧是一个火力条,火力条的高低表示火力大小。我设置里两个行向量分别控制红色和

5、绿色的led小灯亮暗,设置列向量进行列扫描,要亮起的一行置0,其余全部置1。效果很漂亮。2.3.4 数码管显示模块这模块主要是和数据选择模块一起用。根据书上数码管显示数字对应的高低电平设置好表格就好了,然后根据输入信号来选择需要显示的数字,根据已经写好的对应的高低电平,就可以正常显示了。2.3.5 蜂鸣器报警模块这个模块实现的功能虽然很简单,但是我却遇到了不少困难。首先遇到的困难是下载成功的同时蜂鸣器马上就报警,于是我在倒计时模块中加入了加热停止信号,在所有位都为0时,该信号置1。但是还不成功,蜂鸣器在我按下start键后就响起来了,并不是在计时结束才响,我就又加了一个输入信号,末位一定不总是

6、0才允许蜂鸣器报警。接下来又遇到了新的问题,就是蜂鸣器不是响3下就停止报警,而是一个周期一个周期重复这3下报警,我又加了报警检测信号,计算报警的6秒时间结束后,强制将蜂鸣器置0 。问题才解决。3. 仿真波形及波形分析3.1 初始化文件first图6 初始化文件仿真波形输入为时钟信号clk,时间设置信号s3s0,火力设置信号ffire。输出波形为时间计数信号o4o1和火力大小信号firest。3.2 减计数器倒计时模块 jianjishu图7 减计数器倒计时模块仿真波形输入为秒时钟信号clk,开始start,复位res,时间输入信号in4in1。输出信号为时间输出信号out4out1,蜂鸣器响起

7、信号light和两个倒计时结束信号c、d。3.3 点阵显示火力模块 fires图8 点阵显示火力模块仿真波形(三色小火)输入为时钟信号clk,复位res,火力大小信号firee。输出为行扫描信号r,红色灯列向量red,黄色led灯列向量yellow。如果将图顺时针旋转90,则可以看出red和yellow信号成一个小火苗状,火苗左侧为矮的小火力显示条。图9 点阵显示火力模块仿真波形(三色中火)输入为时钟信号clk,复位res,火力大小信号firee。输出为行扫描信号r,红色灯列向量red,黄色led灯列向量yellow。如果将图顺时针旋转90,则可以看出red和yellow信号成一个小中苗状,火

8、苗左侧为矮的中火力显示条。图10 点阵显示火力模块件仿真波形(三色大火)输入为时钟信号clk,复位res,火力大小信号firee。输出为行扫描信号r,红色灯列向量red,黄色led灯列向量yellow。如果将图顺时针旋转90,则可以看出red和yellow信号成一个大火苗状,火苗左侧为矮的大力显示条。(注意红色red和黄色yellow重叠起来看!)3.4 进度条显示模块进度条图11 进度条显示模块件仿真波形输入为时钟信号clk,复位res,设置的加热时间i4i1,倒计时剩余时间c4c1。输出为8个led灯向量ledd。从图中可以看出,随着剩余时间的减少,8个LED灯逐渐亮起。3.5 蜂鸣器报警

9、模块 beep图12 蜂鸣器报警模块件仿真波形输入信号为clk时钟信号,十秒位归零但秒位不归零信号kzero,倒计时结束信号zero。当两个信号都被置1后,蜂鸣器报警3声,然后停止报警。4. 源程序4.1 顶层文件 toplibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity top isport(rest,clk1,miao0,miao1,fen0,fen1,startt,fire,st:in std_logic; lighto:out std_logic; row:out std_log

10、ic_vector(7 downto 0); sel:out std_logic_vector(5 downto 0); seg,redd,yel,led:out std_logic_vector(7 downto 0);end;architecture three of top iscomponent fenpin is port(clk:in std_logic; -分频 outclk,outclk2:out std_logic );end component;component first isport(clk,res,s0,s1,s2,s3,ffire:in std_logic; -初

11、始化数据 o1,o2,o3,o4:out std_logic_vector(3 downto 0); firest:out std_logic_vector(1 downto 0);end component;component jianjishu isport(clks,start,res:in std_logic; in1,in2,in3,in4:in std_logic_vector(3 downto 0); -减计数 light,c,d:out std_logic; out1,out2,out3,out4:out std_logic_vector(3 downto 0); end co

12、mponent;component choice isport(clk:std_logic; f1,f2,f3,f4,f5:in std_logic_vector(3 downto 0); o1:out std_logic_vector(2 downto 0); -位选 o2:out std_logic_vector(3 downto 0);end component;component view isport(-screen:in std_logic; f1:in std_logic_vector(2 downto 0); f2:in std_logic_vector(3 downto 0)

13、; -显示输出 segout:out std_logic_vector(7 downto 0); selout:out std_logic_vector(5 downto 0);end component;component fires isport(res,clk:in std_logic; firee:in std_logic_vector(1 downto 0); red:out std_logic_vector(7 downto 0); yellow:out std_logic_vector(7 downto 0); r:out std_logic_vector(7 downto 0)

14、;end component;component shaokao isport(clk,set:in std_logic;o2:out std_logic_vector(3 downto 0);end component;component beep isport(clks,zero,kzero:in std_logic; light:out std_logic);end component;component jindutiao isport(clk,res:in std_logic; i1,i2,i3,i4,c1,c2,c3,c4:in std_logic_vector(3 downto 0); ledd:out std_logic_vector(7 downto 0);end component;component doudong isport(clk,res,min10,min1,sec10,sec

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号