《微波炉可编程逻辑控制系统设计说明.doc》由会员分享,可在线阅读,更多相关《微波炉可编程逻辑控制系统设计说明.doc(34页珍藏版)》请在三一办公上搜索。
1、目录第1章概述31.1 VHDL介绍31.2 Quartus 开发平台31.3选题背景41.4选题的技术现状4第2章微波炉控制器的设计要求52.1基本要求52.2发挥部分52.3方案设想5第3章系统硬件的设计73.1系统硬件的组成原理图73.2电源电路73.3 有源晶体83.4数码管83.5LED93.6按键使用93.7报警电路103.8 8X8 点阵103.9 8路拨码开关输入11第4章系统软件设计114.1 分频程序设计114.2数码管显示设计程序设计124.3报警提示设计程序设计164.4门是否关紧程序设计164.5 开关按键处理程序设计17第5章管脚分配及显示结果185.1管脚分配图1
2、85.2 管脚分配表195.3硬件显示结果195.4用户使用方法20第6章总结21参考文献22附录一电路原理图23附录二微波炉控制器系统程序清单26摘要随着社会的发展与科学的进步微波炉在人们的生活中使用非常普遍。微波炉部的电子元件有不多,本设计只设计其中的核心部分控制器,该控制器具有系统复位、状态控制、时间设定、火力档位、烹饪计时、温度控制、显示译码和音响效应等功能,基于CPLD 芯片实现。本设计完成微波炉控制器的设计与分析。以VHDL语言为开发工具,Quartus作为程序运行平台。通过设计和实验,对开发的程序进行调试运行和波形仿真测试验证,初步实现了设计目标。运用硬件描述语言VHDL,大大降
3、低了硬件数字系统设计,使得程序设计直观简洁,设计效率高。关键词微波炉、控制器、VHDLQuartus仿真第1章 概述本文所设计的电子钟系统是运行在Quartus环境下的一个小型的数字系统。我采用了自顶向下的设计方法,应用功能强大的硬件描述语言VHDL完成系统的设计仿真。下面就本设计所用到的技术作一下简单的介绍。1.1 VHDL介绍VHDL是Very High Speed Integrated Circuit Hardware Description Language的缩写,是在ADA语言的基础上发展起来的硬件描述语言。VHDL诞生于1983年,1987年12月,VHDL被接纳为标准硬件描述语言
4、,即IEEE1076标准。经过不断更改和改善,1993年,VHDL重新修订并增加了一些功能,即IEEE 1076-93标准。目前在电子工程领域,作为IEEE的工业标准硬件描述语言,VHDL已成为事实上的通用硬件描述语言。电路设计的描述层次可分为系统级、算法级、寄存器传输级、门级和晶体管级,VHDL的建模围可以从最抽象的系统级一直到门级,从多个层次对电路进行模拟仿真。它除了具有硬件特征的语句外,其语言形式和描述风格以及句法和一般的计算机高级语言相当类似,然而它又有同软件语言完全不同的性质。以下是一个VHDL的实例:这个程序是一个简单的2选1多路选择器的VHDL完整描述。它体现出了VHDL程序的一
5、般结构:使用库Use定义区实体Entity定义区结构Architecture定义区。其中Use定义区描述的是这个程序使用的定义库,类似于C语言的头文件包括;Entity 定义区描述的电子的外部结构,就是指元件的输入和输出接口,它用以定义一个芯片的管脚状态;Architecture定义区里面是这个程序的关键部分,包括算法,功能,硬件的行为等都是在Architecture区里面描述的。一个完整的VHDL程序是对一个功能元件从外部和部两个方面来进行描述,由于元件本身具有层次性,因此它既可以作为完成某一功能的逻辑电路单元而独立存在,也可以作为一个部件,和其他功能元件一起构成更复杂的功能元件或数字系统,
6、因此其单元的概念很清晰,可以灵活地应用于自顶向下的数字系统设计流程。1.2 Quartus 开发平台Quartus II是Altera公司的第四代可编程逻辑器件集成开发环境,提供从设计输入到器件编程的全部功能。Quartus II可以产生并识别EDIF网表文件、VHDL网表文件,为其他 EDA 工具提供了方便的接口;可以在Quartus II集成环境中自动运行其他 EDA 工具。Quartus II 软件的开发流程可概括为以下几步:设计输入、设计编译、设计时序分析、设计仿真和器件编程,具有FPGA和CPLD芯片设计的所有阶段的解决方案。1设计输入 Quartus II软件在File菜单中提供N
7、ew Project Wizard.向导,引导设计者完成项目的创建。当设计者需要向项目中添加新的VHDL文件时,可以通过New选项选择添加。2设计编译 Quartus II编译器完成的功能有:检查设计错误、对逻辑进行综合、提取定时信息、在指定的Altera系列器件中进行适配分割,产生的输出文件将用于设计仿真、定时分析及器件编程。3设计定时分析 单击Project菜单下的Timing Settings.选项,可以方便地完成时间参数的设定。Quartus II软件的时序分析功能在编译过程结束之后自动运行,并在编译报告的Timing Analyses文件夹中显示。4设计仿真 Quartus II软件
8、允许设计者使用基于文本的向量文件.vec作为仿真器的激励,也可以在Quartus II软件的波形编辑器中产生向量波形文件.vwf作为仿真器的激励。5器件编程 设计者可以将配置数据通过MasterBlaster或ByteBlasterMV通信电缆下载到器件当中,通过被动串行Passive Serial配置模式或JTAG模式对器件进行配置编程,还可以在JTAG模式下给多个器件进行编程。1.3选题背景随着生活水平的不断提高, 人们对家用电器的功能和质量的要求越来越高。而现有市售的微波炉其主要弊端为: 不能按既有程序进行烹调, 需要使用者根据食物的类型、数量、温度等因素去设定微波炉的工作时间, 若设定
9、的工作时间过长, 含水分较多的食物可能会产生过热碳化的现象, 若时间过短则达不到预期的烹调效果。不仅在节能方面未做过多考虑,使用者还需要经常翻看使用说明书才能完成操作过程。针对这些问题, 笔者认为有必要研制一种操作简单且烹调效果好的微波炉,根据一些家常菜按固定程序烹调的现象,可采取分时、分档火力加热,节时又节能。1.4选题的技术现状应用CPLD 芯片和硬件描述语言VHDL设计该微波炉控制器系统,该系统用VHDL 编程实现各底层模块的功能,顶层设计用图形输入完成。设计依据如下:1技术可行性:采用EDA作为开发方法,VHDL语言为开发工具,通过设计和实验,对开发的程序进行调试运行和波形仿真测试验证
10、,实现设计目标;2经济可行性:合理利用实验室已有软件、实验箱、开发板,对该微波炉控制器设计进行开发、调试运行、仿真测试,以及结果验证等;3以现有网络资源为依据,以辅导老师的指导为参考,根据已学知识,综合该控制器设计要求,具体细化设计;第2章 微波炉控制器的设计要求2.1基本要求(1) 制定一个在不同功能时火力的控制时序表。具有三档微波加热功能,分别表示微波炉工作状态为烹调、烘烤、解冻,试验使用LED模拟。(2) 实现工作步骤:复位待机检测显示电路设置输出功能和定时器初值启动定时和工作开始结束烹调、音响提示。(3) 在上电或手动按复位键时,控制器输出的微波功率控制信号为0,微波加热处于待机状态,
11、时间显示电路显示为00.00。(4) 具有4位时间预置电路,按键启动时间设置,最大预设数为99分99秒。(5) 设定初值后,按开启键,一方面按选择的挡位启动相应的微波加热;另一方面使计时电路以秒为单位作倒计时。当计时到时间为0则断开微波加热器,并给出声音提示,即扬声器输出23s的双音频提示音。(6) 若在待机状态时按测试键,则4位数码管交替显示全亮和全灭两种状态,以检测数码管各发光段的好坏。2.2发挥部分(7) 微波炉火力档位的增加。(8) 输出显示方面的扩展。(9) 实现智能控制、信息控制。2.3方案设想根据该微波炉的功能设计要求,和慎重的思考后,我的方案确定为以EPM240芯片为核心的基础
12、上结合外围电路,再加上软件上的设计,从而实现可编程逻辑微波炉控制设计。在EPM240的学习板上,我运用了板上的时钟电路、数码管显示电路、按键控制电路、电源电路、点阵显示电路、报警提示电路。在程序编程方面采用了分频器、计数器、点阵显示、调节控制、显示译码器、彩灯控制、门是否关紧。系统预计操作流程如下图2.3 系统流程图其相应的键盘控制布局如下所示:图2.4 系统控制键布局图第3章系统硬件的设计3.1系统硬件的组成原理图数码管显示电路键盘控制电路Max EMP240T100C5电源电路下载电路50M时钟振荡电路LED电路提示报警电路点阵显示电路3.2 电源电路电源可以采用 USB 上电,也可以外接
13、5V DC 电源。外接5V DC电源时请注意正负极性.正外负。 3.3 有源晶体 采用有源晶体频率为 50M Hz 给 CPLD 的 I/O12CLKIN提供时钟。 我们在使用时钟的时候要分配对应的脚。3.4数码管本设计采用共阴极动态显示驱动。因为CPLD的I/O驱动能力比较强,所以可以直接驱动数码管,但为了保护I/O口在一个回路之中串接100欧姆的限流电阻。为了灵活使用I/O口,采用了插针方式,硬件上并没有直接连接上去。3.5LED注意:在 LED 发光二极管的时候,要把二极管的 J10 用跳冒短接起来,J10 是 LED 发光二极管的电源跳线设置.如果你不用 LED 发光二极管也可以把 J
14、10 的跳冒取下来,当然也可以不用取。 3.6按键使用注意:板子上面的几个独立按键都可以作为程序的复位脚,CPLD 和其他的 51 单片机或者 ARM 或者 DSP 不一样的。可编程 CPLD 器件每一个可编程的 I/O 口都可以作为复位脚。而其他的 MPU 就是一个固定的脚,这个大家要分清楚。 3.7报警电路BELL当 I/O15 为低电平时 BELL发出嘟嘟的声音。3.8 8X8 点阵为了让用户在选择档位调节火候大小的时候能更加明显显示,我也设计一个8*8 共阴极的点阵显示,通过程序不断进行扫描,使得行高列低。从而实现要显示的符号。具体电路如图3-9-1。3.9 8路拨码开关输入通过拨码开
15、关可做相应的输入等实验,拨码开关和按键的用途差不多,只不过拨码开关可以固定电平,而按键一松手又回到以前的状态了。 第4章 系统软件设计4.1 分频程序设计在接口电路中,时钟信号的作用至关重要,一般CPLD的外部时钟信号可达到几十MHZ,但是由于一些接口电路的特性所致,这样高频率的时钟不适合电路工作,所以应该引入时钟分频电路产生适合接口的工作频率。时钟发生器的输入是全局时钟clk,是从50MHZ的晶振得到的信号。为了产生合适的扫描时钟、计数时钟和闪烁时钟,所以要让50MHZ信号变成clk1为50000hz和 clk2为1hz。 具体程序如下:-*50000hz分频信号*-processvaria
16、blett : integer range 1 to 500; begin ifthen iftt=500 thentt:=1; clk1= not clk1; else tt:=cntt+1; end if; end if;end process;-*1hz钟信号 *-process variablet : integer range 1 to 25000; begin ifthen ift =25000 thent:=1;clk2= not CLK2; elset:=cnt+1; end if; end if;end process;在产生1HZ信号的进程中之所以用了上一个进程中产生的50
17、00hz的clk1,这样用的目的是为让系统剩下资源,因为EPM240的系统资源本来就是很少的,为了更好的实现更加智能化,所以要尽量节约系统资料。所以用clk1来产生clk2。4.2数码管显示设计程序设计根据要求,通过数码管的显示来显示倒计时的其实时间,客户调节时间的显示,调节火候的显示,所以程序必须设计一个可以进行倒计时的计数器,一个调节时间功能的进程。让用户通过调节时间来制定要进行倒计时的开始时间。一开始时我原本打算通过设计一个4*4矩阵键盘来实现更加智能化设计,让用户可以很轻松通过键盘上的数字按键来控制显示数字来设置全自动时间以及其他功能。程序及硬件电路图都设计好了,但是由于EPM240的
18、系统资源极其有限,矩形键盘所需的系统资源大。所以让我不得不放弃用矩形键盘来控制。所以最终选择用6个独立按键来控制。再说EPM240的端口又多,6个端口对它也只是小菜一碟。整个程序中需要一个倒计时进程来控制数码管到显示计时,原理很简单就是相当计时秒表一样,只是把条件的当0就变为9,变成当9变为0就好了,这样就能实现数码管倒计时功能了。为了控制指示灯和防止用户忘记关门就直接开始工作导致微波伤害人体健康,所以在进行倒计时工作时我加上了一个条件判断是否要进行计时工作。为了实现假如用户调节时间的时候不用一定要调节四位,就直接可以按开始按钮,数码管就不会不停止那里闪烁。所以又要在工作计时时加上一个判断条件
19、。具体程序如下ELSIF THENif then -为了控制指示灯和防止用户忘记关门就直接开始工作导致微波伤害人体健康-cnt1led3led4led5led6=0000; led5=0000;led4=0000; led3led6 led5led4led3=led3-1;end case; end if;在写这段程序是要对全局思路要很清晰,特别是这里用到信号量最多,每个信号要知道它的具体作用。调节时间进程我的主要思路是利用一个移位和两个分别为递增和递减的按键来控制,利用case 语句来控制数码管的位置,利用case语句也有一个好处就是能够节约系统资源。例如实现递增功能的程序如下: elsif
20、 THEN -dizeng=0时递增调时 caset1 iswhen 4=case led3 is when1001= led3 led3case led4 iswhen0101= led4 led4case led5 is when1001= led5 led5case led6 is when1001= led6 led6 null; end case;同理就可以编写实现递减功能的程序。因为我的数码管到管脚是统一连在一起的,目的是为了节约IO口,所以要用不断扫描数码管才能让数码管显示你想要的数字,扫描数码管到方法有很多种,为了让用户知道他调节时间时所控制数码管到位置,所以我加上了当那个数码
21、管受到控制时,还会不断闪烁,加以显示。这因为加上了这个功能,所以要打破传统的扫描方法。顺便节约系统资源。编写程序如下:-*-调整闪烁时间*-processbegin ifthen ift=4 thent=0; else t en_xhdl=111110;dian caset1 is when 4=en_xhdl=clk2,others=1;dianen_xhdl=111011;dian caset1 is when 3=en_xhdl=clk2,others=1;dianen_xhdl=110111;dian caset1 is when 2=en_xhdl=clk2,others=1;dia
22、nen_xhdl=101111;dian caset1 is when 1=en_xhdl=clk2,others=1;dianen_xhdl=011111;dian null; end case; case en_xhdl is when 111110= data4 case dingshi is when 1=DATA4data4 case dingshi is when 1=DATA4data4 case dingshi is when 1=DATA4data4 case dingshi is when 1=DATA4data4 null; end case;END PROCESS;前面
23、完成编码后肯定要完成译码显示,所以一定要一个译码进程来通过对数码管管脚的输出进行编码。我选择的数码管是8段共阴极。当为1时该管对应的段显示变亮。具体程序-*-译码-*-processbegincase data4 is WHEN 0000 =dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 dataout_xhdl1 null;END CASE;END PROCESS;4.3报警提示设计程序设计
24、根据要求,当用户设置微波炉加热时间到时要产生报警提示,所以我就设计一个当倒计时到最后两秒钟的时间就开始提示加热时间以到的报警信号,通过蜂鸣器来提示。具体程序的原理就是当数码管显示到最后两秒的时间就激活一个信号让蜂鸣器产生鸣叫报警,用绿色的LED点亮来让用户知道加热结束了,红灯灭。软件设计的提示报警程序应该是在数码管正常倒计时的程序进程里面的,原因是为了控制绿灯显示。所以这里不能单独作为一个进程处理。具体程序如下:-提示语音- if led6=0000 and led5=0000 and led4=0000 and then bell=1;-提示时间到了,响声2s- green=1; led1=
25、0000; else bell=0; end if; 4.4门是否关紧程序设计炉门是食品的进出口,也是微波炉炉腔的重要组成部分。对它要求很高,绝对不能让微波泄漏出来。炉门由金属框架和玻璃观察窗组成。观察窗的玻璃夹层中有一层金属微孔网,既可透过它看到食品,又可防止微波泄漏。由于玻璃夹层中的金属网的网孔大小是经过精密计算的,所以完全可以阻挡微波的穿透。钛膜也多作为微波炉炉门的材料。 为了防止微波的泄漏,微波炉的开关系统由多重安全联锁微动开关装置组成。炉门没有关好,就不能使微波炉工作,微波炉不工作,也就谈不上有微波泄漏的问题。所以为了让用户使用的更加放心舒心和符合现代家用电器的制作理念。我也设置一个
26、开门按钮,当用户不小心或者忘记关门的时候能够及时让微波炉不工作,以致对用户的安全负责。当用户不小心或者忘记时,微波炉的倒计时进程就不能实现,这个在上面的数码管显示那里就已经设置了,加上了一句检测是否开门,如果开门,它就不能进行倒计时工作。为了更加明显告诉用户门是否关紧,我还设计了一个进程负责处理,关不紧的时候,黄色的LED就会以1s钟不停闪烁来更加明显告诉用户。具体程序如下:-*检查门有没有关好*-processbeginIF then -当kaishi为1时 为危险使用-黄灯1s不停闪烁-yellow=1;else yellow=0;end if;end process;4.5 开关按键处理
27、程序设计开关按钮就是当用户将时间设置和档位选择好了之后就可以按下按钮就可以让微波炉正常启动工作具体程序如下:-*开关按键处理*-processvariable n:integer range 0 to 1:=0;-用于锁存-begin IF THENif then L=0;-是为了让倒计时能是否正常工作的信号指示- n:=n+1; red=1; elsif OR then -当倒计时结束时,红灯能自动灭。 n:=n+1; L=1; red=0; end if; end if;END PROCESS;第5章管脚分配及显示结果5.1管脚分配图图 5-3-1 管脚分配图5.2 管脚分配表表5-3-2
28、 管脚分布表5.3硬件显示结果这里所用到的硬件是天祥电子CPLD/FPGA系列TX-2A的开发板,所用的芯片是EPM240T100C5。先测试一下数码管,看看闪烁时数码管显示是否正常,测试好之后复位,测试和复位都是用按键开关,之后调档位,用按钮开关控制火力档位,火力显示为一个数码管,和点阵显示,火力为0时不能工作不能倒计时,档位调好之后就是设置时间,设置时间只用一个按键调节按键来控制位置,按递加或递减按键进行自加,自减。自加或者自减的频率是一秒加或着减一次,加或减到想要的时间后按下开始按钮,红灯变亮。检测关门键拨码开关如果门关和开始按键按下则就可以开始工作,即可以进行倒数。如果工作中突然关门按
29、键开着则就不能进行工作,并且黄灯以1s一下闪烁提醒用户,关门键其实是对微波炉系统的扩展,这里只能简单的用一个拨码开关进行描述,设想关门键是装在微波炉的门那边,用来感应微波炉的门是否关紧,如没关紧,则不能工作。倒计时进行时,红灯亮,说明正处于工作状态,当倒计时完毕时,亮绿灯,说明工作已完毕,最后二秒蜂鸣器还会进行报警。5.4用户使用方法1、把需放入微波炉的食物放入,关好微波炉的门2、.上电按下复位按钮数码管显示00.00 0,前四位表示时间,最后一位表示当前选择档位。3、.选择火力有三个档位,每按一下选档按钮,数码管就会改变数字0-3,点阵就会产生不同的图案形象告诉用户你选择的火候大小4、.按下
30、移位按键先按下调节按键,看对应是那个数码管在闪烁,那个闪烁就表示对应控制那位数码管显示,通过按下递增或者递减来控制闪烁那位数码管对应的数字显示。调节围为0000到9959。5、按下开始按键当按下开始按键时,对应的红灯会亮,表示在加热中,当加热到最后两秒时红灯就会灭,绿灯亮,蜂鸣器会产生两秒钟报警提示,从而提示用户加热结束可以安全打开。当然假如用户操作不当,中途打开门,那么黄灯亮,红灯也亮。微波炉暂停工作。第6章 总结会选择可编程微波炉这个课题是因为我对可编程这门课还是比较喜欢的,为了完成这个设计,我由查阅资料编辑设计总体框架,再完成代码编辑,到最后的程序仿真成功。用了两周的时间完成,在完成的过
31、程中经历了一次又一次的挫折,从开始只有计时功能到慢慢的能够调时,报警,彩灯,点阵,看着最后全部功能都实现的那一下,我真的是觉得很有成就感。下面是我对实现每个功能的一些设计技巧a) 在产生1HZ信号的进程中之所以用了上一个进程中产生的5000hz的clk1,这样用的目的是为让系统剩下资源,为了更好的实现更加智能化,所以要尽量节约系统资料。所以用clk1来产生clk2。b) 在数码管显示调时反面,最大的定时是59.59.而调时我是采用了按键,同时有递增递减功能,能够让用户更快捷方便的进行定时。c) 具体程序的原理就是当数码管显示到最后两秒的时间就激活一个信号让蜂鸣器产生鸣叫报警,用绿色的LED点亮
32、来让用户知道加热结束了,红灯灭。d) 开关按钮就是当用户将时间设置和档位选择好了之后就可以按下按钮就可以让微波炉正常启动工作e) 在微波炉工作状态的选档方面,除了数码管会显示选当的,在点阵反面也会给予提示 通过这次的毕业设计,让我在可编程这门课程有了更深的了解,而且也提高了我的专业知识,总的来说这样的课程设计比上课有意思多了,在实际中还是有很多不是在课本上能学的到的东西,这个需要自己去理解,去总结的。参考文献【1】. 谭会生,瞿遂春. EDA技术综合应用实例与分析电子科技大学,2004【2】. 廖日坤 CPLD/FPGA应用开发技术白金手册. 中国电力,2005【3】. 友汉. 数字电子技术基
33、础M.:高等教育,2004【4】. 顾斌.数字电路EDA设计M.:电子科技大学,2004【5】. 徐志军. CPLD/FPGA的开发与应用M.:电子工业,2002【6】. 国丽.EDA与数字系统设计M.:机械工业,2004【7】. 罗朝霞. CPLD/FPGA设计及应用M. :人民邮电,2007【8】. 辛春燕. VHDL硬件描述语言. :国防工业,2002【9】. 龚兰芳. EDA技术课程设计及实训指导书. 水利电力职业技术学院, 2007【10】. 龚兰芳. EDA技术实验指导书. :水利电力职业技术学院,2007【11】. 常永. EDA技术与数字系统设计. :电子科技大学,2006【1
34、2】. 亚萍. Protel DXP基础教程. :清华大学,2005附录一 电路原理图附录二 微波炉控制器系统程序清单library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY seg73 IS PORT clk:IN std_logic; - 时钟信号-12 jiance,yiwei,dizeng,dijian,start,kaimeng:IN STD_LOGIC; -分别是上电检测,移位,递增,递减,开始,开门-53,58,57,56
35、,52,39- rst,xuandang:IN std_logic; -复位,火候选挡-61,55- dataout:OUT std_logic_vector; -数码管的段输出- en:out std_logic_vector; -数码管管脚- dian:out std_logic;-数码管的点输出-100- bell:out std_logic; -蜂鸣器-7- Lie:out std_logic_vector;-点阵列-82-73 hang:out std_logic_vector; -点阵行-90-83 red,green,yellow:out std_logic;-72-70-71-彩灯 tishi:out std_logic_vector