• 2.35 MB
  • 2022-04-22 13:43:05 发布

基于单片机的微波炉控制系统设计 毕业设计论文.doc

  • 70页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于单片机的微波炉控制系统设计 南京工程学院自动化学院本科毕业设计(论文)摘要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,再根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。微波炉控制系统设计采以微控制器(MCU)为核心,基于MCU编制软件系统,结合8位数码管(LED)显示以及必要的外围电路,完成微波炉的可编程智能控制。系统由计时控制、火力设定、用户界面、音响发生几大模块组成。能够根据键盘输入完成相应的功能,同时使用LED显示系统状态,并进行响铃提示。关键词:微控制器;微波炉;控制器南京工程学院自动化学院本科毕业设计(论文) 南京工程学院自动化学院本科毕业设计(论文)ABSTRACTWiththecomputerpenetrationinthesocialsphereinrecentyears,andthedevelopmentoflargescaleintegratedcircuits,microcontrollerapplicationsarecontinuallydevelopingdeeply,becauseofitspowerfulfunction,smallsize,lowpowerconsumption,cheapprice,reliableperformance,easilyusing,etc,itisparticularlysuitableforsystemswithcontrol.Itisusedmoreandmorewidelyinautomaticcontrol,intelligentinstruments,meters,dataacquisition,militaryproductsandhomeappliancesetc,SCMisoftenusedasacorecomponentinaccordingtothespecifichardwarearchitecture,anditisoftencombinedwithapplication-specificfeaturesofthesoftwareobjectstomakeperfect.Microwaveovencontrolsystemdesignusedthemicrocontrollerasthecore,basedonMCUpreparationsoftwaresystem,combinedwitheightdigitaltube(LED)displayandnecessaryperipheralcircuitstocompletethemicrowaveovenprogrammableintelligentcontrol.Systemconsistedofseveralmodulessuchasthetimecontrolling,firesetting,theuserinterface,sounddesign.Itcouldcompletethefunctionunderthekeyboard,meanwhileusedtheLEDtodisplaythestatusofsystem,andpromptedusthrougharinger.Keywords:microcontroller;microwaveoven;controller南京工程学院自动化学院本科毕业设计(论文) 南京工程学院自动化学院本科毕业设计(论文) 南京工程学院自动化学院本科毕业设计(论文)第一章绪论1.1引言现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。目前,在生活、生产的各领域中,凡是有自动控制要求的地方几乎都会有单片机的身影;从简单到复杂,从空中、地面到地下,凡是能想象到的地方几乎都有使用单片机的需求。现在尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目,因此,单片机的应用大有前景和拓展空间。单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证操作安全等。随着数字集成电路技术的发展,加上采用了先进的石英技术,自动控制具有计算准确、性能稳定、携带方便等优点。单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。从前必须有模拟电路或数字电路实现的大部分功能,现在已能使用单片机通过软件方法实现了。这种以软件取代硬件并提高系统性能的控制系统“软化”技术,称之为微控制技术。微控制技术是一种全新的概念,是对传统控制技术的一次革命。随着单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。[1][2]1965年,乔治·福斯特对微波炉进行大胆改造,与斯本塞一起设计了一种耐用和价格低廉的微波炉。1967年,微波炉新闻发布会兼展销会在芝加哥举行,获得了巨大成功。从此,微波炉逐渐走入了千家万户。由于用微波烹饪食物又快又方便,不仅味美,而且有特色,因此有人诙谐地称之为“妇女的解放者”。传统的微波炉容易产生设定误差,定时不够准确,会造成过快或者过慢,这样会影响食物的美味。基于单片机的微波炉控制系统设计,正是利用单片机的多功能控制的特点,进行微波炉的系统控制设计,改变了传统微波炉时间不明显,控制零件繁多的局面,所以利用微处理器进行定时、准点控制,具有很大的应用市场潜力。1.2课题背景单片机66 南京工程学院自动化学院本科毕业设计(论文)自1976年由Intel公司推出MCS-48开始,迄今已有二十多年了。由于单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核技术转让给许多半导体芯片生产厂家,如ATMEL、PHILIPS、ANALOG、DEVICES、DALLAS等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些兼容机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,因而,常用80C51系列来称呼所有具有8051指令系统的单片机,它们对8051单片机一般都作了一些扩充,更有特点。其功能和市场竞争力更强,不该把它们直接称呼为MCS-51系列单片机,因为MCS只是Intel公司专用的单片机系列型号。MCS-51系列及80C51单片机有多种品种。它们的引脚及指令系统相互兼容,主要在内部结构上有些区别。目前使用的MCS-51系列单片机及其兼容产品通常分成以下几类:基本型、增强型、低功耗型、专用型、超8位型、片内闪烁存储器型。本文讨论的单片机多功能数字钟系统设计的核心是目前应用极为广泛的51系列单片机,多功能数字钟配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高,功能强等特点。不仅能满足生产、生活需要而且还有很多功能可供开发,有着广泛的应用前景。1.1课题研究来源在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时、洗衣机定时警报等。早期常用的一些时间控制单元都使用模拟电路硬件设计制作的,其定时准确性和重复精度都不是很理想,精确度低,不能实现准点控制。现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,如数控机床控制系统,自动化生产线系统等,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。单片机功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品。66 南京工程学院自动化学院本科毕业设计(论文)随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,种类繁多,这样使用起来很不方便。根据这种实际情况,设计了一个单片机多功能定时系统,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,既减少了繁多的多控制器,同时又可以进行时钟校准和定点打铃。它可以执行不同的时间表的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,提高了生产率,扩大了数字化的范围,为家庭数字化提供了可能。1.1本文主要研究工作本课题主要是对家用微波炉控制系统的研究,确定系统的整体方案,编写程序来实现微波炉控制的基本功能。主要工作是掌握单片机应用技术,显示技术,电子技术等相关知识,设计制作一个微波炉控制器电路,具有三档微波加热功能,分别表示微波加热为大火、中火、小火,模拟仿真中用不同颜色LED模拟。实现工作步骤:复位待机——〉检测显示电路——〉设置输出功能和定时器初值——〉启动定时和工作开始——〉结束加热、音响提示。在上电或手动按复位键时,控制器输出的微波功率控制信号为0,微波加热处于待机状态,时间显示电路显示为00-00-00。具有8位时间预置电路,按键启动时间设置,最大预设数为23小时59分59秒。设定时间初值后,按档位选择键,启动相应的微波加热;另一方面使计时电路以秒为单位作倒计时。当计时到时间小于20s(可以通过软件修改任意响铃提示时间)则断开微波加热器,并给出声音提示,即扬声器输出提示音。设计中具体的问题有:(1)如何进行时间设置(时、分、秒)和时钟倒计时功能;(2)如何设计智能火力控制(3)如何设计显示模块显示时间;(4)如何设计按键设置;(5)如何设计音响提示声音;(6)如何设计微波炉工作或者停止1.2本文结构本文以微波炉的控制系统设计为研究对象,以单片机的应用为背景,对微波炉系统基本功能进行设计与研究。全文主要分七章,各章的主要内容如下:第一章主要介绍了单片机的特点、概念、发展背景以及微波炉的发展背景;第二章主要研究了微波炉控制系统的总体概述、工作原理、电路设计及软件设计总体要求;第三章66 南京工程学院自动化学院本科毕业设计(论文)主要根据微波炉的工作原理确定控制系统的各个控制模块,以及对各个控制模块设计方案进行比较,然后作出最优选择;第四章根据前一章的分析比较论证进行系统硬件电路设计;第五章主要进行系统的软件设计,根据流程图设计相应的合理的程序,并进行调试;第六章依据设计好的硬件电路和软件程序,用Proteus软件进行仿真验证;第七章总结了全文的研究工作,给出了存在的问题和进一步的研究方向。66 南京工程学院自动化学院本科毕业设计(论文)第一章控制系统总述2.1工作原理2.1.1系统框图系统待机用户设定开始加热完成、提示一般的家用微波炉操作流程都包括定时、档位选择、启动等。所以微波炉工作大致可以四个步骤:系统待机——用户时间、档位、火力设置——系统工作——完成、提示。具体系统框图如图2.1.1。图2.1.1系统框图2.1.2系统功能实现系统启动时,8位数码管显示零时、零分、零秒,即00-00-00。火力输出档位通过三个不同颜色的发光二极管显示(分别表示大火、小火、中火)。键盘分按键K0,K1,K2,K3,K4,K5,K6,RESET八个按键(RESET复位键采用独立式键盘)。K0键为微波炉的启动与关闭。K1、K2、K3键为档位选择键,分别代表大火、中火、小火,选择后相应的发光二极管会发亮。K4键为时、分、秒设定选择键。K5、K6键分别为时间的加减设定。RESET为复位键。每次按下按键后系统都会启动音响发生模块发出“嘀”的声音。选择合适的档位,微波炉启动数码管开始倒计时,当倒计时到软件程序设定的固定时间(20s)会进行倒计时提醒,此时会发出提示声音。各功能实现如图2.1.2。66 南京工程学院自动化学院本科毕业设计(论文)工作状态档位设置用户设置系统待机系统上电时间设定系统复位按K0启动初始时间为00-00-00K1、K2、K3分别代表大、中、小Reset复位K4、K5(+)、K6(-)图2.1.2系统功能图2.1控制电路设计微波炉控制系统以AT89C51单片机为核心,通过外接设备进行微波炉的显示、火力输出、定时设计,来完成系统设计的要求。具体框图如图2.2.1。内部定时器电源电路单片机音响发生电路矩阵键盘电路档位显示电路8位数码管显示电路门电路设计火力输出电路图2.2.1系统的总体框图66 南京工程学院自动化学院本科毕业设计(论文)控制电路设计部分以AT89C51单片机控制电路为核心,由定时器电路,显示电路,键盘电路,门电路,电源电路,音响发声电路,火力输出电路,档位显示电路共同组成微波炉控制系统电路,在本设计中,我们对火力输出电路原理只作解释,不作硬件电路的设计。2.1软件设计随着科技的飞速发展,C语言的地位显得日益重要。C语言是一种结构化的语言,它层次清晰便于按模块化方式组织程序。它可以用于系统软件的开发,同样也适用于应用软件的开发。C语言具有效率高,可移植性强等特点。如果以前采用的是汇编语言写的程序,在日后升级和维护相当困难,别人写的程序不易被读懂,但用C语言写程序时,相当便利。所以本次程序设计采用C语言编写,既能保证设计的精度,又能使程序通俗易懂。本次设计采用Keil4作为编写软件,并通过Keil4进行编译调试。软件界面如图2.3.1。图2.3.1软件界面66 南京工程学院自动化学院本科毕业设计(论文)KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的最佳选择,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。2009年2月发布KeilμVision4,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。2011年3月ARM公司发布最新集成开发环境RealViewMDK开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM器件的最完美匹配。基于Keil的完美性能,我们将采用Keil4作为本设计软件程序的编写、编译、调试工具,因为本次设计将使用C语言编写程序,C语言编写程序通俗易懂、便于后期修改完善、灵活性高,满足设计精度要求所以使用Keil作为编写、编译、调试的工具,是不二之选。2.1本章小结66 南京工程学院自动化学院本科毕业设计(论文)通过对微波炉控制系统的整体概述,我们已经基本熟悉了微波炉的工作原理、硬件电路设计、软件设计等各个方面。硬件电路大体包括定时电路、门电路、键盘电路、显示电路、响铃电路、火力输出电路几个主要模块。软件设计也将从这几个模块入手。因此,我们对微波炉控制系统有了初步的了解,并且确定了微波炉控制系统的大致研究方向,了解了微波炉控制的各个模块的功能,为进一步研究、细化各模块功能奠定了坚实的基础。66 南京工程学院自动化学院本科毕业设计(论文)第一章各模块设计方案微波炉控制系统设计是以AT89C51单片机为核心的。系统具体包含显示电路,键盘电路,计时控制电路,火力输出电路,响铃提示电路等多个部分,根据我们所了解的,每个部分都可以采用不同的方案来实现,但不同的方案有实现的难易的不同,不同的设计要求所采取的方案也各不相同,有的需要考虑高精度,有的需要保证低功耗等等,所以通过思考分析,最终做出最合理的选择,使之更加科学和合理,达到设计要求。下面对各模块设计方案做分析和选择。3.1档位输出方案方案一:我们可以通过扩展芯片对单片机的I/O口进行扩展,将单片机的一个I/O端口扩展成三个输出端口以便节省单片机的I/O口资源。方案一如图3.1.1。方案二:直接利用单片机的三个I/O口进行档位控制。方案二如图3.1.2。单片机扩展芯片单片机I/OI/OI/O图3.1.1方案一图3.1.2方案二结论:鉴于单片机含有丰富的I/O口资源,所以我们采用方案二,无须扩展。3.2计时控制方案方案一:使用专门的时钟芯片控制,我们可以采用专门的时钟控制芯片能够保证高精度、操作简单等,能够实现单片机的准点定时控制。方案二:AT89C51单片机内部就含有定时器,我们可以使用一个定时器和计数器结合,加上12M晶振的驱动,实现定时、计数控制。结论:我们采用方案二,单片机灵活性高,方案二节省器件,使电路简化,有很高的性价比,对于计时的精度我们可以通过软件设计来弥补调整。66 南京工程学院自动化学院本科毕业设计(论文)3.3键盘设计方案方案一:独立式键盘,每个独立按键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点是当按键较多时占用单片机的I/O数目较多,优点是电路设计简单,且编程极其容易。在按键不多的情况下我们可以采用独立式键盘。独立式键盘如图3.3.1。方案二:4×4矩阵式键盘,此类键盘是采用行列扫描方式,优点是当按键较多时可以降低占用单片机的I/O口数目,节省单片机的I/O口资源。结论:我们采用方案二,因为本次设计采用了多个按钮,如果使用独立式键盘,将占用大量的I/O口资源,所以我们采用4×4矩阵式键盘,这样可以节省大量的I/O口资源。矩阵式键盘如图3.3.2。接单片机图3.3.1独立式键盘图3.3.2矩阵式键盘3.4显示设计方案方案一:采用数码管显示,数码经济适用,只需简单的驱动芯片,即可驱动显示,但是信息量少。方案二:采用液晶显示,某些液晶显示器具有汉字显示功能,用液晶来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,如AM/PM,闹钟符号等,信息量丰富且直观易懂。而且液晶显示有功耗低,体积小,重量轻,寿命长,绿色环保等优点。结论:根据设计要求,我们只需实现定时显示,只要能显示时间即可,信息量少,只需显示时、分、秒。所以我们采用8位数码管进行显示,完全能够达到设计要求。66 南京工程学院自动化学院本科毕业设计(论文)3.5火力输出方案3.5.1微波炉火力输出原理微波炉内部含有一个器件叫功率调节器,也称火力调节器,它实际上也是个时间开关,功能是在微波炉工作期间周期性地不断接通和断开磁控管的电源,使磁控管有规律地间歇工作,即工作时间和休止时间有一定的比例关系,改变这个比例,就使磁控管在微波炉整个加热时间段中的工作时间得以相应改变,从而起到调节微波输出功率的作用。功率调节器也由定时器所用的同一电机驱动。实际工作时,当设定好功率值后,功率调节器便控制磁控管工作一段时间再休止一段时间,并按一定周期不断循环这个过程,直至微波炉工作结束。这里假设磁控管在—个循环周期内的工作时间为t1,休止时间为t2,则一个循环周期T=t1+t2,可清楚地看出功率调节器控制微波输出功率的方式。循环周期T取值很有讲究,从加热角度考虑取短些好,但太短将使功率调节开关频繁动作,影响磁控管的工作稳定和使用寿命。通常机械式功率调节器的T都取30s左右,实践证明比较理想。当T=30s时,若设磁控管工作时间t1分别为6、12、15、24、30s,那么对应6s的微波输出功率为保温功率,这是炉子额定微波输出功率Po的20%的功率,又称温火挡。对应12s的为解冻功率(40%Po,又称低功率或低火)、对应15s的为中功率(50%Po,又称中火)、对应24s的为中高功率(80%Po,又称中高火)、对应30s的为高功率(100%Po,又称高火或全功率)。普通微波炉大多设有这样的5挡功率(火力)调节挡,当然各挡的功率设定值可能有所不同。少数微波炉有更多功率挡,可达8~12挡之多,以求更适应烹饪和解冻不同食品之需。3.5.1微波炉火力输出方案根据设计要求,只需设计高、中、低三档功能,无需多档位控制。只需输出大火、中火、小火三档火力。因此,我们只需模拟出三档火力即可。我们通过三种不同颜色的发光二极管即可达到设计要求。3.5响铃提示方案我们可以使用单片机的一个I/O端口,然后接上扬声器,通过软件方式,修改延时、周期,来达到响铃提示的效果。3.6本章小结经过比较和分析,得出了较理想的方案:66 南京工程学院自动化学院本科毕业设计(论文)(1)计时单元由软件编程来实现。定时采用单片机内部定时器来实现,即通过单片机内部定时器产生中断,再通过软件编程实现进行计数,从而实现时、分、秒的倒计时。(2)时间显示采用8位LED数码管显示时、分和秒。档位显示采用3个不同颜色的发光二极管显示,分别表示大火、中火、小火三档火力。(3)键盘采用单片机4×4矩阵式键盘,端口输入电平,通过单片机扫描相应端口电平来判断按键的抬起与按下。(4)响铃提示直接由单片机控制输出,连接在扬声器在电阻上叠加推动扬声器发声。通过各种方案的比较和论证之后,明确了各个模块的实现方案。然后,对整个系统总体进行设计,形成一个清晰的设计方向,并构思出系统总体设计的工作原理和系统的框图,使整个设计方案具有总体性。66 南京工程学院自动化学院本科毕业设计(论文)第一章硬件设计4.1系统核心AT89C51介绍4.1.1AT89C51主要性能·4KB可改编程序Flash存储器(可经受1000次的写入/擦除周期)·全静态工作:0Hz~24MHz·三级程序存储器保密·128×8字节内部RAM·32条可编程I/O线·2个16位定时器/计数器·5个中断源·可编程串行通道·片内时钟振荡器4.1.2AT89C51的引脚及功能AT89C51单片机的管脚说明如图4.1.2所示。图4.1.2AT89C51的管脚(1)电源引脚VCC电源端GND接地端66 南京工程学院自动化学院本科毕业设计(论文)(2)外接晶体引脚XTAL1、XTAL2XTAL1接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。XTAL2接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。(3)控制或与其它电源复用引脚RST、ALE//PROG、/PSEN和/EA/VPPRST复位输入端。当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。ALE//PROG当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE脉冲。在对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。/PSEN程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。当AT89C51/LV52由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP外部访问允许端。要使CPU只访问外部程序存储器(地址为0000H~FFFFH),则/EA端必须保持低电平(接到GND端)。当/EA端保持高电平(接VSS端)时,CPU则执行内部程序存储器中的程序。(4)输入/输出引脚P0.0~P0.7、P1.0~P1.7、P2.0~P2.7和P3.0~P3.7P0端口(P0.0~P0.7)P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。P1端口(P1.0~P1.7)P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P2端口(P2.0~P2.7)P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。66 南京工程学院自动化学院本科毕业设计(论文)P3端口(P3.0~P3.7)P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能,这些特殊功能见表4.1.3。表4.1.3P3端口的特殊功能端口引脚兼用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)4.1.3AT89C51单片机的内置功能AT89C51单片机与MCS-51完全兼容。定时/计数器:AT89C51单片机内含有2个16位的定时器/计数器。当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器的技术频率为晶振频率的1/12,而计数频率最高为晶振频率的1/24。为了实现定时和计数功能,定时器中含有3种基本的寄存器:控制寄存器、方式寄存器和定时器/计数器。控制寄存器是一个8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数器是16位的计数器,分为高字节和低字节两部分。RAM:高于7FH内部数据存储器的地址是8位的,也就是说其地址空间只有256字节,但内部RAM的寻址方式实际上可提供384字节。的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。这样,虽然高128字节区分与专用寄器,即特殊功能寄存器区的地址是重合的,但实际上它们是分开的。究竟访问哪一区,存是通过不同的寻址方式加以区分的。SFR:SFR是具有特殊功能的所有寄存器的集合,共含有22个不同寄存器,它们的地址分配在80H~FFH66 南京工程学院自动化学院本科毕业设计(论文)中。虽然如此,不是所有的单元都被特殊功能寄存器占用,未被占用的单元,其内容是不确定的。如对这些单元进行读操作,得到的是一些随机数,而写入则无效,所以在编程时不应该将数据写入这些未确定的地址单元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序状态字寄存器PSW、堆栈指针SP、数据指针DPTR、I/O端口、串行口数据缓冲器SBUF、定时器寄存器、捕捉寄存器、控制寄存器。中断系统:AT89C51单片机有5个中断源,中断系统主要由中断允许寄存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成。IE寄存器用于允许或禁止中断;IP寄存器用于确定中断源的优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。在整个中断响应过程中CPU所执行的操作步骤如下(1)完成当前指令的操作(2)将PC内容压入堆栈(3)保存当前的中断状态(4)阻止同级的中断请求(5)将中断程序入口地址送PC寄存器(6)执行中断服务程序(7)返回接单片机时钟电路:AT89C51系列单片机的内部振荡器,由一个单极反相器组成。XTAL1反相器的输入,XTAL2为反相器的输出。可以利用它内部的振荡器产生时钟,只要XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,此方式称为内部方式。另一种方式由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高。C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f期微调作用。(C1,C2变大,f变小),其典型值为30pF。振荡器在加电后10ms开始起振,XTAL2输出3V左右的正弦波。振荡器产生的时钟脉冲送至单片机内部的各个部件。NMOS型单片机也可以不适用内部时钟电路,直接总外部输入时钟脉冲。我们一般采用12M的晶振,因为一个机器周期为1/12时钟周期,所以这样用12M的话,一个时钟周期为12us那么定时器计一次数就是1us了,时钟电路电路图如图4.1.4。66 南京工程学院自动化学院本科毕业设计(论文)图4.1.4时钟电路内部结构图复位电路:复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。如图4.1.5所示的RC复位电路可以实现上述基本功能。左边的电路为高电平复位有效。(右边为低电平,RESET为手动复位开关,C可避免高频谐波对电路的干扰)图4.1.5RC复位电路4.2时钟电路设计计时控制模块是微波炉控制系统设计的核心,用来完成基本功能中的加热倒计时,以及时间显示和定时两项扩展功能。时间显示功能被用来在待机状态显示当前的时间和用户预先设定的时间。允许手动调时,并且会自动与计算机进行时间同步。定时启动则会根据用户设定的火力属性,在预定的时间内启动任务。为了实现上述功能,在设计中,我们采用AT89C51的内部定时器与软件计数器相结合的方式获得1Hz的时钟。定时器0自动装入模式以保证精度。这时定时器周期T可由下式表示:T=(28−K)×12/CLK…………………………………………………………(1)其中K为定时器初值、CLK为系统晶振。考虑到串口通信,我们选定CLK为11.0592MHz,K为27。从式(1)中不难看出,这时要获取1Hz的时钟,计数器的预置数N应对T/1取整,即:N=[22118400/12×(256-27)]=8049…………………………………………(2)则系统获取的时钟频率即为:f=12/22118400×(28-27)×8049≈1.000011Hz完全可以满足系统的计时要求。4.3键盘电路设计在按键设计中,为了满足设计的要求,需要使用的按键较多所以我们采用4×66 南京工程学院自动化学院本科毕业设计(论文)4矩阵式键盘,矩阵式键盘比较节省单片机的I/O的资源。键盘的接口分别连入单片机I/O接口的P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7。通过单片机内部判断这些I/O接口来确定按键是否被按下。Key05、Key06、Key07、Key08通过一个与门接到P3.2接口,这样可以通过P3.2口来判断有没有按键被按下。通过特定的扫描程序对键盘进行扫描。P3.2接口为中断0接口,也可用此端口进行中断操作。为了防止电路出现异常而无法控制特设计了一个复位按键。键盘设计电路如图4.3.1(复位电路中的独立式按键)和图4.3.2所示。图4.3.1复位电路图4.3.2矩阵式键盘电路4.4档位显示电路设计66 南京工程学院自动化学院本科毕业设计(论文)档位显示模块是由三个发光二极管显示,分别代表“大火”、“中火”、“小火”三个火力档位,直接将发光二极管通过三极管接至单片机I/O接口通过单片机发送低电平使发光二极管发光,用来模拟三个档位输出。具体电路设计如图4.4.1。图4.4.1档位显示电路设计注:以上火力输出电路LED1、LED2、LED3分别代表大火、中火、小火,在研究中我们将采用不同颜色的发光二极管分别代表大火、中火、小火进行模拟仿真。4.5显示电路设计根据前面章节的分析与方案选择,我们只需实现定时显示,只要能显示时间即可,信息量少,只需显示时、分、秒。所以我们采用8位数码管进行显示,完全能够达到设计要求,我们选择MAX7221作为8位LED驱动芯片。4.5.1驱动数码管芯片(1)芯片简介MAX7221是Maxim(美信)公司专为LED显示驱动而设计生产的串行接口八位LED显示驱动芯片.该芯片包含有七段译码器、位和段驱动器、多路扫描器、段驱动电流调节器、亮度、脉宽调节器及多个特殊功能寄存器。该芯片采用串行接口方式,可以很方便地和单片机相连,未经扩展最多可用于8位数码显示或64段码显示。经实际使用发现,该芯片具有占用单片机I/O口少(仅三线)、显示多样、可靠性高、简单实用、编程灵活方便的特点。66 南京工程学院自动化学院本科毕业设计(论文)(2)芯片引脚介绍Din脚,串行数据输入端,数据存入内部16位移位寄存器。DIG0~DIG7脚,8位共阴极数码管的控制输入端,显示关闭时输出高电平。GND脚,接地端,4和9脚都要接地。CS脚,片选输入端,当CS=0时,串行数据存入移位寄存器,当CS为上升沿时锁存最后16位数据。CLK脚,串行时钟输入端,最高频率10MHz,在时钟上升沿数据移位存入内部移位寄存器,当时钟下降沿时,数据由Dout输出,CLK输入仅当CS=0时有效。SEGA~SEGG,SEGDP脚,数码管七段驱动和小数点驱动端,关闭显示时各段驱动输出为高电平。Iset脚,连接到Vdd的电阻连接端,用来模拟设定各段驱动电流。Vdd脚,5V正电压输入端。Dout脚,串行数据输出端,数据由Din输入,经16.5个时钟延迟后由Dout引脚输出,此引脚用来扩展MAX7221。MAX7221如图4.5.1。图4.5.1MAX7221芯片(3)MAX7221功能1.串行数据输入和控制寄存器串行数据输入输出时CS必须为低电平,串行数据由Din送入一个16位的数据包,并在每个时钟上升沿时存入内部16位移位寄存器。数据经16.5个周期后,在时钟的下降沿由Dout引脚输出。16位数据D0~D15的排列见表1.D0~D7包含数据,D8~D11包含寄存器地址,D12~D15为未定义位,芯片最先接收D15位。2.省电模式66 南京工程学院自动化学院本科毕业设计(论文)MAX7221允许工作在省电模式,在该模式下,供电电流可降低到150uA。器件在这种模式下上电时,250us内即可进入正常工作模式.在测试状态下,省电模式被屏蔽。3.译码/非译码模式译码模式寄存器可以设置对每一位数字的BCD译码模式或非译码模式,寄存器的每一位对应一个数字,高电平代表译码,低电平代表旁路译码器。当芯片处于译码模式时,数据位只有D0~D3有效,D4~D6位为无效位,D7为小数点位。当芯片处于非译码模式时,数据D0~D7位对应8个笔划段。4.亮度控制寄存器本芯片允许由外加在Vdd和Iset之间的电阻Rset调节LED亮度,Rset阻值至少为9.53K,它也允许由亮度控制寄存器进行设置,通过设置每一笔划的扫描脉冲占空比达到调整亮度的目的。5.扫描位数控制寄存器扫描位数控制寄存器可以设置显示1~8位,多路扫描器在显示8位时典型的扫描频率为800Hz.显示位数减少时,扫描频率上升为8f/N(f为扫描频率,N为显示位数)。当显示位数为3位、2位、1位时,Rset应至少增大为15K、20K、40K。6.显示测试模式和空操作模式示测试寄存器操作有两种模式:正常模式和显示测试模式。显示测试时屏蔽所有功能设置,全部8位的每一笔划的扫描脉冲占空比均为15/16。空操作模式用于芯片扩展,后面的芯片要显示的数据经过前面的芯片时,前面的芯片应处于空操作模式。4.5.2数码管我们采用数码管动态驱动。动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能节省大量的I/O66 南京工程学院自动化学院本科毕业设计(论文)端口,而且功耗更低。AT89C51单片机的P2.0、P2.1、P2.2分别接MAX7221的DIN、CS、CLK引脚。显示电路如图4.5.2。图4.5.2显示电路4.6响铃、提示电路设计在微处理器的发声装置成为蜂鸣器(buzzer)。一般来说,蜂鸣器就是小型喇叭(speaker),也是一种电感性负载。单片机驱动蜂鸣器的信号为各频率的脉冲。4.6.1蜂鸣器发声原理蜂鸣器的声音是由蜂鸣器的振动产生的。蜂鸣器就像一个电磁铁,电流经过它即可产生磁性,这样蜂鸣器里发生的膜片将被吸住;电流消失时,膜片将被放开。若要产生频率为f的脉冲,则需要在T时间内进行吸放各一次,换言之,产生磁性、消除此磁性的时间各位T/2,称为半周期。蜂鸣器电路如图4.6.1所示。66 南京工程学院自动化学院本科毕业设计(论文)图4.6.1响铃、提示电路4.7火力大小输出设计前面章节我们已经叙述过,微波炉的火力大小是由内部功率调节器设定的。功率调节器也由定时器所用的同一电机驱动。实际工作时,当设定好功率值后,功率调节器便控制磁控管工作一段时间再休止一段时间,并按一定周期不断循环这个过程,直至微波炉工作结束。这里假设磁控管在—个循环周期内的工作时间为t1,休止时间为t2,则一个循环周期T=t1+t2,可清楚地看出功率调节器控制微波输出功率的方式。循环周期T取值很有讲究,从加热角度考虑取短些好,但太短将使功率调节开关频繁动作,影响磁控管的工作稳定和使用寿命。正如前文所提到的,在本文的研究中我们只显示档位输出,对微波炉火力的大小比例不作设计模拟。4.8电源电路设计单片机系统电源设计是单片机应用系统设计中的一项重要工作,电源的精度和1可靠性等各项指标,直接影响系统的整体性能。本设计采用7805集成稳压器构成输出为+5V的电源电路。使用7805稳压器的优点就是使用方便,不需作任何调整,外围电路简单,工作可靠简单、安全,适合作通用型、标称输出的稳压电源,所以本文研究设计采用7805稳压器来设计单片机系统的电源,提供+5V电源。电源电路如图4.8.1。66 南京工程学院自动化学院本科毕业设计(论文)图4.8.1电源电路注:上图是一个输出正5V直流电压的稳压电源电路。IC采用集成稳压器7805,C15、C17分别为输入端和输出端滤波电容,RL为负载电阻。当输出电流较大时,7805应配上散热板。稳压二极管VD1串接在7805稳压器2脚与地之间,可使输出电压得到一定的提高,输出电压为7805稳压器输出电压与稳压二极管VD1稳压值之和。VD2是输出保护二极管,一旦输出电压低于VD1稳压值时,VD2导通,将输出电流旁路,保护7805稳压器输出级不被损坏。4.9电路板设计4.9.1电路原理图绘制根据设计要求我们采用ProtelDXP2004绘制原理图和PCB图。软件系统主界面如图4.8.1所示。在ProtelDXP中,虽然提供了大量的元件库,但在实际应用中,还需要制作需要的元件。ProtelDXP支持多种格式的元件库文件,如*.SchLib(原理图元件库),*.PcbLib(封装库),*.IntLib(集成元件库)。建立元件库与制作元件,我们可使用元件库编辑器来完成,建立好元件库后,我们进行原理图的绘制,必须满足适当的布线规则。绘制原理图结束之后,要进行编译,修改出错,然后进行PCB图的绘制。具体步骤模块主要分为以下模块:(1)新建工程项目。新建一个PCB工程项目,PCB设计中的文件都包含在该项目下。(2)新建原理图文件。在进人SCH设计系统之前,首先要构思好原理图,即必须知道所设计的项目需要哪些电路来完成,然后用ProtelDXP来画出电路原理图。66 南京工程学院自动化学院本科毕业设计(论文)(3)设置工作环境。根据实际电路的复杂程度来设置图纸的大小。在电路设计的整个过程中,图纸的大小都可以不断地调整,设置合适的图纸大小是完成原理图设计的第一步。(4)放置元件。从组件库中选取组件,布置到图纸的合适位置,并对元件的名称、封装进行定义和设定,根据组件之间的走线等联系对元件在工作平面上的位置进行调整和修改使得原理图美观而且易懂。(5)原理图布线。根据实际电路的需要,利用SCH提供的各种工具、指令进行布线,将工作平面上的器件用具有电气意义的导线、符号连接起来,构成一幅完整的电路原理图。(6)原理图电气检查。当完成原理图布线后,需要设置项目选项来编译当前项目,利用ProtelDXP提供的错误检查报告修改原理图。(7)编译和调整。如果原理图已通过电气检查,可以生成网表,完成原理图的设计了。对于一般电路设计而言,尤其是较大的项目,通常需要对电路的多次修改才能够通过电气检查。(8)生成网络表及文件。完成上面的步骤以后,可以看到一张完整的电路原理图了,但是要完成电路板的设计,就需要生成一个网络表文件。网络表是电路板和电路原理图之间的重要纽带。ProtelDXP提供了利用各种报表工具生成的报表(如网络表、组件清单等),同时可以对设计好的原理图和各种报表进行存盘和输出打印,为印刷板电路的设计做好准备。原理图见附录A。66 南京工程学院自动化学院本科毕业设计(论文)图4.9.1ProtelDXP2004系统界面4.9.2PCB图绘制绘制PCB图,首先要进行PCB文件的创建,PCB文件可以通过向导创建,也可以直接新建。对相关参数进行设置和调整后,便可调入相应的原理图。完成相应原理图导入之后,可以进行自动布线,也可进行手动布线,由于本设计的布线较为简单可以自动布线,在自动布线的基础上再修改。具体流程如下:(1)创建PCB文件在正式绘制之前,要规划好PCB板的尺寸。这包括PCB板的边沿尺寸和内部预留的用于固定的螺丝孔,也包括其他一些需要挖掉的空间和预留的空间。(2)设置PCB的设计环境(3)将原理图信息传输到PCB中规划好PCB66 南京工程学院自动化学院本科毕业设计(论文)板之后,就可以将原理图信息传输到PCB中了。(4)元件布局元件布局要完成的工作是把元件在PCB板上摆放好。布局可以是自动布局,也可以是手动布局。(5)布线根据网络表,在ProtelDXP提示下完成布线工作,这是最需要技巧的工作部分,也是最复杂的一部分工作。(6)检查错误布线完成后,最终检查PCB板有没有错误,并为这块PCB板撰写相应的文档。(7)打印PCB图纸。PCB图见附录A。4.10本章小结本章主要对电路的各个模块进行进一步分析研究,根据设计要求进行各个模块的硬件电路设计,对各个模块使用何种芯片,如何接都作了详细的阐述,为接下来的软件设计奠定了基础。我们将各个模块整合成完整的硬件电路图,并进行了编译修改,生成了PCB原理图,完成了硬件电路板的设计。66 南京工程学院自动化学院本科毕业设计(论文)第一章软件设计系统软件设计主要是对微波炉系统程序进行设计。系统程序总体可以分成主程序、键盘显示模块程序、计时模块程序等。主程序跟据系统的工作流程,系统可分为四个状态,分别是:系统待机状态,用户设置状态,微波炉加热状态和响铃、提示状态。我们将使用C语言对系统程序进行编写,下面我们分别对这这些程序进行详细设计和研究。5.1显示程序设计我们主要是使用数码管驱动芯片MAX7221,实现8位数码管显示的。流程图如图5.1.1(MAX7221流程图)和图5.1.2(显示子程序流程图)。开始声明变量延时程序CS=0写地址,片选置低YNaddr<<=1有进位DIN=CYYCLK=1;_nop_();CLK=0发送数据、锁存数据循环8次YN返回图5.1.1MAX7221流程图66 南京工程学院自动化学院本科毕业设计(论文)开始声明驱动信号数组声明延迟函数初始化MAX7221返回显示8位图5.1.2显示程序流图5.2键盘模块程序设计本次设计主要采用的是4×4矩阵式键盘,其中包含4行、4列,构成一个4×4的数组。键盘的扫描方式有低电平扫描、高电平扫描两种方式。当我们进行扫描时,将扫描信号送入行,再由列信号读取键盘状态。流程图如图5.2.1。开始声明变量扫描初始值读取数组数据输出延时下一个扫描码4次扫描返回YN图5.2.1键盘模块程序流程图5.3计时模块程序设计66 南京工程学院自动化学院本科毕业设计(论文)通过单片机内部定时器0进行时间控制,单片机外接11.0592M晶振,在主程序中设置定时器初值来获得1Hz的中断。流程图如图5.3.1。声明变量开始设定定时器中断设置定时量(TH0,TL0),启动定时停滞开始重新设定定时量50次Y重新计数秒加160s?秒归0,分加1Y60minY分归0,时加124hY时归0填入显示区返回NNNN主程序图5.3.1计时程序流程图5.4系统待机程序设计66 南京工程学院自动化学院本科毕业设计(论文)我们接通电源后系统进入待机状态,此时LED亮,当打开系统后将进入用户设置状态,如图5.4.1所示。系统待机状态调用显示程序用户状态设置按键图5.4.1系统待机框图系统通过判断单片机P3.2接口的输入电压来判断按键是否按下,具体流程图如下5.4.2。显示程序P3.2=1?键盘扫描程序YN开始返回图5.4.2系统待机流程图66 南京工程学院自动化学院本科毕业设计(论文)5.5用户设定程序设计系统启动时,8位数码管显示零时、零分、零秒,即00-00-00。火力输出档位通过三个不同颜色的发光二极管显示(分别表示大火、小火、中火)。键盘分按键K0,K1,K2,K3,K4,K5,K6,REST八个按键。用户可以通过按键进行档位和时间的设定,首先按下K0键启动微波炉,K1、K2、K3键为档位选择键,选择后相应的发光二极管会发亮。K4键为时、分、秒设定选择键。K5、K6键分别为时间的加减设定。REST为复位键。。如图5.5.1。工作状态档位设置用户设置系统待机系统上电时间设定系统复位按K0启动初始时间为00-00-00K1、K2、K3分别代表大、中、小Reset复位K4、K5(+)、K6(-)图5.5.1用户设定框图系统根据按键对应的单片机I/O接口的电平变化判断用户所进行的设置。根据上述用户设定框图我们可以清楚地知道用户设定的各个流程。具体流程图如图5.5.2所示。66 南京工程学院自动化学院本科毕业设计(论文)初始显示时间为00-00-00K0按下K1、K2、K3按下K6按下K4按下K5按下微波炉启动加热时、分、秒切换火力档位切换时间加时间减NNNNNYYYYY开始返回图5.5.2用户设定程序流程图66 南京工程学院自动化学院本科毕业设计(论文)5.6响铃、提示程序设计5.6.1按键发音程序设计根据设计要求,每按一下按键需要发声。程序流程图如图5.6.1。开始初始化扫描按键确有键按下调用按键发音程序YN返回图5.6.1按键发音流程图5.6.2提示程序设计我们通过软件设计,在微波炉加热到一定时间,进行响铃提示。本次设计将提示时间设定为20秒钟,当微波炉在某一档位加热到一定时间,当倒计时时间小于20秒钟的时候,进行响铃提示。具体流程图如图5.6.2所示。66 南京工程学院自动化学院本科毕业设计(论文)按K0启动微波炉切换时、分、秒时间设定档位选择倒计时<20s倒计时响铃YN开始返回图5.6.2提示程序设计5.7本章小结对各模块和各状态的软件分析之后,我们可以利用Keil4进行各模块和各状态的软件编程并整合成整体系统,并进行软件仿真对编程过程中产生的错误进行修改,仿真测试无误之后讲源程序进行编译并通过生成的HEX文件,将编译好的程序写入单片机中,进行整体调试。具体程序见附录B。第一章仿真验证66 南京工程学院自动化学院本科毕业设计(论文)微波炉软件系统在本设计中尤其重要,基本功能大部分是由软件完成的,系统功能的关键控制部分同样需要软件的密切配合才能顺利实现。鉴于软件设计的精确性和高效性、灵活性,我们采用C语言编写程序。整个软件系统采用模块化的程序设计方法,共分为初始化,显示程序,准备程序,运行程序,定时器程序,声音发声程序等。软件系统的主要特点是整个过程完全在键盘的控制之下,实现了完全的友好的人机交互功能。主程序通过判断键盘的输入情况调用不同的子程序。子程序的功能实现也是在键盘的配合之下完成的。6.1仿真软件本次设计我们将使用Proteus对设计进行仿真。 Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。软件界面如图6.1:Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。  课程设计、毕业设计是学生走向就业的重要实践环节。由于Proteus提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台.66 南京工程学院自动化学院本科毕业设计(论文)图6.1Proteus软件界面6.2仿真过程首先我们要用Proteus进行硬件电路图的设计。ProteusISIS软件的VSM(虚拟仿真技术),用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。用ProteusISIS设计硬件电路的过程(1)选择设计图纸的大小根据设计所使用到元器件的多少,选择合适大小的设计图纸,操作是单击菜单栏上的System→SetSheetSize,然后弹出如图6.2.1所示的对话框,从中选择合适大小的图纸,也可以选择User进行图纸的自定义设置。在设计过程中也可以通过此方法调整图纸的大小。66 南京工程学院自动化学院本科毕业设计(论文)图6.2.1图纸设计(2)选取仿真所需的元器件选取元器件的方式是,单击如图6.2.2所示的按钮“P”。会弹出如图6.2.3所示的窗口。图6.2.2选取元器件66 南京工程学院自动化学院本科毕业设计(论文)图6.2.3选取单片机从此窗口的左上角的“Keywords”中输入电子万年历设计用到的器件,如输入“AT89C51”,在中间会列出带有输入关键字的元器件,选择合适的元器件并双击它,则已经选择好了该元器件。然后再在“Keywords”中输入其他所需的元器件,用同样的方法进行操作。最后选择好所有的元器件如图6.2.4所示。66 南京工程学院自动化学院本科毕业设计(论文)图6.2.4所用器件(3)把元器件放到图纸的合适位置,进行布线单击如图5-4所示的元器件AT89C51,再在右边图纸上单击,就把元器件放入到了图纸上。再用同样的方法把MAX7221放入到图纸的合适位置。如果元器件放置错误,这可通过两次右击删除所放置的元器件,如果位置放得不理想,可以先右击该器件,然后按住左键进行移动。在布线之前,如果觉得元器件的引脚的方向不好布线,则可以通过单击这四个按钮进行调整,这四按钮的意思分别是:顺时针旋转90°,逆时针旋转90°,沿Y轴对称,沿X轴对称。通过这样的调整,可以使整个布局合理一些。接着进行布线,由于ProteusISIS有自动布线的功能,比如要把AT89C51的P2口连到MAX7221的DIN、CS、CLK口,只要先在P2引脚上单击一下,再在MAX7221引脚上单击,则ISIS自动将两个引脚连上线。66 南京工程学院自动化学院本科毕业设计(论文)ISIS还提供了网络布线,即不使用线连接也可以把两个引脚虚拟的连接了起来。虚拟连接的好处,就是避免两个距离比较远的器件进行真实线的连接,使布线美观。(4)编辑窗口连接端子要让最后的设计成功仿真时,必须放置并连接端子。选择,从中可以选择电路原理中的两个通用的端子,一个是接地,一个是电源。如图6.2.5所示。图6.2.5连接端子最后分别对各元器件的属性值进行设置,单击按钮,进行电气检测,查看接线是否合理,说明硬件电路已经顺利的完成。(5)仿真测试①添加Keil中编写的代码文件单击工具栏中的Source→Add/RemoveSourcefiles...,弹出一个对话框,分别单击“New”,然后选择在Keil中编写的数字电压表.ASM汇编语言程序,单击“OK”,完成添加代码文件。②编译源程序,生成.HEX目标代码文件单击Source→BuildAll。如果编译结果没有错误,会出现如图6.2.6所示的结果。66 南京工程学院自动化学院本科毕业设计(论文)图6.2.6全部编译③加载.HEX目标代码文件通过如图6.2.7所示的对话框,选择刚才编译生成的.HEX文件。图6.2.7添加仿真文件66 南京工程学院自动化学院本科毕业设计(论文)④单击按钮,进行对微波炉控制系统的的仿真测试⑤Proteus的调试功能由于使用的是汇编语言编写的程序,如果在测量的时候测量值显示错误,说明程序中存在问题,这个问题只用在仿真测量的时候才能被发现,这时可以使用Proteus对程序进行调试。单击按钮,再单击菜单栏中的Debug,可以在最下面选择打开内存观察窗口,寄存器值观察窗口,汇编语言源代码窗口等等。在汇编语言源代码窗口中,也可以在所需要设置断点的语句前双击设置断点,当设置断点的时候,程序运行到所设断点处停止,从而可以在内存、寄存器等的值的变化,从而找出程序出错的地方。并进行修改。图6.2.8调试按钮6.3仿真结果(1)按K0系统上电复位后,8位数码管显示为“00-00-00”,档位显示为“大火”、“中火”、“小火”;(2)按K1、K2、K3键,可进行档位的切换,用户可以在“大火”、“中火”,“小火”这三个档位之间任意切换;(3)按下K4键,显示时、分、秒选择,按一下现实选择秒,再按一下选择分、再按一下选择时、再按一下等待倒计时;(4)按K5、K6键,微波炉设定时间“+”、时间“-”。先由K4键选择时、分、秒,然后再按K5键,时间加1;按K6键,时间减1;(5)时间设定好后,选择档位开始倒计时,当时间小于20s66 南京工程学院自动化学院本科毕业设计(论文)的时候开始响铃。提示。具体仿真见附录C。6.5仿真中出现的问题仿真中主要出现的问题是按键发音的音调与当初设计的要求有点差别,通过软件程序的修改可以减小此种误差。此外,由于系统误差,数码管倒计时与理论上的时钟倒计时有点偏差,也可以通过软件进行修正。6.6本章小结通过本章对系统的调试与仿真,查出错误并进行了修改,简化了相关的硬件电路和软件程序,得到了仿真结果,达到了基本的设计要求,本章主要是介绍了Proteus软件的参数设置、硬件原理图的设计、编译、软件仿真调试,通过本设计的仿真调试让我们对仿真软件Proteus有了进一步的了解,并且达到了设计的预期结果。66 南京工程学院自动化学院本科毕业设计(论文)第一章结论7.1论文总结微波炉控制系统设计以单片机为核心。目前,很多学校有单片机开发的课程,很多企业都致力于高性能单片机的开发,提高单片机的性能和利用,单片机正向智能化、低功耗、高精度方向发展。小到家用电器,大到工业控制系统如自动化生产线,单片机在这些领域都有所建树。本论文以微波炉控制系统为研究对象,旨在阐述并实现单片机的基本功能,为后来研究者提供一个研究方向。相关工作总结如下。7.1.1主要工作及结论1.熟悉AT89C51芯片的引脚与功能,理解单片机的内部模块结构、特点及功能。了解单片机外围硬件电路的设计方法。2.通过ProtelDxp2004进行原理图的设计,熟悉软件的使用方法,掌握基本的布线规则和PCB版的绘制流程。3.采用模块化进行系统软件设计,掌握单片机的工作方式、C程序的编写、及C代码的相关特点,各个变量和函数的功能。4.对设计的硬件系统和软件,进行模块化设计、调试,然后再整体调试仿真。7.1.2存在的问题1.目前,从功能上分析,系统存在误差,主要是系统倒计时的计时误差和时钟的走时误差,我们可以选择适当的参数,完全能够满足设计要求。2.本文研究的微波炉控制系统只是实现了微波炉的基本功能,与市面上的微波炉相比,功能较少,但可以进一步开发这方面的功能。7.2感想或者收获本次毕业设计是基于单片机的微波炉控制系统设计,因此我们需要从多个方面去对熟悉理解单片机。单片机作为大学的一门课程,我们一直是基于实验箱做实验的。本次设计完全由个人去完成,这样我们不仅可以灵活运用单片机的理论知识,而且还可以锻炼自己的动手能力,思考能力以及解决问题的能力,以前的实验是基于某一个模块的实验论证,而毕业设计是综合多个模块来实现系统的多功能控制。这样为我们实践能力,综合运用能力的提高奠定了坚实的基础。66 南京工程学院自动化学院本科毕业设计(论文)在本次设计中,我经历从草图到电路图设计,再到电路板设计、软件设计和软件仿真。不同的阶段,不同的收获,经历了无数次的苦思冥想,无数次的失败验证,更多的是成功后的那一份欣慰。能够真正体会到过程给我带来的喜悦,软件也好,硬件也好,归结到一点就是我们要有足够的耐心,足够的细心,足够的分析问题、解决问题的能力,才能不断地进取,不断地创新,不断地充实,这是我们以后行走工作岗位的时候所必备的。66 南京工程学院自动化学院本科毕业设计(论文)致谢本设计(论文)是在我的导师陆红伟老师的认真指导和悉心关怀下完成的,在论文完成之际,我特别感谢我的导师陆红伟老师,由于个人的理论知识水平不够全面,对硬件系统不够了解,对设计的把握难免有很多疏漏的地方。但是,因为有了陆红伟老师的指导和帮助,我的设计(论文)才得以接近尾声。老师对我要求严格,让我学会很多有关研究设计的新理念,教会了我如何发现问题、如何解决问题、如何多角度思考问题、如何选择最优方案等等。老师平易近人,她的人格魅力深深感染了我,这正是我以后学习和工作的时候需要学习的地方。临别之际,真诚地祝福陆红伟老师:身体健康,家庭幸福!此外,在我的设计(论文)研究过程中,孙来业、屈波老师提出了宝贵的建议和给了我莫大的帮助,在此,向他们表示深深的感谢。感谢所有帮助过、关心、支持我的老师和同学!最后,向在百忙之中抽出时间评阅本设计(论文)和参加答辩的各位老师表示衷心的感谢!吴永生二O一二年六月于南京66 南京工程学院自动化学院本科毕业设计(论文)参考文献[1]李广弟.单片机基础.北京航空航天大学出版社.2001110-156[2]万福君,潘松峰.单片机微机原理系统设计与应用.中国科技大学出版社.200110-31[3]高鹏,安涛,寇怀成.Protel99入门与提高.人民邮电出版社2002.0715-115[4]郭永贞.数字电子技术.东南大学出版社(第二版).2008.02215-225[5]邵群涛.电气制图与电子线路CAD.机械工业出版社.2010.0250-135[6]徐富军,沈建良.C51单片机高效入门.机械工业出版社.2006.1035-46[7]杨将新等.单片机程序设计及应用从基础到实践.电子工业出版社.2006.0335-67[8]KeilSoftwareCompany.Cx51CompilerUser’sGuide.2001[9]Intel.MCS-51FamilyofSingleChipMicrocomputersUser’sManual.1990[10]赵德安等.单片机原理与应用.机械工业出版社.2009.0410-113[11]AT89C51DATASHEEPPhilipsSemiconductors1999.dec66 南京工程学院自动化学院本科毕业设计(论文)附录A:硬件设计原理图与PCB图66 南京工程学院自动化学院本科毕业设计(论文)66 南京工程学院自动化学院本科毕业设计(论文)附录B:软件程序清单//头文件#ifndef_MAIN_H_#define_MAIN_H_#include#include#include#defineucharunsignedchar#defineuintunsignedintsbitDIN=P2^0;//数据串出引脚sbitCS=P2^1;//片选端sbitCLK=P2^2;//移位时钟端sbitLED=P2^4;//系统上电显示sbitLED1=P2^5;//大火显示sbitLED2=P2^6;//中火显示sbitLED3=P2^7;//小火显示sbitLED4=P3^5;//秒显示sbitLED5=P3^6;//分显示sbitLED6=P3^7;//时显示#endif#ifndef_DELAY_H_#define_DELAY_H_#include"main.h"voiddelay_ms(uintn);voiddelay_us(ucharn);#endif#ifndef_KEYPAD_H_#define_KEYPAD_H_#include"main.h"externucharkeypad;externucharkeypog;externucharkeyfog;externucharkeypress;externucharLedpog;ucharscan_key(void);ucharscan_kay(void);voidControl(ucharflag);66 南京工程学院自动化学院本科毕业设计(论文)voidINT0_Initial(void);#endif#ifndef_MAX7221_H_#define_MAX7221_H_#include"main.h"externucharsecs;externucharminutes;externucharhours;externuchardisbuf[];voidPort_Initial(uchartemp);voidWriteByte(uchardat);voidMAX7221_WRITE(ucharaddr,uchardat);voidMAX7221_Initial(void);voidDisplay(uchar*str);voidHEXTOBCD(void);ucharTime0_WatchDog(void);voidTime0_Initial(void);voidTime1_Initial(void);#endif/*键盘程序*/#include"max7221.h"voidpulse_bz(int,int);ucharkeypad=0xff;ucharkeypog=0;ucharkeyfog=0;ucharkeypress=0;//调整时间标志位ucharLedpog=0;//全局开启工作标志位sbitsound=P3^4;ucharscan_key(void){uchari,key_value;P0=0xFF;for(i=0;i<4;i++){P0=~(1<60){secs=59;}66 南京工程学院自动化学院本科毕业设计(论文)keypad=0xff;break;}default:break;}break;}case2:{TR1=1;switch(keypad){case14:{minutes++;if(minutes==60){minutes=0;}keypad=0xff;break;}case15:{minutes--;if(minutes>60){minutes=59;}keypad=0xff;break;}default:break;}break;}case3:{TR1=1;switch(keypad){case14:{hours++;if(hours==24){66 南京工程学院自动化学院本科毕业设计(论文)hours=0;}keypad=0xff;break;}case15:{hours--;if(hours>24){hours=23;}keypad=0xff;break;}default:break;}break;}default:{break;}}}/*MAX7221程序*/#include"keypad.h"ucharsecs=1;//初始显示为00时00分01秒ucharminutes=0;ucharhours=0;uchardisbuf[8]={1,2,3,4,5,6,7,8};//显示的数字ucharn;sbitsound=P3^4;voidPort_Initial(uchartemp){if(temp){LED=0;}LED1=0;LED2=0;LED3=0;LED4=0;LED5=0;66 南京工程学院自动化学院本科毕业设计(论文)LED6=0;}voidWriteByte(uchardat){uchari;for(i=0;i<8;i++){DIN=((dat<60){secs=59;minutes--;}if(minutes>60){minutes=59;hours--;66 南京工程学院自动化学院本科毕业设计(论文)}if(hours>24){hours=23;}if(!Time0_WatchDog()){TR0=0;Port_Initial(0);}//小于1分钟闹铃if(minutes<1){for(n=0;n<10;n++){sound=0;delay_ms(1);sound=1;delay_ms(1);}}}//转化为BCD码转换voidHEXTOBCD(void){disbuf[0]=hours/10;disbuf[1]=hours%10;disbuf[2]=10;//数值为10时显示“-"disbuf[3]=minutes/10;disbuf[4]=minutes%10;disbuf[5]=10;disbuf[6]=secs/10;disbuf[7]=secs%10;}//定时器1初始化voidTime1_Initial(void){//TMOD|=0x10;TH1=0x3c;TL1=0xe0;ET1=1;TR1=1;EA=1;}66 南京工程学院自动化学院本科毕业设计(论文)volatileunsignedcharnum=0;voidTime1_Interrupt(void)interrupt3{TH1=0x3c;TL1=0xe0;num++;if(num==20){num=0;P1=~P1;//时分秒选择显示switch(keypress){case1:{LED4=!LED4;LED5=0;LED6=0;break;}case2:{LED5=!LED5;LED4=0;LED6=0;break;}case3:{LED6=!LED6;LED4=0;LED5=0;break;}case4:{LED4=0;LED5=0;LED6=0;break;}default:{//LED4=0;LED5=0;LED6=0;break;}}}}/*延时程序*/66 南京工程学院自动化学院本科毕业设计(论文)#include"main.h"voiddelay_ms(uintn){uchari;while(n--){for(i=0;i<100;i++);}}voiddelay_us(ucharn){while(n--){_nop_();}}/*主程序*///keypress=1,调整秒//keypress=2,调整分//keypress=3,调整时//keypress=4,继续进入计时状态#include"main.h"#include"delay.h"#include"max7221.h"#include"keypad.h"voidmain(){uchari;Port_Initial(1);delay_us(10);MAX7221_Initial();delay_us(10);INT0_Initial();delay_us(10);Time0_Initial();delay_us(10);Time1_Initial();delay_us(10);while(1){while(Ledpog){switch(keypad){66 南京工程学院自动化学院本科毕业设计(论文)case0:{LED=1;keypog=!keypog;keyfog=!keyfog;keypad=0xff;break;}case1:{if(keypog){TR0=1;LED1=1;LED2=0;LED3=0;}keypad=0xff;break;}case2:{if(keypog){TR0=1;LED2=1;LED1=0;LED3=0;}keypad=0xff;break;}case3:{if(keypog){TR0=1;LED3=1;LED1=0;LED2=0;}keypad=0xff;break;}case12:{keypress++;switch(keypress){case1:case2:case3:TR1=1;TR0=0;;break;//case4:if(keyfog&&keypog||Time0_WatchDog())TR0=1;break;66 南京工程学院自动化学院本科毕业设计(论文)//case5:keypress=0;break;case4:{keypress=0;if((LED1==1)||(LED2==1)||(LED3==1)){TR0=1;}TR1=0;break;}default:break;}keypad=0xff;break;}case14:{Control(keypress);keypad=0xff;break;}case15:{Control(keypress);keypad=0xff;break;}default:{keypad=0xff;break;}}HEXTOBCD();Display(disbuf);}while(!Ledpog){LED=0;for(i=0;i<8;i++){MAX7221_WRITE(i+1,15);}}}}66 南京工程学院自动化学院本科毕业设计(论文)附录C:仿真验证结果66 南京工程学院自动化学院本科毕业设计(论文)附件:毕业论文光盘资料66'