![电磁炉单片机控制系统设计方案_第1页](http://file4.renrendoc.com/view/023c56875e032a6a39ffacfd7a41d56f/023c56875e032a6a39ffacfd7a41d56f1.gif)
![电磁炉单片机控制系统设计方案_第2页](http://file4.renrendoc.com/view/023c56875e032a6a39ffacfd7a41d56f/023c56875e032a6a39ffacfd7a41d56f2.gif)
![电磁炉单片机控制系统设计方案_第3页](http://file4.renrendoc.com/view/023c56875e032a6a39ffacfd7a41d56f/023c56875e032a6a39ffacfd7a41d56f3.gif)
![电磁炉单片机控制系统设计方案_第4页](http://file4.renrendoc.com/view/023c56875e032a6a39ffacfd7a41d56f/023c56875e032a6a39ffacfd7a41d56f4.gif)
![电磁炉单片机控制系统设计方案_第5页](http://file4.renrendoc.com/view/023c56875e032a6a39ffacfd7a41d56f/023c56875e032a6a39ffacfd7a41d56f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE52电磁炉单片机控制系统设计方案目录TOC\o"1-2"\h\z\u摘要 I前言 1第1章系统总体方案 21.1方案设计 21.2方案论证 3第2章硬件设计 42.1芯片介绍 42.2电磁炉无锅检测模块 92.3定时控制模块 102.4功率控制模块 122.5温度自动控制模块 132.6显示模块 142.7保护电路 162.8按键模块 172.9报警模块 172.10电源电路 18第3章程序设计 193.1主程序流程 193.2无锅检测程序流程 203.3A/D转换程序流程 213.4外部中断 213.5定时模块流程 223.6温度控制程序流程 263.7基本显示模块流程 263.8报警模块流程 27第4章系统仿真与调试 294.1系统仿真 294.2系统调试 31第5章PCB板设计与制作 335.1PCB板设计 335.2PCB板制作 34结束语 37参考文献 38附录Ⅰ程序清单 40附录Ⅱ系统原理图 49附录ⅢPCB图 50附录Ⅳ元器件清单 51摘要本文介绍了电磁炉的功能控制系统,它利用单片机的多功能控制优势对电磁炉进行智能控制,使之具有高效节能、健康环保、安全可靠等一系列优点。电磁炉成为目前发展最快的,市场增长幅度最高的家电产品之一。本设计以AT89C51为核心,实现电磁炉的数码管显示控制、多种安全保护功能、功率自动控制、温度自动控制、定时控制以及各种自动检测报警功能的控制;对单片机AT89C51在系统控制上的应用,从软硬件两方面对控制系统的设计方案做了简单的介绍。在软件设计上,采用模块化程序设计的思想,对电磁炉控制系统的各个功能模块进行划分和设计。研究智能锅具检测技术,提高了锅具检测的快速性和准确性,减少电磁污染并节约了电能。最后,对整个系统进行仿真、调试和性能测试。测试结果表明,该控制系统设计合理,稳定,安全、可靠性高。关键词:电磁炉;单片机;多功能;控制前言当今,随着电子技术的高速发展,单片机的应用已经渗透到生产和生活中的各个方面,有力的推动了社会的发展。单片机以其体积小,集成度高,价格便宜,在数据处理、实时控制等方面无与伦比的强大功能而受到广大科研工作者及生产厂家的亲睐。目前,市场热销的电磁炉就是单片机控制系统的一个典型应用,其品牌繁多、功能强大且多样。作为一个毕业设计的课题,对单片机控制系统的应用做了一些初步的尝试和探讨。以往家用电器采用模拟电路和数字电路设计的整体电路的规模较大,用到的器件多,造成故障率高,难调试,而且电路复杂,维修和生产测试不太方便;而今,采用单片机系统完成设计使电路设计简单可靠,工作可靠性很好,功能强大,实现控制智能化。为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。针对各种功能的控制,通过软件编程就可以轻易而举的实现。本设计以AT89C51为核心,实现电磁炉的定时控制、温度自动控制、功率自动控制、保护功能、数码管显示控制以及无锅检测报警功能的控制;对单片机AT89C51在系统控制上的应用,从软硬件两方面阐述了控制系统的设计方案做了简单的介绍。在软件设计上,采用模块化程序设计的思想,对电磁炉控制系统的各个功能模块进行划分和设计,提高了控制系统的快速性和准确性。最后,对整个系统进行组装、调试和性能测试。实验结果表明,该控制系统设计合理,稳定,安全,可靠性高。第1章系统总体方案1.1方案设计方案一:控制部分的核心采用传统的数字逻辑芯片来实现。系统的逻辑状态以及相互转移更是复杂,用纯粹的数字电路或小规模的可编程逻辑电路来实现该系统有一定的困难,需要用中大规模的可编辑逻辑电路。这样,系统的成本就会急剧上升。方案结构图如图1.1:电源AC/DC电源AC/DC按键控制电磁炉控制板驱动电路主谐振电路锅具显示保护检测电路图1.1方案一结构图方案二:以AT89C51系统为核心,利用单片机丰富的I/O端口,及其控制的灵活性,使其实现电磁炉数码管显示控制、多种安全保护功能、功率自动控制、温度自动控制、定时控制以及各种自动检测报警功能的控制。此系统的硬件和软件都比较容易实现,且满足本题的精度要求,性价比较高的AT89C51具有以下特点:其8K的EPROM可在固化程序上是方便地多次擦写,独有的低功耗性能保证器件的长时间工作;采用最小应用系统设计,电路可靠、稳定。方案结构图如图1.2:单片机定时控制温度自动控制功率自动控制检测报警控制安全保护控制数码管显示控制电源电路图1.2方案二结构图1.2方案论证方案一采用模拟电路和数字电路设计的整体电路的规模较大,用独立振荡单元,多个功率管并联、驱动放大电路采用分立元件,如:定时采用555构成的单稳态触发器控制,但是该单稳态电路对输入的脉冲宽度有一定的要求,即触发脉冲宽度要小于暂稳时间,而实际应用中则大于暂稳时间,于是还要先经微分电路后再加到电路的低电平触发端。仅一个定时控制电路就已经如此复杂,若加上其它的温度、功率、显示等电路,系统电路更为繁杂,由此一来,用到的器件多,造成故障率高,难调试,而且电路复杂,维修和生产测试不太方便;虽然容易实现,但控制和性能方面都很差,硬件设计任务比较麻烦,而且设计的产品实际操作也不方便。方案二是采用以AT89C51为核心的单片机系统,可以实现数码显示、定时控制、温度功率自动控制等功能,大大提高了智能化自动控制的速度。显示采用8位一体数码管,既显示定时又显示温度,其中,数码管的前四位显示定时的时和分,后三位显示温度;定时采用单片机内部定时和外部中断结合控制实现;温度和功率控制选用ADC0808和电位器联合控制实现。由此一来,系统利用单片机强大功能对各个模块进行系统控制,减少分立元器件的使用,使其效率高、体积小、重量轻、噪音小、省电节能、并且系统所测结果的精度和性能都很高,该方案完全具有可行性,同时体现了技术的先进性,经济上也有很大的优势。综上所述,经比较,本设计采用方案二。第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模数转换器ADC0808对系统精度至关重要的A/D转换换器,采用的是ADC0808[2]。(1)内部结构ADC0808片内带有锁存功能的8路模拟多路开关,可对8路0-5V的输入模拟电压信号分时进行转换,片内具有多路开关的地址译码和锁存电路、比较器、256R电阻T形网络、树状电子开关、逐次逼近寄存器SAR、控制与时序电路等。输出具有TTL三态锁存缓冲器,可直接连到单片机数据总线上。(2)引脚及功能ADC0808的芯片引脚如图2.3所示。图2.3ADC0808的芯片引脚图引脚功能介绍如下所述: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:时钟输入端。ADC0808的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz以下时钟信号。ADDA、ADDB、ADDC:8路模拟开关的3位地址选通输入端,以选择对应的输入通道。ADC0808功能如下所述:①分辨率为8位;②ADC0808最大不可调误差小于±1/2LSB,ADC0809小于±1LSB;③由单一的+5v电源供电,模拟输人范围为0~5V;④具有锁存控制的8路模拟开关;⑤可锁存三态输出,输出与TTL兼容;⑥功耗为15mW;⑦不必进行零点和满度调整;⑧转换速度取决于芯片的时钟频率,时钟频率范围:10-1280kHz,当CLK=500kHz时,转换速度为128us。ADC0808与单片机AT89C51接口连接如图2.4。图2.4ADC0808与单片机AT89C51接口连接图2.1.3译码器74LS13874LS138[2]是最常用的集成译码器之一,其引脚图如图2.5所示。图2.574LS138引脚图74LS138译码器有3个输入端A、B和C,8个输出端Y0~Y7,因此又称为3-8译码器。如图中E1、E2和E3是3个控制输入端(使能控制端),组合控制译码器的选通和禁止,其中E2和E3为低电平有效。当eq\x\to(E2)=EQeq\x\to(E3)=0,E1=1时,译码器处于工作状态,否则,当eq\x\to(E2)+eq\x\to(E3)=1或E1=0时,译码器被禁止(即译码器不工作),此时,无论输入的A、B、C为何状态,译码器都无输出。在分析具有控制输入端的组合电路时,要分清功能输入信号(如74LS138的A、B、C)和控制输入信号(如74LS138的E1、E2、E3)。只有控制输入处于有效(使能)状态时,功能输入与输出之间才有相应的逻辑关系。74LS138译码器的真值表如表2.1所示。由真值表知,当eq\x\to(E2)+eq\x\to(E3)=1或E1=0时,译码器处于禁止状态,输出eq\x\to(Y0)~eq\x\to(Y7)全为1;当eq\x\to(E2)=EQeq\x\to(E3)=0,E1=1时,译码器被选通,处于工作状态,译码器输出与输入之间的逻辑关系为:
eq\x\to(Y0)=eq\x\to(eq\x\to(E1)eq\x\to(E2)eq\x\to(E3));
eq\x\to(Y1)=eq\x\to(E1eq\x\to(E2)eq\x\to(E3));eq\x\to(Y2)=eq\x\to(eq\x\to(E1)E2eq\x\to(E3));
eq\x\to(Y3)=eq\x\to(eq\x\to(E1)eq\x\to(E2)E3);…
eq\x\to(Y7)=eq\x\to(E1E2E3)。表2.174LS138译码器的真值表控制输入译码输入输出E1eq\x\to(E2)+eq\x\to(E3)ABCeq\x\to(Y0)eq\x\to(Y1)eq\x\to(Y2)eq\x\to(Y3)eq\x\to(Y4)eq\x\to(Y5)eq\x\to(Y6)eq\x\to(Y5)eq\x\to(Y7)×1×××111111110××××1111111110000011111111000110111111100101101111110011111011111010011110111101011111101110110111111011011111111110如选用共阴极数码管,则74LS138与LED接口方法如图2.6所示。图2.674LS138与LED连接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占空比来实现的,模块主要由单片机和ADC0808组成。根据电源电压(市电压)利用相关公式并通过调节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)功率调节与控制如电路图2.9所示,市电的交流电源经桥式整流器变换为直流电,再经电压谐振变换器变换成频率为20—40KHz的交流电。桥式整流器BR1(见电源电路)的将市电的工频电源变换为单向脉动的直流电,通过加热线圈L1、二极管D5-D9和功率管Q3-Q10等构成电压谐振变换器。二极管D8、D9的作用是为部分谐振电流提供通路,保护功率开关管。功率管是电压谐振变换器的主开关。Q3-Q6将PWM(PWM信号由单片机C51的P3.4口输出)进行信号放大,Q7-Q9相当于一个功率开关(用Q表示)。当主开关Q导通时,使直流电压加在L1上,L1中的电流由开始按指数规律上升,通过Ll向负载传输能量,L1发热,同时,Ll中也储存能量。当主开关Q关断后,Ll中的能量向Cl中转移而发生谐振。通过调节RV1转轴或滑柄,改变动触点在电阻体上的位置,则改变了动触点与任一个固定端之间的电阻值,来确定要输出的PWM占空比[5]。最后用软件具体实现时,是用PWM信号来控制负荷电流,即可自由调节和控制功率。由PWM信号得到的比较电压恒定,而电流负反馈信号随输出功率变化。当输出功率大于设定功率时,得到低电平的控制电平,输出窄脉冲;当输出功率小于设定功率时,得到高电平的控制电平,输出宽脉冲。这样,就达到了按设定的功率稳定输出的目的。功率控制电路设计如图2.9:图2.9功率控制电路图2.5温度自动控制模块温度控制模块包括定温设置即电磁炉保温,调温和上、下限控制。定温设置通过调节电位器(RV1)的“↑”、“↓”进行设置定温的大小,按一下“↑”即温度值加1,按一下“↓”即温度值下降1。本系统可以在温度限制范围内无限级选择要设置的温度大小,设定后,系统自动处于保温状态。调温时,同样可以通过调节RV1的两个键改变RV1电阻大小,经A/D0808转换后输出温度[5],温度变化为每级2~3度。温度上、下限控制:若温度高于上限或低于下限则自动报警,同时超温警示灯亮。本次设计温度上限为250度,下限为70度。当温度达到250度或低于70度时,峰鸣器会自动发出“B——”的报警声,同时超温(红)灯亮。温度控制电路设计如图2.10。图2.10温度控制电路图2.6显示模块本次设计显示分为数码管显示和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.7保护电路在实际生活中,受多种因素的影响往往会出现市电过压、欠压现象,因此,作为一种家用烹饪电器,其具有相应的保护功能。如图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.8按键模块按键设计如图2.13所示,图2.13按键设计图其中按键功能为:K4:定时设置,起始时间为00:00,设置首先按一下K4,然后按其他键设置定时时间;K1:用来设置定时时间的时,设置小时每按一下,时钟加一;K2:设置定时的分钟,每按一下,分钟加一;K3:定时设定确认键,设置完后按一下K3确认并退出。RV1的“↑”、“↓”键分别控制RV1阻值增加、减小,它主要有控制系统两大模块即温度和功率模块,而且都是通过控制RV1的电阻来控制模块功能。在温度控制中,调节RV1的“↑”、“↓”键改变其阻值经A/D转换实现控制;在功率控制中,调节RV1的“↑”、“↓”键改变其阻值经CPU输出改变PWM的输出占空比则可实现功率控制。2.9报警模块利用程序来控制单处机某个口线的“高”电平或“低”电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”、“低”电平的持续时间,就能改变输出频率,从而改变音调。系统报警信号由单片机P3.4口接入扬声器,有报警信号输入时扬声器发出“B——”的声音。系统产生报警信号的情况:(1)当定时时间达到时;(2)当温度上限或下限达到时;(3)当系统检测到无锅时。报警电路由一个扬声器驱动电路[8]和一个扬声器组成。报警电路如图2.14:图2.14报警电路图2.10电源电路电源是整个系统的能量来源,它直接关系到系统能否运行。在本系统中单片机、数码管显示、定时、报警等电路需要5V的电源,因此电路中选用稳压芯片7805,其最大输出电流为1.5A,能够满足系统的要求,其电路[9][10]如图2.15所示。图2.15电源电路图第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/DA/D转换流程如图3.3所示,首先系统自动转换复位,启动A/D转换,将模拟值通过ADC0808转换为具体可视化数字,并可以通过数码管显示出来。本次设计将温度和压力转换为数值。程序代码见附录Ⅰ。转换复位转换复位启动转换允许转换输出读转换结果有转换结束信号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内部定时器中断如图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定时功能的实现涉及到两个方面:时间设定和是否达到设定时间判别与相应处理。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行报警判别。译码显示电路将“时”、“分”计数器的输出送到七段显示译码驱动器译码驱动,通过八位七段LED显示器的低四位显示出来。电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动扬声器发声实现报警。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”显示数字进行校对调整。程序代码见附录Ⅰ。其流程图如图3.7所示:定时判别处理时十、个位,分十定时判别处理时十、个位,分十、个位改变了设置定时标志清除定时标志设置了定时?当前时间是设定时间?中断返回NYYN初始化初始化显示计时调时定时修改值读键有报警?=定时值判断报警标志报警YYNN(b)图3.7定时控制子程序流程图3.6温度控制程序流程温度控制流程图如图3.8所示,温度控制道先进行设温度初始化unsignedcharm_btTemp,启动A/D转换。读ADC0808(每250毫秒读一次)数据标志bitm_bReadData=0,判断是否有温度调整,延时并显示。程序代码见附录Ⅰ。设初值设初值开始启动A/D转换是否调整?调上限调下限显示中断完毕?开始设定温度值显示温度值延时退出是否否是图3.8温度控制流程图3.7基本显示模块流程基本显示模块设计的重点是由显示代码取得相应的段码,显示段码数据的并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,用LED数码管代替显示器代替指针显示。程序代码见附录Ⅰ。3.7如图3.9所示:将16将16进制时分数据转化为BCD显示代码关显示以免显示抖动关显示以免显示抖动通过P2口将时分数据传入数码管通过P2口将时分数据传入数码管打开显示打开显示图3.9显示时间流程图3.其流程图如图3.10开始开始读取温度数据分配温度高低位调用转换子程序调温了吗显示已调温度NY显示当前温度返回 图3.10温度显示流程图3.8报警模块流程3.其程序流程图如图3.11,程序代码见附录Ⅰ。报警程序入口报警程序入口调用定时报警标志位置0标志位置1当前时间与设定时间相同?报警程序返回NY图3.11定时报警程序流程图3.8超温报警入口超温报警入口标志位清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.1所示:图4.1系统仿真图4.2系统调试系统调试主要是在电路原理图仿真过程中出现的系统功能、仿真结果的性能误差分析,可从系统模块进行调试各分析。4.2.1定时模块的调试主要针对的是时间准确度,本次设计电路图在仿真时出现“SimulationisnotrunninginrealtimeduetoescessiveCPUload”的警告,使系统时间比标准时间要慢,例如要按按键时更使系统时间变慢;经过多次实验,最终通过调整软件定时时间改善这一不足。该模块的误差还受晶振自身的误差影响,晶振的误差约为0.0001~0.000001。在软件的编程过程中所产生的误差比较小,在重装初值的过程中大概需要约8个机器周期,但在程序开始对定时器赋初值时,多加了8个机器周期,减小了这方面的误差。另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。4.2温度和功率控制模块主要由电位器RV1电阻体电阻的大小和市电电压决定。系统启动后,调动RV1的弹片或点击RV1的“↑”、“↓”即可改变电阻的大小,通过A/D转换可从数码管显示中看到温度大小变化;系统要保温时,则可将RV1弹片打到要恒温的温度点即可。当温度达到系统预设的上、下限时超温警示灯亮并报警。其温度上、下限可通过程序中设定。在调试过程中,由于RV1在工作中会发热,造成较大的误差,其影响不可忽视,为减少此误差可在电磁炉内部设置风扇模块;由于现实生活中不可避免的发生电压不稳定的情况,在电压变化太大的时候,调节RV1时输出的PWM占空比会产生偏差,功率控制误差也相继变大。因此,设计可以加入稳压模块以减小误差。4.2.3无锅检测和保护模块本次设计中的无锅检测功能通过电流检测电路实现,在系统仿真时,通过系统软件设定,系统检测为无锅时无锅警示灯亮。软件部分很容易实现,简化了电路,提高了控制的快速性和准确性。保护电路通过采用比较器检测电压,超出预定值时报警,并结合软件设计实现保护功能,误差较小但是电路较复杂,因此还需要进一步完善。4.2.4报警模块调试该模块调试主要是检查喇叭报警时有无警音,警音持续时间的调整。仿真时初现的问题有:(1)没有警音,只是振动一下。(2)警音时间为一分钟,对仿真来说过久。通过实验得到解决的办法:(1)将报警音产生的延时时间缩短。(2)将报警音持续时间缩短。以上两个解决办法都是在程序里改动实现的。本次设计,采用Keil集成调试软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。仿真部分采用Proteusprofessional7.4软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。在完成本设计的过程中,注意力主要集中在编程、电路调试上。合理地运用软件设计模块电路可以节省很多功夫,但完全照搬也不能达到预想的效果,因为实际参数无法与设计精确匹配,因此查阅了大量相关资料,包括查阅相关书籍和网上的资料,获得了一些相关信息尽量达到指标要求。第5章PCB板设计与制作5.1PCB板设计5.1.1在绘制电路板之前,首先要规划好PCB板板面,定义板框,定义板框主要包括:定义电路板的层数、电路板的外形尺寸和形状等。本系统使用的是双面板,在顶层和底层都要进行布线[11]。5.1.载入网络表和元件封装:执行[Design][LoadNets]命令打开载入网络表对话框,在NetlistFile选项中,输入所要载入的网络表文件名及路径,网络表没有错误后,按[Execute]载入网络表。载入网络表后,电路板中会出现由元件封装和连接关系组成的一些凌乱的图形散布在四周。5.1.设计PCB板时布局是十分重要的,合理的布局,不但能给布线工作带来方便,而且也可以使系统更加稳定、可靠。对PCB板布局,首先要考虑PCB尺寸大小,再确定特殊元件的位置。最后,根据电路的功能单元,对电路的全部元器件进行布局。在确定特殊元件的位置时应遵守以下原则:(1)易受干扰的元件不能相互挨得太近,输入和输出元件应尽量远离。时钟晶振特别容易受到外界干扰,所以应该将时钟晶振靠近IC时钟输入端。(2)某些元器件或导线之间可能有较高的电位差,应加大它们之间的距离,以免放电引出意外的短路。带高电压的元器件应尽量布置在调试时手不易触及的地方。(3)考虑散热问题。热敏元件应远离发热元件。(4)按照电路的流程安排各个功能电路单元的位置,使布局便于信号流通,并使信号尽可能保持一致的方向。(5)以每个功能电路的核心元件为中心,围绕它来进行布局。元器件应均匀,整齐,紧凑地排列在PCB板上,尽量减少和缩短各元器件之间的引线和连接。(6)在高频下工作的电路,要考虑元器件之间的分布参数。一般电路应尽可能使元器件平行排列。这样,不但美观,而且装焊容易,易于批量生产。5.1.布线是的一个重要的组成部分,是完成电子产品设计的重要步骤。本设计的布线结果见附录,为了使布线的可靠性高,干扰小,工艺好,具体在布线上应该遵循以下原则:(1)当输入输出端的信号频率较高时,导线应尽量避免相邻平行。最好加线间地线,以免发生反馈藕合。(2)印制摄导线的最小宽度主要由导线与绝缘基板间的粘附强度和流过它们的电流值决定。当铜箔厚度为0.05mm、宽度为1~15mm时,通过2A的电流,温度不会高于3℃。因此,导线宽度为1.5mm可满足要求。对于集成电路,尤其是数字电路,通常选0.2~0.3mm导线宽度。当然,只要允许,还是尽可能要宽线。尤其是电源线和地址线。导线的最小间距主要由最坏情况下的线间绝缘电阻和击穿电压决定。对于集成电路,只要工艺允许,可使间距小至5~8mm。(3)印制导线拐弯处一般取钝角,而直角或锐角会影响电气性能。此外,尽量避免使用大面积铜箔,否则,长时间受热时,易发生铜箔膨胀和脱落现象。必须用大面积铜箔时,最好用栅格状。这样有利于排除铜箔与基板间粘合剂受热产生的挥发性气体。5.2PCB板制作5.2.1PCB打印 首先,打开绘制好PCB图,单击菜单栏中的“文件”,“打印设置”。弹出打印设置对话框,选择安装好的打印机型号,选择“Final”分层打印选项,在打印设置对话框下面有三个按钮:“Print”、“Options”、“Layers”。首先单击“Options”按钮,弹出打印设置选项对话框,勾上“Showhole”选项显示焊盘孔。再单击“Setup”按钮,在大小选项中选择A4。然后选择“Layers”板层选项,本次制作的是双层板,所以在“SignalLayers”信号层选项中选择“BottomLayer”、“TopLayer”项。再选择“MidLayerpads”项中的“Includeunconnent”包含没有连接选项,设置好后单击确定。注意要是打印双面板时,两面的图形要一起打印,由于打印机的热胀冷缩原理,使打出来的图形对称。再有打印双面板时,顶层要镜像打印。全部打印设置好后,单击“Print”,打印机开始打印。5.2.2PCB转印 转印按照以下步骤:将准备好的130mm×120cm的双面敷铜板用水磨沙布把敷铜板的敷铜面打磨干净,冲洗干净,再晾干。接上热转印机的电源,打开热转印机,然后视环境温度设置转印温度,本次为120度左右。把打印好的转印纸光滑的一面对上敷铜板的敷铜面,要注意四边留出的边宽度一样,对好后把要送进转印机转印的开头的一边打折,最好用双面胶对它进行处理。在制作双面板时特别要注意,BottomLayer和TopLayer一定要对齐,固定要准确,否则无法钻孔。当热转印机的温度上升到开始设置的温度的时候,小心地把打了折的一面慢慢送进热转印机开始转印,这时手慢慢的用力往里推,要推到敷铜板确定已经进去时才放开手。转印好后,要等铜板上温度降低以后才能撕掉转印纸,否则将会使打印在上面的线条一并撕掉,但温度也不要太低,温度太低敷铜板和纸就贴得比较紧,很难撕掉,效果也明显不好。5.2.3PCB蚀刻 转印好的线路板必须经过检查、修板,直至确认无误后才可以进行腐蚀。蚀刻具体步骤如下:首先,配置腐蚀液,用盐酸和双氧水按3:1比例进行配置。可以用塑料盆或陶瓷盆盛腐蚀液,最好用玻璃盘装盛腐蚀液进行腐蚀,以便随时观察腐蚀情况。把要腐蚀的线路板浸没在溶液之中,来回晃动线路板以加快腐蚀速度。腐蚀操作时要特别注意掌握蚀刻时间。时间太长,腐蚀过久会把线路板的线条弄细甚至全部腐掉,造成废品。这点在蚀刻的线条较细时尤为重要。但是,如果蚀刻时间太短,则有些应该烂掉的铜箔还没有完全蚀刻掉也会影响线路板的质量,增加修板的工作量。一般来说,新配置的腐蚀液的蚀刻时间约5分钟左右。较陈旧的溶液须延长,但若腐蚀时间超过2小时,则必需更换新液。第二,腐蚀完毕后用清水冲洗,之后再用松香的酒精溶液清洗,彻底把腐蚀液去掉,增加板子的可焊性。5.2.4PCB钻孔 腐蚀后的PCB板就能清楚的看到线条的走向,接下来要做的就是钻孔,线路板上的孔眼决定了焊接元件的位置,直接关系到安装元件的质量,因此要求按实际元件引脚的大小或图纸所标示尺寸钻空。孔眼必须钻得正,不能有偏歪的现象,否则将为安装元件带来困难。特别是在钻多脚元件及引脚较大的元件时更要注意。钻好孔以后我们需要用细纱布将板面打磨光滑,这样可以去掉焊盘的毛刺和PCB线表留下来的墨痕,我们可以利用细纱布边冲水边打磨。在打磨过程中不可以太用力,否则会将铜线条擦掉。5.2.5PCB板表面处理 为了提高焊接的质量和速度,避免虚焊等缺点,应该在装配以前对焊接表面进行可焊性处理—镀锡。其中镀锡有以下工艺要求:(1)待镀表面应该清洁。(2)温度要足够高,被焊金属表面的温度,应该接近焊锡熔化时的温度,才能与焊锡形成良好的结合层。在这里我们用烙铁接近元器件引脚对其进行回热。(3)要使用有效的助焊剂,在焊接电子产品时,广泛使用酒精松香水作为助焊剂。结束语这次设计采用单片机开发设计使用的传统方法,经历了从系统问题的提出—系统可行性分析—总体的功能模块设计—程序设计—最后到程序的实现仿真,达到设计要求。设计过程中,首先在方案选择与论证时,我查找了许多相关资料,通过比较,最终确定选用单片机作控制核心;鉴于AT89C51的功能强大且我对该芯片比较熟悉,所以选用AT89C51作为本设计的主芯片。然后,对各功能模块进行设计,在设计无锅检测模块时,我遇到了难题:是用电流检测电路还是用传感器电路。传感器电路简单,但是检锅性能不好,不能识别适当的锅具,而且检测误差相对较大。电流检测电路易实现,易实现功能控制,但是电路相对稍复杂一些。考虑到整个系统的功能控制和可操作性,最终确定电流检测电路。系统的定时模块采用芯片内部定时和外部中断实现。温度控制模块采用ADC0808作为转换器;鉴于电磁炉的温度比较高,常用的DS18B20控制温度在-55℃到+125℃范围内,因此用用ADC0808和电位器结合控制。最后,在程序设计时,鉴于实际应用多采用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>//ADC0808的引脚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;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 5 We're family (说课稿)-2024-2025学年外研版(三起)(2024)英语三年级上册
- 1《学习伴我成长》(说课稿)-部编版道德与法治三年级上册
- Unit 2 Different families Part B Let's talk(说课稿)-2024-2025学年人教PEP版(2024)英语三年级上册
- 2《用水计量时间》说课稿-2024-2025学年科学五年级上册教科版
- 2025产品购销合同样书
- 2023九年级数学下册 第25章 投影与视图25.1 投影第2课时 正投影说课稿 (新版)沪科版001
- 2025城市民用户燃气工程实施合同书范本范文
- 2025妇女发展监测评估项目工程合同管理
- 2025合同模板合伙人利润分配协议范本
- 2024-2025学年高中政治 第3单元 第6课 第1框 源远流长的中华文化说课稿 新人教版必修3001
- 2025年上半年中煤科工集团北京华宇工程限公司中层干部公开招聘易考易错模拟试题(共500题)试卷后附参考答案
- 特朗普就职演说全文与核心要点
- 2025年教科版新教材科学小学一年级下册教学计划(含进度表)
- 北京市海淀区2024-2025学年五年级上册语文期末试卷(有答案)
- 《亚太经合组织》课件
- 2024年高考政治必修三《政治与法治》常考材料题考点梳理汇编
- 《会展概述》课件
- 《郴州市总体规划》课件
- 【高中物理竞赛大全】 竞赛3 电磁学 50题竞赛真题强化训练解析版-高考物理备考复习重点资料归纳
- 再见2024你好2025展望未来
- GB/T 17395-2024钢管尺寸、外形、重量及允许偏差
评论
0/150
提交评论