版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)设计(论文)题目《基于单片机控制系统电磁炉的设计》
目录目录 1摘要 3前言 4第1章系统总体方案 51.1电磁炉整机零件一般包括如下 51.2方案设计 61.3方案论证 7第2章硬件设计 42.1芯片介绍 42.1.1AT89C51 42.1.2模数转换器ADC0809 62.1.3
LM339集成电路 82.2电磁炉无锅检测模块 92.3定时控制模块 102.4功率控制模块 112.5PWM脉宽调控电路 122.6振荡电路 122.7
IGBT激励电路 132.8主回路原理分析 132.
9同步电路 152.10
加热开关控制 162.11
散热系统 162.12温度自动控制模块 162.13显示模块 172.14保护电路 192.15按键模块 202.16报警模块 202.17电源电路 21第3章程序设计 193.1主程序流程 193.2无锅检测程序流程 203.3A/D转换程序流程 213.4外部中断 213.5定时模块流程 223.5.1内部定时中断 233.5.2定时功能的实现 243.6温度控制程序流程 263.7基本显示模块流程 263.7.1显示时间程序流程 263.7.2显示温度程序流程图 273.8报警模块流程 273.8.1定时报警程序流程图 273.8.2超温报警 28第4章系统仿真与调试 294.1系统仿真 294.1.1原理图绘制 294.1.2程序的设计与编译 294.2系统调试 304.2.1定时模块 314.2.2温度和功率控制模块 314.2.3无锅检测和保护模块 314.2.4报警模块调试 31结束语 49参考文献 50致谢 51附录 52附录Ⅰ程序清单 52附录Ⅱ元器件清单 61摘要本文介绍了电磁炉的功能控制系统,它利用单片机的多功能控制优势对电磁炉进行智能控制,使之具有高效节能、健康环保、安全可靠等一系列优点。本设计以AT89C51为核心,实现电磁炉的数码管显示控制、多种安全保护功能、功率自动控制、温度自动控制、定时控制以及各种自动检测报警功能的控制;对单片机AT89C51在系统控制上的应用,从软硬件两方面对控制系统的设计方案做了简单的介绍。在软件设计上,采用模块化程序设计的思想,对电磁炉控制系统的各个功能模块进行划分和设计。研究智能锅具检测技术,提高了锅具检测的快速性和准确性,减少电磁污染并节约了电能。最后,对整个系统进行仿真、调试和性能测试。测试结果表明,该控制系统设计合理,稳定,安全、可靠性高。关键词:电磁炉;单片机;多功能;控制前言当今,随着电子技术的高速发展,单片机的应用已经渗透到生产和生活中的各个方面,有力的推动了社会的发展。单片机以其体积小,集成度高,价格便宜,在数据处理、实时控制等方面无与伦比的强大功能而受到广大科研工作者及生产厂家的亲睐。目前,市场热销的电磁炉就是单片机控制系统的一个典型应用,其品牌繁多、功能强大且多样。作为一个毕业设计的课题,对单片机控制系统的应用做了一些初步的尝试和探讨。以往家用电器采用模拟电路和数字电路设计的整体电路的规模较大,用到的器件多,造成故障率高,难调试,而且电路复杂,维修和生产测试不太方便;而今,采用单片机系统完成设计使电路设计简单可靠,工作可靠性很好,功能强大,实现控制智能化。为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。针对各种功能的控制,通过软件编程就可以轻易而举的实现。本设计以AT89C51为核心,实现电磁炉的定时控制、温度自动控制、功率自动控制、保护功能、数码管显示控制以及无锅检测报警功能的控制;对单片机AT89C51在系统控制上的应用,从软硬件两方面阐述了控制系统的设计方案做了简单的介绍。在软件设计上,采用模块化程序设计的思想,对电磁炉控制系统的各个功能模块进行划分和设计,提高了控制系统的快速性和准确性。最后,对整个系统进行组装、调试和性能测试。实验结果表明,该控制系统设计合理,稳定,安全,可靠性高。第1章系统总体方案1.1电磁炉整机零件一般包括如下1、陶瓷板:又叫微晶玻璃板,位于电磁炉顶部,用于锅具的垫放,具有足够机械强度,耐酸碱腐蚀,耐高低温冲击。2、上盖:用耐温塑料制成,作为电器的外保护壳。3、面膜:用塑料薄膜制成,用于功能显示及按键操作指示。4、灯板:又叫显示控制板,位于壳内,进行功能显示及功能按键操作。5、炉面传感器组件:位于壳内,嵌在发热盘的中间,用橡胶头或其它方式顶住陶瓷板,用于控制炉面锅具的温度。6、加热线盘:位于壳内,主工作器件,发射磁力线,自身也会发热。7、主控板:又叫电源板、主板,位于壳内,作为电转换的控制的主工作部分。8、电源线及线卡:连接市电与电磁炉,提供电源通道。9、电风扇:位于壳内,通过吸风将炉内热量带出壳外,起降温作用。10、下盖:用耐温塑料制成,作为电器的下保护壳,及支撑内部器件及锅具作用。1.2方案设计方案一:控制部分的核心采用传统的数字逻辑芯片来实现。系统的逻辑状态以及相互转移更是复杂,用纯粹的数字电路或小规模的可编程逻辑电路来实现该系统有一定的困难,需要用中大规模的可编辑逻辑电路。这样,系统的成本就会急剧上升。方案结构图如图1.1:电源AC/DC电源AC/DC按键控制电磁炉控制板驱动电路主谐振电路锅具显示保护检测电路图1.1方案一结构图方案二:以AT89C51系统为核心,利用单片机丰富的I/O端口,及其控制的灵活性,使其实现电磁炉数码管显示控制、多种安全保护功能、功率自动控制、温度自动控制、定时控制以及各种自动检测报警功能的控制。此系统的硬件和软件都比较容易实现,且满足本题的精度要求,性价比较高的AT89C51具有以下特点:其8K的EPROM可在固化程序上是方便地多次擦写,独有的低功耗性能保证器件的长时间工作;采用最小应用系统设计,电路可靠、稳定。方案结构图如图1.2:单片机定时控制温度自动控制功率自动控制检测报警控制安全保护控制数码管显示控制电源电路图1.2方案二结构图1.3方案论证方案一采用模拟电路和数字电路设计的整体电路的规模较大,用独立振荡单元,多个功率管并联、驱动放大电路采用分立元件,如:定时采用555构成的单稳态触发器控制,但是该单稳态电路对输入的脉冲宽度有一定的要求,即触发脉冲宽度要小于暂稳时间,而实际应用中则大于暂稳时间,于是还要先经微分电路后再加到电路的低电平触发端。仅一个定时控制电路就已经如此复杂,若加上其它的温度、功率、显示等电路,系统电路更为繁杂,由此一来,用到的器件多,造成故障率高,难调试,而且电路复杂,维修和生产测试不太方便;虽然容易实现,但控制和性能方面都很差,硬件设计任务比较麻烦,而且设计的产品实际操作也不方便。方案二是采用以AT89C51为核心的单片机系统,可以实现数码显示、定时控制、温度功率自动控制等功能,大大提高了智能化自动控制的速度。显示采用8位一体数码管,既显示定时又显示温度,其中,数码管的前四位显示定时的时和分,后三位显示温度;定时采用单片机内部定时和外部中断结合控制实现;温度和功率控制选用ADC0809和电位器联合控制实现。由此一来,系统利用单片机强大功能对各个模块进行系统控制,减少分立元器件的使用,使其效率高、体积小、重量轻、噪音小、省电节能、并且系统所测结果的精度和性能都很高,该方案完全具有可行性,同时体现了技术的先进性,经济上也有很大的优势。综上所述,经比较,本设计采用方案二。第2章硬件设计2.1芯片介绍2.1.1AT89C51AT89C51[1]单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。AT89C51引脚如图2.1所示。图2.1主芯片AT89C51引脚图微处理器:该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。数据存储器:片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。程序存储器:由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。中断系统:具有5个中断源,2级中断优先权。定时器/计数器:片内有2个16位的定时器/计数器,具有四种工作方式。串行口:有1个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。并行I/O口:共有4个并行8位I/O口(P0、P1、P2、P3),每个口都有1个锁存器和1个驱动器组成。并行I/O口主要是用于实现与外部设备中数据的并行输入/输出,有些I/O口还具有其他功能。特殊功能寄存器:共有21个,用于对片内的各功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。复位电路的设计复位电路的实现通常有两种方式:RC复位电路和专用µP监控电路。前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。本次设计采用了上电按钮电平复位电路。电路图如图2.2所示。图2.2复位电路图由上可见,单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个1位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。2.1.2模数转换器ADC0809对系统精度至关重要的A/D转换换器,采用的是ADC0809[2]。(1)内部结构ADC0809片内带有锁存功能的8路模拟多路开关,可对8路0-5V的输入模拟电压信号分时进行转换,片内具有多路开关的地址译码和锁存电路、比较器、256R电阻T形网络、树状电子开关、逐次逼近寄存器SAR、控制与时序电路等。输出具有TTL三态锁存缓冲器,可直接连到单片机数据总线上。(2)引脚及功能ADC0809的芯片引脚如图2.3所示。图2.3ADC0809的芯片引脚图引脚功能介绍如下所述:IN0—IN7:8路模拟量输入通道的端口。输入信号为单极性,电压范围为0-5V。START,ALE:START为启动控制输入端口,START上跳沿时,所在内部寄存器清零;START下跳时,开始进行A/D转换;在A/D转换期间,START就保持低电平。ALE为地址锁存控制信号端口。这两个信号端可连接在一起,当通过软件输入一个正脉冲,便立即启动模/数转换。EOC,OE:EOC为转换结束信号脉冲输出端口,OE为输出允许控制端门。这两个信号亦可连接在一起表示模/数转换结束。OE端的电平由低变高,打开三态输出锁存器,将转换结果的数字量输出到数据总线上。REF(+)、REF(-)、Vcc\GND:REF(+)和REF(-)为参考电压输入端,Vcc为主电源输入端,GND为接地端。一般REF(+)与Vcc连接在一起,REF(-)与GND连接在一起。CLK:时钟输入端。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz以下时钟信号。ADDA、ADDB、ADDC:8路模拟开关的3位地址选通输入端,以选择对应的输入通道。ADC0809功能如下所述:分辨率为8位;②ADC0809最大不可调误差小于±1/2LSB,ADC0809小于±1LSB;③由单一的+5v电源供电,模拟输人范围为0~5V;④具有锁存控制的8路模拟开关;⑤可锁存三态输出,输出与TTL兼容;⑥功耗为15mW;⑦不必进行零点和满度调整;⑧转换速度取决于芯片的时钟频率,时钟频率范围:10-1280kHz,当CLK=500kHz时,转换速度为128us。ADC0809与单片机AT89C51接口连接如图2.4。图2.4ADC0809与单片机AT89C51接口连接图
2.1.3
LM339集成电路
LM339内置四个翻转电压为6mV的电压比较器,当电压比较器输入端电压正向时(+输入端电压高于-入输端电压),置于LM339内部控制输出端的三极管截止,此时输出端相当于开路;当电压比较器输入端电压反向时(-输入端电压高于+输入端电压),置于LM339内部控制输出端的三极管导通,将比较器外部接入输出端的电压拉低,此时输出端为0V。
2.1.4IGBT
绝缘栅双极晶体管(IusulatedGateBipolarTransistor)简称IGBT,是一种集BJT的大电流密度和MOSFET等电压激励场控型器件优点于一体的高压、高速大功率器件。
目前有用不同材料及工艺制作的IGBT,但它们均可被看作是一个MOSFET输入跟随一个双极型晶体管放大的复合结构。
IGBT有三个电极(见上图),分别称为栅极G(也叫控制极或门极)、集电极C(亦称漏极)及发射极E(也称源极)。
从IGBT的下述特点中可看出,它克服了功率MOSFET的一个致命缺陷,就是于高压大电流工作时,导通电阻大,器件发热严重,输出效率下降。
IGBT的特点:
1.电流密度大,是MOSFET的数十倍。
2.输入阻抗高,栅驱动功率极小,驱动电路简单。
3.低导通电阻。在给定芯片尺寸和BVceo下,其导通电阻Rce(on)不大于MOSFET的Rds(on)的10%。
4.击穿电压高,安全工作区大,在瞬态功率较高时不会受损坏。
5.开关速度快,关断时间短,耐压1kV~1.8kV的约1.2us、600V级的约0.2us,约为GTR的10%,接近于功率MOSFET,开关频率直达100KHz,开关损耗仅为GTR的30%。
IGBT将场控型器件的优点与GTR的大电流低导通电阻特性集于一体,是极佳的高速高压半导体功率器件。
2.2电磁炉无锅检测模块无锅检测电路的任务是检查电磁炉上是否有锅,若放有合适的锅,便进行连续加热工作或者保温工作;若没有锅,便停止加热并发出无锅报警,提示用户现在无锅,以便做相应处理;如果在无锅报警中途有锅放上去了,则继续加热工作。如图2.7所示,本系统检锅模块通过电流检测电路来实现,检测原理[3][8]:R17分压,D4、C10构成一个滤波电路,LM339作为电压比较器;当LM339的7脚电压高于6脚时,输出一个高电平,可通过测定一个无锅检测电压临界值(0.94V),若当系统启动50ms以上时,电压小于此临界值,则认为是无锅,若无锅,则从电磁炉工作原理上进行解释,即认为是内部加热线圈没有负载,也就没有功耗,所以主回路只有很小的输入电流,取样电压也很低,即单片机检测到的电压将很低。系统自动报警,关断控制线;若电压高于临界值,则认为有锅,恢复原来的工作状态;无锅检测时,按关机键,仍能关机。无锅检测电路设计如图2.7。图2.7无锅检测电路图2.3定时控制模块电路包括信号发生器、时间显示电路、按键电路以及指示电路等几部分。按键功能说明:K1:用来设置定时时间的小时,设置小时每按一下,时钟加一。K2:设置定时的分钟,每按一下,分钟加一。K3:定时设定确认键,设置完后按一下K3确认并退出。显示会自动从00:00开始计时。K4:定时设置,起始时间为00:00;设置首先按一下K4,然后按其他键设置定时时间。时钟电路设计,原理图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在本定时模块中C1、C2选择30pF,晶振频率为12MHz。其电路设计如图2.8。图2.8定时控制电路图定时指示可以有声或光两种形式,本系统采用声音指示。关键元件是扬声器,扬声器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得电状态下即起振发声。市场上的有源扬声器分为3V、5V、6V等系列,以适应不同的应用需要。定时电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时报警的功能。本次设计的定时时间可达到24小时,用户可根据自己的意愿任意设置定时的时间,当定时时间到时,系统会自动报警以提示用户进行相应的操作。若定时时间还没到,而用户又想要中止时,则可通过面板上的相应按键进行中断。2.4功率控制模块本设计的功率控制是基于控制PWM占空比来实现的,模块主要由单片机和ADC0809组成。根据电源电压(市电压)利用相关公式并通过调节RV1的大小来实现功率控制。结合实际,功率的测量用户设定的5档炒、炸、煮、煎、保温火力所对的功率分别为1600W、1400W、1200W、1100W、800W。设计预先实现以下几个步骤:(1)控制公式[4]要根据所设定的功率及当时所测市电电压,来确定要输出的占空比,将I=P/V代入上式,得:占空比=0.156×P/V-0.222(2.1)为了便于计算机处理,将占空比表示为PWM/128,128为一个PWM信号周期计数值,32us为一个周期;功率P表示为Ptab×10,Ptab为火力档功率查表值,由高至低分别为160(A0H)、140(8CH)、120(78H)、110(6EH)、80(50H);将V的测量解析式代入,得:PWM=128×Ptab/VOLADC-28(2.2)市电电压值与ADC转换值的近似解析公式:V=VOL×220/2.66=VOLADC×79.4/51=1.557×VOLADC(2.3)VOLADC为VOL电压ADC值。比较电压VCMP与负荷电流的关系。比较电压VCMP的大小可以直接控制负荷电流,PWM信号正是通过控制VCMP来达到控制负荷电流的目的。根据电路图可得出它们之间的关系为:VCMP=5(1+20×占空比)/21,它是线性且单调的,每一个PWM占空比都可以得到唯一的一个VCMP。因此,只要得到比较电压VCMP与负荷电流的关系,就可以得到PWM占空比与负荷电流的关系。本设计通过调整可变电阻来改变PWM占空比,用PWM信号来控制负荷电流,从而达到控制功率的目的。2.5PWM脉宽调控电路
CPU输出PWM脉冲到由R6、C33、R16组成的积分电路,PWM脉冲宽度越宽,C33的电压越高,C20的电压也跟着升高,送到振荡电路(G点)的控制电压随着C20的升高而升高,而G点输入的电压越高,V7处于ON的时间越长,电磁炉的加热功率越大,反之越小。“CPU通过控制PWM脉冲的宽与窄,控制送至振荡电路G的加热功率控制电压,控制了IGBT导通时间的长短,结果控制了加热功率的大小”。2.6振荡电路
(1)
当G点有Vi输入时、V7OFF时(V7=0V),V5等于D12与D13的顺向压降,而当V6<V5之后,V7由OFF转态为ON,V5亦上升至Vi,而V6则由R56、R54向C5充电。
(2)
当V6>V5时,V7转态为OFF,V5亦降至D12与D13的顺向压降,而V6则由C5经R54、D29放电。
(3)
V6放电至小于V5时,又重复(1)形成振荡。
“G点输入的电压越高,V7处于ON的时间越长,电磁炉的加热功率越大,反之越小”。2.7
IGBT激励电路
振荡电路输出幅度约4.1V的脉冲信号,此电压不能直接控制IGBT(Q1)的饱和导通及截止,所以必须通过激励电路将信号放大才行,该电路工作过程如下:
(1)V8OFF时(V8=0V),V8<V9,V10为高,Q8和Q3
导通、Q9和Q10截止,Q1的G极为0V,Q1截止。
(2)V8ON时(V8=4.1V),V8>V9,V10为低,Q8和Q3截止、Q9和Q10导通,+22V通过R71、Q10加至Q1的G极,Q1导通。2.8主回路原理分析
由电力电子电路组成的电磁炉(Inductioncooker)是一种利用电磁感应加热原理,对锅体进行涡流加热的新型灶具。主电路是一个AC/DC/AC变换器,由桥式整流器和电压谐振变换器构成,当电磁炉负载(锅具)的大小和材质发生变化时,负载的等效电感会发生变化,将造成电磁炉主电路谐振频率变化,导致电磁炉的输出功率不稳定,就会使功率管IGBT过压损坏。在此先分析电磁炉主谐振电路拓扑结构和工作过程是怎样的。(1)电磁炉主电路拓扑结构电磁炉的主电路如图1所示,市电经桥式整流器变换为直流电,再经电压谐振变换器变换成频率为20~35kHz的交流电。电压谐振变换器是低开关损耗的零电压型(ZVS)变换器,功率开关管的开关动作由单片机控制,并通过驱动电路完成。电磁炉的加热线圈盘与负载锅具可以看作是一个空心变压器,次级负载具有等效的电感和电阻,将次级的负载电阻和电感折合到初级,可以得到图2所示的等效电路。其中R*是次级电阻反射到初级的等效负载电阻;L*是次级电感反射到初级并与初级电感L相叠加后的等效电感。
时间t1~t2时当开关脉冲加至Q1的G极时,Q1饱和导通,电流i1从电源流过L1,由于线圈感抗不允许电流突变.所以在t1~t2时间i1随线性上升,在t2时脉冲结束,Q1截止,同样由于感抗作用,i1不能立即变0,于是向C3充电,产生充电电流i2,在t3时间,C3电荷充满,电流变0,这时L1的磁场能量全部转为C3的电场能量,在电容两端出现左负右正,幅度达到峰值电压,在Q1的CE极间出现的电压实际为逆程脉冲峰压+电源电压,在t3~t4时间,C3通过L1放电完毕,i3达到最大值,电容两端电压消失,这时电容中的电能又全部转为L1中的磁能,因感抗作用,i3不能立即变0,于是L1两端电动势反向,即L1两端电位左正右负,由于阻尼管D11的存在,C3不能继续反向充电,而是经过C2、D11回流,形成电流i4,在t4时间,第二个脉冲开始到来,但这时Q1的UE为正,UC为负,处于反偏状态,所以Q1不能导通,待i4减小到0,L1中的磁能放完,即到t5时Q1才开始第二次导通,产生i5以后又重复i1~i4过程,因此在L1上就产生了和开关脉冲f(20KHz~30KHz)相同的交流电流。t4~t5的i4是阻尼管D11的导通电流,
在高频电流一个电流周期里,t2~t3的i2是线盘磁能对电容C3的充电电流,t3~t4的i3是逆程脉冲峰压通过L1放电的电流,t4~t5的i4是L1两端电动势反向时,因D11的存在令C3不能继续反向充电,而经过C2、D11回流所形成的阻尼电流,Q1的导通电流实际上是i1。
Q1的VCE电压变化:在静态时,UC为输入电源经过整流后的直流电源,t1~t2,Q1饱和导通,UC接近地电位,t4~t5,阻尼管D11导通,UC为负压(电压为阻尼二极管的顺向压降),t2~t4,也就是LC自由振荡的半个周期,UC上出现峰值电压,在t3时UC达到最大值。
以上分析证实两个问题:一是在高频电流的一个周期里,只有i1是电源供给L的能量,所以i1的大小就决定加热功率的大小,同时脉冲宽度越大,t1~t2的时间就越长,i1就越大,反之亦然,所以要调节加热功率,只需要调节脉冲的宽度;二是LC自由振荡的半周期时间是出现峰值电压的时间,亦是Q1的截止时间,也是开关脉冲没有到达的时间,这个时间关系是不能错位的,如峰值脉冲还没有消失,而开关脉冲己提前到来,就会出现很大的导通电流使Q1烧坏,因此必须使开关脉冲的前沿与峰值脉冲后沿相同步。2.
9同步电路
R78、R51分压产生V3,R74+R75、R52分压产生V4,在高频电流的一个周期里,在t2~t4时间(图1),由于C3两端电压为左负右正,所以V3<V4,V5OFF(V5=0V)振荡电路V6>V5,V7OFF(V7=0V),振荡没有输出,也就没有开关脉冲加至Q1的G极,保证了Q1在t2~t4时间不会导通,在t4~t6时间,C3电容两端电压消失,V3>V4,V5上升,振荡有输出,有开关脉冲加至Q1的G极。以上动作过程,保证了加到Q1G极上的开关脉冲前沿与Q1上产生的VCE脉冲后沿相同步。2.10
加热开关控制(1)当不加热时,CPU19脚输出低电平(同时13脚也停止PWM输出),D18导通,将V8拉低,另V9>V8,使IGBT激励电路停止输出,IGBT截止,则加热停止。(2)开始加热时,CPU19脚输出高电平,D18截止,同时13脚开始间隔输出PWM试探信号,同时CPU通过分析电流检测电路和VAC检测电路反馈的电压信息、VCE检测电路反馈的电压波形变化情况,判断是否己放入适合的锅具,如果判断己放入适合的锅具,CPU13脚转为输出正常的PWM信号,电磁炉进入正常加热状态,如果电流检测电路、VAC及VCE电路反馈的信息,不符合条件,CPU会判定为所放入的锅具不符或无锅,则继续输出PWM试探信号,同时发出指示无锅的报知信息(祥见故障代码表),如1分钟内仍不符合条件,则关机。2.11
散热系统
将IGBT及整流器DB紧贴于散热片上,利用风扇运转通过电磁炉进、出风口形成的气流将散热片上的热及线盘L1等零件工作时产生的热、加热锅具辐射进电磁炉内的热排出电磁炉外。
CPU发出风扇运转指令时,15脚输出高电平,电压通过R5送至Q5基极,Q5饱和导通,VCC电流流过风扇、Q5至地,风扇运转;CPU发出风扇停转指令时,15脚输出低电平,Q5截止,风扇因没有电流流过而停转。2.12温度自动控制模块温度控制模块包括定温设置即电磁炉保温,调温和上、下限控制。定温设置通过调节电位器(RV1)的“↑”、“↓”进行设置定温的大小,按一下“↑”即温度值加1,按一下“↓”即温度值下降1。本系统可以在温度限制范围内无限级选择要设置的温度大小,设定后,系统自动处于保温状态。调温时,同样可以通过调节RV1的两个键改变RV1电阻大小,经A/D0808转换后输出温度[5],温度变化为每级2~3度。温度上、下限控制:若温度高于上限或低于下限则自动报警,同时超温警示灯亮。本次设计温度上限为250度,下限为70度。当温度达到250度或低于70度时,峰鸣器会自动发出“B——”的报警声,同时超温(红)灯亮。温度控制电路设计如图2.10。图2.10温度控制电路图2.13显示模块本次设计显示分为数码管显示和LED灯显示。数码管显示主要有定时显示和温度显示,采用了8位数码管[6]和一个常用的3-8译码器74LS138实现系统定时时间和温度的数据显示。在8位LED显示时,为了简化电路,降低成本,采用动态显示的方式,8个LED显示器共用一个8位的I/O,8位LED数码管的位选线分别由相应的P2.0~P2.2控制,由74LS138的输出口A、B、C输入经译码器译码输出端Y0~Y7输出,然后依次输入到数码管的位选8~1口。而将其相应的段选线由P0.0~P0.7依次输入至数码管的A~DP。系统中的数码管集时间显示和温度显示于一体,不但减少元器件的数量,降低设计成本,而且用户可更直观的运用显示功能,使用更方便,实现产品人性化设计。LED灯显示主要有无锅指示,超温指示和系统工作正常指示。如图2.11中所示,D1为无锅指示灯,当系统检测到无锅时,D1灯亮;D2为正常指示灯,当系统工作正常时,D2亮;D3为超温指示灯,当系统温度值大于250或小于70时,D3亮。显示电路如图2.11:图2.11显示电路图(1)显示时间:译码显示电路将“时”、“分”计数器的输出状态七段显示译码器译码,通过8位LED七段显示器高四位分别显示时间的时十位、时个位、分十位、分个位。校时电路时用来对“时”、“分”显示数字进行校对调整的。当电磁炉开机时,显示00:00,若要定时,则通过按键进行相应的设置:按一下K4,进入定时设置,数码管显示相应的时间,设置退出时显示从00:00开始计时的时间;按一下K1、K2分别显示时间分、时的变化。(2)显示温度:温度由8位数码管的低四位显示(注:本系统中温度显示只用到数码管的低3位,分别显示温度百、十、个位)。温度显示的范围为:0~255。通过调节可变电阻的大小来调节温度的高低,并由数码管显示具体温度数据。根据设计要求,结合电磁炉工作的实际情况,本设计另设置了报警上下限,即上限为250,下限为70。用一个LED可显示达到温度上下限,当达到温度上或下限时,该警示灯亮。2.14保护电路在实际生活中,受多种因素的影响往往会出现市电过压、欠压现象,因此,作为一种家用烹饪电器,其具有相应的保护功能。如图2.12所示,其中RV2,LM324的1、2、3脚和外围组件组成欠压保护电路[7][9]。其中RV3,LM324的5、6、7脚和外围组件组成过压保护电路。电阻R5~R8为比较器提供基准电压,R4、R5、R6、R12、R14、R16为分压电阻,VDl、VD2为耦合二极管。电源电压正常时,RV2输出电压使LM324的2脚电位大于3脚电位,其1脚输出低电平,单片机判断电源电压正常。当电源电压低于160V时,RPl输出电压使LM324的2脚电位小于3脚电位,其1脚输出高电平,经VD1、R12、R16分压送入单片机进行欠压判断控制。电源电压正常时,RV3输出电压使LM324的5脚电位大于6脚电位,其7脚输出低电平,单片机判断电源电压正常。当电源电压高于245V时,RV3输出电压使LM324的5脚电位小于6脚电位,其7脚输出高电平,经VD2、R12、R16分压送入单片机进行过压判断控制。图2.12保护电路图过热检测和保护可参照温度控制模块,当系统温度高于预定值时,系统自动报警并作相应的处理。2.15按键模块按键设计如图2.13所示,图2.13按键设计图其中按键功能为:K4:定时设置,起始时间为00:00,设置首先按一下K4,然后按其他键设置定时时间;K1:用来设置定时时间的时,设置小时每按一下,时钟加一;K2:设置定时的分钟,每按一下,分钟加一;K3:定时设定确认键,设置完后按一下K3确认并退出。RV1的“↑”、“↓”键分别控制RV1阻值增加、减小,它主要有控制系统两大模块即温度和功率模块,而且都是通过控制RV1的电阻来控制模块功能。在温度控制中,调节RV1的“↑”、“↓”键改变其阻值经A/D转换实现控制;在功率控制中,调节RV1的“↑”、“↓”键改变其阻值经CPU输出改变PWM的输出占空比则可实现功率控制。2.16报警模块利用程序来控制单处机某个口线的“高”电平或“低”电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”、“低”电平的持续时间,就能改变输出频率,从而改变音调。系统报警信号由单片机P3.4口接入扬声器,有报警信号输入时扬声器发出“B——”的声音。系统产生报警信号的情况:(1)当定时时间达到时;(2)当温度上限或下限达到时;(3)当系统检测到无锅时。报警电路由一个扬声器驱动电路[8]和一个扬声器组成。报警电路如图2.14:图2.14报警电路图2.17电源电路电源是整个系统的能量来源,它直接关系到系统能否运行。在本系统中单片机、数码管显示、定时、报警等电路需要5V的电源,因此电路中选用稳压芯片7805,其最大输出电流为1.5A,能够满足系统的要求,其电路[9][10]如图2.15所示。图2.15电源电路图图2.16电源电路测试图第3章程序设计系统程序设计说明在进行微机控制系统设计时,除了系统硬件电路设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,程序设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制系统准确高效地实现各功能。为了完成上述任务,在进行设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:(1)单个模块比起一个完整的程序易编写及调试;(2)模块可以共存,一个模块可以被多个任务在不同条件下调用;(3)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由主程序﹑定时子程序、温度控制子程序﹑显示子程序等构成。3.1主程序流程如图3.1所示,系统启动后,对整个系统进行初始化,进入主程序循环。初始化包括:口线初始化、测试键检测、键盘显示初始化、定时器中断初始化、A/D转换初始化。开机启动即开启显示,A/D转换和系统内部定时;随着系统工作的进行,用户可启用中断即可自行设置定时,定温;当定时时间到或系统温度超出设定范围时,系统自动开启报警功能,提示用户进行相应操作。程序代码见附录Ⅰ。调用报警子程序调用报警子程序调用中断子程序调用转换子程序开启定时、控温调用显示子程序置位初始化标志系统初始化开始结束如图3.1主程序流程图3.2无锅检测程序流程程序流程如图3.2所示,本系统中的无锅检测利用电流检测电路进行检测,系统检测到无锅检测标志EMPTY为1时,系统认为是无锅;否则为有锅。无锅时,无锅警示灯(D1红灯)亮。检测入口检测入口电流检测置无锅检测标志为1无锅检测标志为1?判为无锅无锅指示灯亮判为有锅系统继续工作YN图3.2无锅检测流程图3.3A/D转换程序流程A/D转换流程如图3.3所示,首先系统自动转换复位,启动A/D转换,将模拟值通过ADC0809转换为具体可视化数字,并可以通过数码管显示出来。本次设计将温度和压力转换为数值。程序代码见附录Ⅰ。转换复位转换复位启动转换允许转换输出读转换结果有转换结束信号NY子程序返回图3.3A/D转换流程图3.4外部中断外部中断程序流程图如图3.4所示,系统进行定时设置时,启动外部中断。开始扫描按键,当K4按下,可进行定时设置;K1设置定时的分钟,按一K1则分钟加一;K2设置定时的时钟的时,按一下K2则时钟加一;K3设置定时确定并退出。程序代码见附录Ⅰ。设置定时的分设置定时的分关T1标志位清0P2口数据送累加器入口K4按下?K1按下?设置定时的时K2按下?N NNN NNY NNN NNY NN中断返回Y NN确定定时设置K3按下?N NNY NN图3.4外部中断流程图3.5定时模块流程时间控制主模块的程序框图如图3.5所示,程序代码见附录Ⅰ。CPU系统初始化CPU系统初始化定时初始化中断初始化始化串行口初始化显示待机指示符设置定时时间显示刷新启动计时有关变量初始化刷新显示报警设置好定时时间定时时间到?1秒钟到了吗?时或分变化了吗延时11NNNNYYYY图3.5定时控制主流程图3.5.1内部定时中断内部定时器中断如图3.6所示,由于定时器中断可能发生在主程序的任何地方,因此对主程序和中断服务程序都要用到的资源必须加以保护,如累加器A,在退出中断服务程序时将其恢复。此定时中断还可被用于任何需要不是很严格的定时控制的场合。例如,扬声器延时,可在程序的任何地方打开扬声器,同时设置延时时间计数器在每次1分钟,1分钟过后,扬声器立即自动关断。此外,定时计数、无锅检测延时等,均可在此中断中进行,一般情况下,在主程序中可不必为实现一个与时间控制有关功能而专门编写一段软件延时程序。程序代码见附录Ⅰ。其程序流程图如图3.6:入口入口数据保护出栈,返回时钟清0时钟加1分钟加1开始秒计时P3.4取反T0重装初值m_bAlarm=1?m_bTemp=1?60秒到了?60分到了?24时到了?2NYYYYNNNNY2图3.6内部中断流程图3.5.2定时功能的实现定时功能的实现涉及到两个方面:时间设定和是否达到设定时间判别与相应处理。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行报警判别。译码显示电路将“时”、“分”计数器的输出送到七段显示译码驱动器译码驱动,通过八位七段LED显示器的低四位显示出来。电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动扬声器发声实现报警。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”显示数字进行校对调整。程序代码见附录Ⅰ。其流程图如图3.7所示:定时判别处理时十、个位,分十、个位改变了设置定时标志定时判别处理时十、个位,分十、个位改变了设置定时标志清除定时标志设置了定时?当前时间是设定时间?中断返回NYYN初始化初始化显示计时调时定时修改值读键有报警?=定时值判断报警标志报警YYNN(b)图3.7定时控制子程序流程图3.6温度控制程序流程温度控制流程图如图3.8所示,温度控制道先进行设温度初始化unsignedcharm_btTemp,启动A/D转换。读ADC0809(每250毫秒读一次)数据标志bitm_bReadData=0,判断是否有温度调整,延时并显示。程序代码见附录Ⅰ。设初值设初值开始启动A/D转换是否调整?调上限调下限显示中断完毕?开始设定温度值显示温度值延时退出是否否是图3.8温度控制流程图3.7基本显示模块流程基本显示模块设计的重点是由显示代码取得相应的段码,显示段码数据的并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,用LED数码管代替显示器代替指针显示。程序代码见附录Ⅰ。3.7.1显示时间程序流程如图3.9所示:将16进制时分数据转化为BCD显示代码将16进制时分数据转化为BCD显示代码关显示以免显示抖动关显示以免显示抖动通过P2口将时分数据传入数码管通过P2口将时分数据传入数码管打开显示打开显示图3.9显示时间流程图3.7.2显示温度程序流程图其流程图如图3.10开始开始读取温度数据分配温度高低位调用转换子程序调温了吗显示已调温度NY显示当前温度返回 图3.10温度显示流程图3.8报警模块流程3.8.1定时报警程序流程图其程序流程图如图3.11,程序代码见附录Ⅰ。报警程序入口报警程序入口调用定时报警标志位置0标志位置1当前时间与设定时间相同?报警程序返回NY图3.11定时报警程序流程图3.8.2超温报警超温报警入口超温报警入口标志位清0警示灯D3亮D3不亮RED_TEMP=1标志位清0警示灯D3亮符号位清0读温度高于上限?低于下限?NNYY354453图3.12超温报警流程图第4章系统仿真与调试仿真部分采用Proteusprofessional7.4和Keil软件结合完成。4.1系统仿真Proteus是英国Labcenterelectronics公司研发的EDA设计软件,是一个基于ProSPICE混合模型仿真器的,完整的嵌入式系统软、硬件设计仿真平台。Proteus不仅可以做数字电路、模拟电路、数模混合电路的仿真,还可进行多种CPU的仿真,涵盖了51、PIC、AVR、HC11、ARM等处理器,真正实现了在计算机上从原理设计、电路分析、系统仿真、测试到PCB板完整的电子设计,实现了从概念到产品的全过程[4]。4.1.1原理图绘制(1)新建文件:打开PROTEUS,点FILE,在弹出的下拉菜单中选择NEWDESIGN,即进入原理图绘制界面。(2)元器件选取:按设计要求,在对象选择窗口中点P,弹出PICKDEVICES对话框,在KEYWORDS中填写要选择的元器件,然后在右边对话框中选中要选的元器件,则元器件列在对象选择的窗口中。(3)放置元器件、电源和地、连线,得到系统电路图,最后进行电气检测。4.1.2程序的设计与编译PROTEUS软件有自带编译器,有ASM的、PIC的、AVR的汇编器等,本次设计,采用Keil2编译集成调试软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序[4]。KeilC51单片机软件开发系统Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。Keil工程的建立(1)源文件的建立使用菜单“File->New”或者点击工具栏的新建文件按钮,即可在打开的文本编缉窗口中输入源程序,保存该文件,注意必须加上扩展名(C语言源程序一般用.c为扩展名)如qing.c。2、建立工程文件点击“Project->NewProject…”菜单,出现一个对话框,在编缉框中输入文件名,点击“保存”按钮。在Project->Optionfortarget出现第二个对话框选择目标CPU(本次设计选择Atmel公司的AT89C51芯片)。此时,在工程窗口的文件页中出现了“Target1”,点击“SourceGroup1”右键,选中其中的“AddfiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找源文件(注意,该对话框下面的“文件类型”默认为Csourcefile(*.c),也就是以C为扩展名的文件),双击该文件,将文件加入项目。双击文件名,即打开该源程序。工程建立好以后,对工程进行进一步的设置,以满足要求。首先点击左边Project窗口的Target1,然后使用菜单“Project->Optionfortarget‘target1’”设置对话框中的Target页面,Xtal后面的数值是晶振频率值,本次设计设置为12MHz;MemoryModel用于设置RAM使用情况选择Small;Compact是可以使用一页外部扩展RAM,而Larget则是可以使用全部外部的扩展RAM。CodeModel用于设置ROM空间的使用选择none。设置对话框中的OutPut页面中CreatHexfile用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX格式文件,文件的扩展名为.HEX)。3、编译、连接选择菜单Project->Buildtarget,对当前工程进行连接,获得*.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于Keil的仿真与调试。仿真部分采用Protusprofessional7.4和Keil软件结合完成设计,功能强大且操作较为简单,可以很容易的实现各种系统的仿真。4.2系统调试系统调试主要是在电路原理图仿真过程中出现的系统功能、仿真结果的性能误差分析,可从系统模块进行调试各分析。4.2.1定时模块定时模块的调试主要针对的是时间准确度,本次设计电路图在仿真时出现“SimulationisnotrunninginrealtimeduetoescessiveCPUload”的警告,使系统时间比标准时间要慢,例如要按按键时更使系统时间变慢;经过多次实验,最终通过调整软件定时时间改善这一不足。该模块的误差还受晶振自身的误差影响,晶振的误差约为0.0001~0.000001。在软件的编程过程中所产生的误差比较小,在重装初值的过程中大概需要约8个机器周期,但在程序开始对定时器赋初值时,多加了8个机器周期,减小了这方面的误差。另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。4.2.2温度和功率控制模块温度和功率控制模块主要由电位器RV1电阻体电阻的大小和市电电压决定。系统启动后,调动RV1的弹片或点击RV1的“↑”、“↓”即可改变电阻的大小,通过A/D转换可从数码管显示中看到温度大小变化;系统要保温时,则可将RV1弹片打到要恒温的温度点即可。当温度达到系统预设的上、下限时超温警示灯亮并报警。其温度上、下限可通过程序中设定。在调试过程中,由于RV1在工作中会发热,造成较大的误差,其影响不可忽视,为减少此误差可在电磁炉内部设置风扇模块;由于现实生活中不可避免的发生电压不稳定的情况,在电压变化太大的时候,调节RV1时输出的PWM占空比会产生偏差,功率控制误差也相继变大。因此,设计可以加入稳压模块以减小误差。4.2.3无锅检测和保护模块本次设计中的无锅检测功能通过电流检测电路实现,在系统仿真时,通过系统软件设定,系统检测为无锅时无锅警示灯亮。软件部分很容易实现,简化了电路,提高了控制的快速性和准确性。保护电路通过采用比较器检测电压,超出预定值时报警,并结合软件设计实现保护功能,误差较小但是电路较复杂,因此还需要进一步完善。4.2.4报警模块调试该模块调试主要是检查喇叭报警时有无警音,警音持续时间的调整。仿真时初现的问题有:(1)没有警音,只是振动一下。(2)警音时间为一分钟,对仿真来说过久。通过实验得到解决的办法:(1)将报警音产生的延时时间缩短。(2)将报警音持续时间缩短。以上两个解决办法都是在程序里改动实现的。本次设计,采用Keil集成调试软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。仿真部分采用Proteusprofessional7.4软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。在完成本设计的过程中,注意力主要集中在编程、电路调试上。合理地运用软件设计模块电路可以节省很多功夫,但完全照搬也不能达到预想的效果,因为实际参数无法与设计精确匹配,因此查阅了大量相关资料,包括查阅相关书籍和网上的资料,获得了一些相关信息尽量达到指标要求。结束语这次设计采用单片机开发设计使用的传统方法,经历了从系统问题的提出—系统可行性分析—总体的功能模块设计—程序设计—最后到程序的实现仿真,达到设计要求。设计过程中,首先在方案选择与论证时,我查找了许多相关资料,通过比较,最终确定选用单片机作控制核心;鉴于AT89C51的功能强大且我对该芯片比较熟悉,所以选用AT89C51作为本设计的主芯片。然后,对各功能模块进行设计,在设计无锅检测模块时,我遇到了难题:是用电流检测电路还是用传感器电路。传感器电路简单,但是检锅性能不好,不能识别适当的锅具,而且检测误差相对较大。电流检测电路易实现,易实现功能控制,但是电路相对稍复杂一些。考虑到整个系统的功能控制和可操作性,最终确定电流检测电路。系统的定时模块采用芯片内部定时和外部中断实现。温度控制模块采用ADC0809作为转换器;鉴于电磁炉的温度比较高,常用的DS18B20控制温度在-55℃到+125℃范围内,因此用用ADC0809和电位器结合控制。最后,在程序设计时,鉴于实际应用多采用C语言编写程序,所以本次程序设计用C语言代替传统的汇编语言,使编写较容易实现;系统仿真时,采用Proteus和Keil结合,使编译、仿真和调试更为简单明了。通过本次设计,我了解了整个单片机开发的基本流程,对所学的知识进行了系统的复习和巩固,在以前的学习中不够清晰的概念得到了更好的理解。同时,通过毕业设计,培养和锻炼了我的动手能力,这一点非常重要,不仅对我以后的学习有帮助,还可以为以后的工作打下一定的基础。这段时间的学习和实践,使我了解到了理论和实际之间的差别,第一次真正接触到了实际中的问题,并通过和老师、同学交流,加强了自身的分析问题、解决问题的能力。同时,我也发现了自己在某些方面的不足,尤其是程序编写和考虑问题不够全面,这是我以后要加以改进的方面。参考文献[1]刘湘涛.江世明编《单片机原理与应用》[M].北京:电子工业出版社,2006年7月.[2]张克农主编《数字电子技术基础》[M].北京高等教育出版社,2003.4.88-92.[3]周灵彬编著《单片机系统的PROTEUS设计与仿真》[M].北京电子工业出版社,2007.4.[4]杨刚.周群编《电子系统设计与实践》[M].北京:电子工业出版社,2004:341-347118-122.张靖武.[5]李广弟.单片机基础[M].北京:北京航天航空航天大学出版社,2001年:56-64.[6]何立民.《单片机高级教程(应用与设计)》[M].北京:北京航空航天大学出版社,2000:53-98.[7]张万奎主编《模拟电子技术》[M].长沙:湖南大学出版社,2004.7.[8]中国知网.[9]21IC电子网www.21IC.com.[10]中国电子设计网.[11]单片机仿真论坛.致谢本论文是在李雪峰老师的悉心指导下完成的。在整个毕业设计任务和论文的完成过程中,李老师付出了很多心血,从论文的选题、开题到方案设计及最后的论文撰写、修改都离不开李老师的耐心指导和热情帮助。本设计已经基本完成,在这段时间里,李老师严谨的治学态度和热忱的工作作风令我十分钦佩,他的指导使我受益匪浅。在此对李雪峰老师表示深深的感谢。同时,身边的同学给了我许多的帮助。在此,我向身边关心我的同学致以诚挚的谢意!另外,系里的领导和老师也给我们必要的指导,我也向系里的领导和老师表示衷心的感谢!通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这几个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。附录附录Ⅰ程序清单#include<AT89X51.H>//ADC0809的引脚sbit EOC = P3^0; //无锅红灯接口sbit RED_EMPTY= P3^1;//温度红灯接口sbit RED_TEMP= P3^2;//绿灯接口sbit BLUE = P3^3;//喇叭接口sbit SPEAKER= P3^4;//温度功率选择端口sbit CS =P3^5;//数据端口#define DATA_PORT P0//位码端口#define BIT_PORT P2//AD数据端口#define DATA_AD P1//无锅定义#define VOLTAGE 0.94//时间结构(无秒显示)typedefstructTime{ unsignedcharm_btHour; unsignedcharm_btMinute;}TIME;//数据表格(szDataTable[3]和szDataTable[8]中的数据固定不变)unsignedchar szDataTable[]={0,0,0,10,0,0,0,0,0x80};//时间全局变量TIME m_stTime;//报警时间记录TIME m_stAlarm;//温度全局变量unsignedchar m_btTemp;//报警标志bit m_bAlarm =0;//定时键功能锁定标志bit m_bEnable =0;//读0808数据标志(每250毫秒读一次)bit m_bReadData=0;//读时间标志(每500毫秒读一次)bit m_bReadTime=0;//段码表unsignedcharcodeszSectTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0};//延时1毫秒voidDelay_1ms(){ unsignedchari,j,k; for(i=0;i<5;i++) for(j=0;j<1;j++) for(k=0;k<63;k++);}//延时10毫秒voidDelay_10ms(){ unsignedchari,j,k; for(i=0;i<5;i++) for(j=0;j<3;j++) for(k=0;k<220;k++);}//数码管显示函数voidDisplay(){ unsignedchark;for(k=0;k<8;k++) { //先送段码数据给端口 DATA_PORT=szSectTable[szDataTable[k]]; //开位码显示 BIT_PORT=0xFF;//只改变低3位数据保持高5位原来的端口数据不变 BIT_PORT=(k|0xf8)&(BIT_PORT|0x07); //延时1毫秒 Delay_1ms(); //封一次端口 DATA_PORT=0; } //先送段码数据给端口 DATA_PORT=szDataTable[8];//开位码显示 BIT_PORT=0xFF; BIT_PORT=(6|0xf8)&(BIT_PORT|0x07); //延时1毫秒 Delay_1ms(); //封一次端口 DATA_PORT=0;}//无锅监测(返回1表示无锅)bitIsCurrent(){ floatfVoltage; CS=0; //启动AD转化 *((unsignedcharxdata*)0xfef0)=0; while(!EOC); fPress=(float)DATA_AD; if(0.94<fVoltage) { fVoltage=10.0/23.0*fVoltage+9.4; //测试时补偿值为9.4 if(fVoltage<VOLTAGE){return1,TR1=1,m_bAlarm=1;}return0; } return1;}//温度数据读取(温度大于250度或小于70度超温灯亮红灯亮)bitReadTemp(){ unsignedcharDest; CS=1; //启动AD转化 *((unsignedcharxdata*)0xfef0)=0; while(!EOC); Dest=DATA_AD; //温度数据处理 szDataTable[2]=Dest/100; //取温度值百位 szDataTable[1]=Dest%100/10; //取温度值十位 szDataTable[0]=Dest%10; //取温度值个位 if(Dest>250||Dest<70){return1,TR1=1,m_bAlarm=1;}return0;}//时间读取voidReadTime(){ szDataTable[7]=m_stTime.m_btHour/10; szDataTable[6]=m_stTime.m_btHour%10; szDataTable[5]=m_stTime.m_btMinute/10; szDataTable[4]=m_stTime.m_btMinute%10;}////////////////////////////////////////////////////////////////////////////voidmain(){ //系统设置 TMOD=0x11; TH0=0x3C;//中断设置初始化TL0=0xB0;TH1=0xF0;//中断设置初始化TL1=0; EA=ET0=TR0=ET1=1; //初始化时间结构 m_stTime.m_btHour=m_stTime.m_btMinute=0; m_stAlarm.m_btHour=m_stAlarm.m_btMinute=0; while(1) { Display(); //数码管扫描if(m_bReadData) { m_bReadData=0; RED_EMPTY=RED_TEMP=1;BLUE=0; if(ReadTemp()){RED_TEMP=0;BLUE=1;} if(IsPress()){RED_EMPTY=0;BLUE=1;} }if(m_bReadTime) { ReadTime(); m_bReadTime=0; } if(m_bAlarm){TR0=1;m_bAlarm=0;} //报警 if((P2_6==0)&&(m_bEnable==0)) { Delay_10ms(); if(P2_6==0) //设定定时 {//初始化定时时间结构 m_stAlarm.m_btHour=m_stAlarm.m_btMinute=0; szDataTable[7]=0; szDataTable[6]=0; szDataTable[5]=0; szDataTable[4]=0; m_bEnable=1; EA=0; } } if((P2_3==0)&&(m_bEnable==1)) //分钟设定 { Delay_10ms(); if(P2_3==0) { while(P2_3==0)Display(); m_stAlarm.m_btMinute++;if(m_stAlarm.m_btMinute==60) m_stAlarm.m_btMinute=0; szDataTable[5]=m_stAlarm.m_btMinute/10; szDataTable[4]=m_stAlarm.m_btMinute%10; } } if((P2_4==0)&&(m_bEnable==1)) //时钟设定 { Delay_10ms(); if(P2_4==0) { while(P2_4==0)Display(); m_stAlarm.m_btHour++; if(m_stAlarm.m_btHour==24) m_stAlarm.m_btHour=0; szDataTable[7]=m_stAlarm.m_btHour/10; szDataTable[6]=m_stAlarm.m_btHour%10; } } if((P2_5==0)&&(m_bEnable==1)) //确定设定 { Delay_10ms(); if(P2_5==0) { while(P2_5==0)Display(); m_bEnable=0;TH0=0x3C;TL0=0xB0;m_stTime.m_btHour=m_stTime.m_btMinute=0;EA=1; } } }}//中断子程序,每50ms中断一次voidTime0()interrupt1using0{ staticunsignedcharbtCount=0,btCountEx=0;TR0=1;TH0=0x3C;//中断设置初始化TL0=0xB0; btCount++; if(btCount==20) { btCount=0; btCountEx++; //将btCountEx赋值60则每1一分钟加1,将btCountEx赋值1则每1秒加1if(btCountEx==60) { btCountEx=0; m_stTime.m_btMinute++; if(m_stTime.m_btMinute==60) { m_stTime.m_btHour++; m_stTime.m_btMinute=0; } //是否报警if((m_stTime.m_btHour==m_stAlarm.m_btHour)&&(m_stTime.m_btMinute==m_stAlarm.m_btMinute))TR1=1;m_bAlarm=1; //一分钟后报警结束 if((m_stTime.m_btHour==m_stAlarm.m_btHour)&&(m_stTime.m_btMinute==(m_stAlarm.m_btMinute+1)))TR1=0; } } if((btCount%5)==0)m_bReadData=1; if((btCount%10)==0)m_bReadTime=1;}//中断子程序,每1.5ms中断一次voidTime1()interrupt3using3{ TR1=1;TH1=0xF0;//中断设置初始化TL1=0;SPEAKER=~SPEAKER;}附录Ⅱ元器件清单元件名称元件型号元件数量单片机AT89C511译码器74LS13818位8通道数/模转换器ADC08091运算放大器LM3391运算放大器LM3241稳压芯片78051八位一体数码管7SEG-MPX8-CC-BLUE1三极管2N29051三极管2N23699电喇叭SPEAKER1电容30pF2电解电容10uF2电容51pF1电解电容2200uF2电容10pF4电容5uF2电容330pF2电阻10KΩ15电阻3.7KΩ1电阻2KΩ1电阻3KΩ1电阻3.3KΩ1电阻25KΩ1电阻2.2KΩ1电阻2KΩ1电阻560KΩ1电阻1KΩ2电阻51KΩ5电阻18KΩ1电阻200Ω1电阻680Ω1电感线圈1H1电位器POT-HG38排阻RESPACK-81变压器TRAN-2P2S2电流互感器TRAN-2P2S1整流桥BRIDGE1晶振12MHz1红色发光二极管LED-RED2绿色发光二极管LED-BLUE1二极管1N414
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新人教版八年级英语下学期Unit5-Unit 6作文指导范文素材
- 2025办公复印设备故障维修合同协议
- Solid 机械基础及教程 7
- 新生儿睡眠护理
- 护理数据分析
- 2026年农机维修专业技术人员合同
- 照顾早产宝宝的技巧与方法
- 椎管内肿瘤患者的健康教育与患者参与
- 护理人文关怀的叙事研究
- 护理学本科:老年护理学专题讲座
- 杭州高新金投控股集团有限公司及下属子公司2026年招聘7人考试参考题库及答案解析
- 2026广东佛山市顺德区村(社区)大学生CEO选聘100人考试参考试题及答案解析
- 南通市2026届高三(四模)生物试卷(含答案)
- 2026贵州安顺公路建设养护有限公司招聘3人笔试参考试题及答案解析
- 2026广西能汇投资集团有限公司社会招聘笔试备考题库及答案解析
- 2026苏教版一年级数学下册期末试卷及答案
- 图形的位置(课件)六年级下册数学人教版
- 2026中国铁路北京局集团有限公司招聘高校毕业生86人(三)笔试参考题库及答案解析
- 北森测评题库及答案2026
- 2025年上海市高考英语试卷及参考答案(完整版)
- 减重手术治疗糖尿病ppt课件
评论
0/150
提交评论