单片机原理与应用课程设计说明书退火炉温度控制系统 .doc
郑州航空工业管理学院单片机原理与应用课程设计说明书 2007 级 电气工程及其自动化 专业0706073 班级题 目 退火炉温度控制系统 姓 名 学号 指导教师 职称 讲师 二 一O 年 12 月 21 日摘要:目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。近年,由于CHMOS技术的进小,大大地促进了单片机的CMOS化。CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。这也是今后以80C51取代8051为标准MCU芯片的原因。因为单片机芯片多数是采用CMOS(金属栅氧化物)半导体工艺生产。CMOS电路的特点是低功耗、高密度、低速度、低价格。采用双极型半导体工艺的TTL电路速度快,但功耗和芯片面积较大。随着技术和工艺水平的提高,又出现了HMOS(高密度、高速度MOS)和CHMOS工艺。CHMOS和HMOS工艺的结合。目前生产的CHMOS电路已达到LSTTL的速度,传输延迟时间小于2ns,它的综合优势已在于TTL电路。因而,在单片机领域CMOS正在逐渐取代TTL电路。关键词:热电偶 A/D转换器 低温报警 高温报警退火炉温度度控制系统的基本原理退火炉使用电热丝加热,温度范围为01275,炉内温度值经热电偶检测后,经变送器变成05V范围内的电压信号送A/D转换器转换成对应的数字量。数字量经数字滤波后送入CPU作为本次采样值。把测量到的温度值与设定值进行比较来决定是否启动电热丝加热,若低于600则启动电热丝加热,若高于900则停止加热以达到控制温度的目的。 我的创新点:在任务要求的完成的基础上,增加以下功能,如果温度低于600,则亮低温报警灯,响报警器,并启动加热电阻自动加温,直至达到设定的温度。加热过程中,若温度高于600则停止警报声,若温度达到设定值,灭低温报警灯,数码管显示加热后的温度值。若温度高于900,响高温警报,亮高温报警灯,并且驱动电扇,令过高的温度降下。若温度值处在正常温度状态,其功能如上,不亮灯,不响警报,数码管显示当前的温度值。基本要求:1、选用8088、适当的存储器、A/D转换器及其它接口芯片完成相应的功能。2、每隔一秒钟对炉温连续采集三次经滤波后作为本次采样的有效值。3、判断温度是否高于上限值900或低于下限值600,如超出该范围则分别用红、绿发光二极管和蜂鸣器报警。4、把采集来的温度值转化成工程量在LED显示器上显示。5、画出详细的硬件连接图。6、给出程序设计思路、画出各程序的流程图。7、给出地址分配表。8、给出所有程序清单并加上必要注释。主要芯片介绍这次课程设计要用到的主要芯片是AT89C51,另外需要模数转换器ADC0808,以及一些零器件(具体见附录2元件清单)。AT89C51芯片如下:主要特性有:1、与MCS-51 兼容2、4K字节可编程闪烁存储器3、寿命:1000写/擦循环4、数据保留时间:10年5、全静态工作:0Hz-24Hz6、三级程序存储器锁定7、128*8位内部RAM8、32可编程I/O线9、两个16位定时器/计数器10、5个中断源11、可编程串行通道12、低功耗的闲置和掉电模式13、片内振荡器和时钟电路引脚功能有:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。结构特点:8位CPU;片内振荡器和时钟电路;32根I/O线;外部存贮器寻址范围ROM、RAM64K;2个16位的定时器/计数器;5个中断源,两个中断优先级;全双工串行口;布尔处理器;ADC0808如下:ADC0809是采样频率为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。主要特性有:1、8路8位AD转换器,即分辨率8位。2、具有转换起停控制端。3、转换时间为100s4、单个5V电源供电5、模拟输入电压范围05V,不需零点和满刻度校准。6、工作温度范围为-4085摄氏度7、低功耗,约15mW。引脚功能有:IN0IN7:8路模拟量输入端。2-12-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。START: AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC: AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一5V。GND:地。其主要的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。数码显示管如下:本次设计用四位数码管,各个发光二极管的阴极连在一起的称为共阴极显示器,发光的相应段必须接高电平。如果要显示数字“2”,只要a b g e d 段发光,而c f dp 段不发光即可。也就是说,只要在a b g e d 段加上高电平“1”,而c f dp 段加上低电平“0”,即可完成数字“2”的显示。可见,只要改变加到各段阳极上的代码,就可以显示不同的字符或数字,这样的代码称为段码。如下表所示七段LED显示器在共阴极连接时显示的数字与其对应的段码。字符gfedcba段码(H)001111113F1000011006210110115B310011114F4110011066511011016D611111017D7000011107811111117F911011116F设计方案这次设计的实现方案是,采用AT89C51作为主芯片。用滑动变阻器的组织改变ADC0808数模转换器IN0的电压值,然后通过ADC0808将05V范围内的电压信号进行A/D转换,转换成对应的数字量,然后送入主芯片的P1口。主芯片的P0口接数码显示管,本实验只显示数字故用LED,P2.0P2.3口作为四个LED的片选信号。AT89C51的其他一些管脚用于控制从芯片的一些控制信息。其框图如下:调解变阻器的阻值,得到变化的电压ADC0808将模拟电压值转换为数字量AT89C51判断是否低于温度下限或高于温度上限软件分析程序主芯片控制数码管显示当前温度值硬件设计用protues7.4实现对这次课程设计的模拟仿真,其硬件电路的原理图如下:工作原理:通过调解RV1的阻值大小,改变ADC0808的IN0口电压,然后得到其数字量,并连接到89C51的P1口。主芯片得知转换完成后,数据通过P0口将所得数据送入数码管显示,P2.0至P2.3控制4个数码管的显示。主芯片将得到的数据与上下限对比,若正常则只显示数据,数据稳定不闪烁,无任何报警现象。若大于上限则通过P3.7控制响警报,数据闪烁,此时程序中控制P3.0置高温报警灯亮,并控制风扇转动。若小于下限,数据闪烁,此时P3.1置低温报警灯亮,响警报,P3.2置加热电阻开始工作。温度有低温开始向上加,加到大于温度下限时,停止警报。加到预设值时,暗低温报警灯。软件设计软件的流程框图如下:滑动变阻器模拟水温高低AD08080模数转换,输出温度数字值AT89C51读取AD0808转换后的值判断是否低于温度下限判断是否高于温度上限普通数值转换,数码管显示当前温度亮加热灯,开低温报警器加热数值转换,数码管显示当前温度亮保温灯判断是否达到加热上限主要程序如下:LED_0EQU 30HLED_1 EQU 31HLED_2 EQU 32HLED_3 EQU 33H ;各显示数码管ADCEQU35HTCNTAEQU36HTCNTBEQU37HL_TEMPEQU38H ;温度下限H_TEMP EQU 39H ;温度上限FLAGBIT00HH_ALMBITP3.0L_ALMBITP3.1SOUNDBITP3.7CLOCKBITP2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.7H BIT P3.2 ;加热电阻ORG 00HSJMPSTARTORG0BHLJMPINT_T0ORG1BHLJMPINT_T1START:MOVLED_0,#00HMOVLED_1,#00HMOVLED_2,#00HMOV LED_3,#00HMOVDPTR,#TABLEMOV H_TEMP,#180 ;180*5=900,最高温900度MOV L_TEMP,#120 ;120*5=600,最低温600度MOVTMOD,#12H ;定时计数器方式控制寄存器MOVTH0,#245 MOVTL0,#0 ;计数器0MOVTH1,#252 MOVTL1,#24 ;计数器1MOVIE,#8aH ;中断允许寄存器CLRCSETBTR0 ;启动计数器0,为ADC0808提供时钟WAIT:SETBH_ALMSETBL_ALMSETB HCLR STSETB STCLR ST;启动转换 JNB EOC,$SETB OE MOV ADC,P1;读取AD转换结果CLR OEMOVA,ADCSUBBA,L_TEMP ;判断是否低于下限JCLALMMOVA,H_TEMPMOVR0,ADCSUBBA,R0;判断是否高于上限JCHALMCLRTR1LJMPPROCLALM:;低温报警灯亮CLRL_ALMSETBTR1 ;开启计数器1,引起中断CLR H ;启动加热电阻CLRFLAGLJMPPROC1HALM: ;高温报警灯亮CLRH_ALMSETBTR1SETBFLAGLJMPPROCPROC:MOV A,ADC ;数值转换MOV B,#100DIV ABMOV R2,AMOV A,BMOV B,#10DIV ABMOV R1,AMOV R0,BMOV B,#5MOV A,R0MUL ABMOV B,#10DIV ABMOV R7,AMOV LED_0,B ;显示个位MOV B,#5MOV A,R1MUL ABMOV B,#10DIV ABMOV R6,AMOV A,BADD A,R7MOV LED_1,A ;显示十位MOV A,R2MOV B,#5MUL ABMOV B,#10DIV ABMOV R5,AMOV A,BADD A,R6MOV LED_2,A ;显示百位MOV LED_3,R5 ;显示千位LCALLDISPLJMP WAITPROC1:MOV R1,#15 LCALL TO1MOV R1,#15 LCALL T2 MOV R1,#15 LCALL T3 MOV R1,#15 LCALL T4 MOV R1,#15 LCALL T5 MOV R1,#15 LCALL T6 MOV R1,#15 LCALL T7 MOV R1,#15 LCALL T8 MOV R1,#15 LCALL T9 LJMP WAITINT_T0: CPLCLOCK ;提供ADC0808时钟 RETIINT_T1: MOVTH1,#252 MOVTL1,#24 CPLSOUND INCTCNTA MOVA,TCNTA JB FLAG,I1 ;判断是高温警报还是低温警报 CJNE A,#30,RETUNE;低温警报声响 SJMP I2I1: CJNE A,#20,RETUNE;高温警报声响I2: MOVTCNTA,#0 INCTCNTB MOVA,TCNTB CJNE A,#25,RETUNE MOVTCNTA,#0 MOVTCNTB,#0 LCALLDELAY2RETUNE:RETITO1: mov LED_3,#0 MOV LED_2,#0 MOV LED_1,#9 MOV LED_0,#9 LCALL DISP DJNZ R1,TO1 RET T2: MOV LED_3,#0 MOV LED_2,#1 MOV LED_1,#7 MOV LED_0,#4 LCALL DISP DJNZ R1,T2 RET T3: MOV LED_3,#0 MOV LED_2,#2 MOV LED_1,#8 MOV LED_0,#3 LCALL DISP DJNZR1,T3 RET T4: MOV LED_3,#0 MOV LED_2,#3 MOV LED_1,#3 MOV LED_0,#6 LCALL DISP DJNZR1,T4 RET T5: MOV LED_3,#0 MOV LED_2,#4 MOV LED_1,#8 MOV LED_0,#2 LCALL DISP DJNZR1,T5 RET T6: MOV LED_3,#0 MOV LED_2,#5 MOV LED_1,#6 MOV LED_0,#7 LCALL DISP DJNZR1,T6 RET T7: CLR TR1 MOV LED_3,#0 MOV LED_2,#6 MOV LED_1,#2 MOV LED_0,#4 LCALL DISP DJNZR1,T7 RET T8: MOV LED_3,#0 MOV LED_2,#7 MOV LED_1,#2 MOV LED_0,#7 LCALL DISP DJNZR1,T8 RET T9: MOV LED_3,#0 MOV LED_2,#8 MOV LED_1,#0 MOV LED_0,#0 LCALL DISP SETB HSETBL_ALMDJNZR1,T9 RETDISP: ;数码显示子程序 MOVA,LED_0MOVCA,A+DPTRCLRP2.3MOVP0,ALCALLDELAYSETBP2.3 ;显示数码管0,即个位MOVA,LED_1MOVCA,A+DPTRCLRP2.2MOVP0,ALCALLDELAYSETBP2.2 ;显示数码管1,即十位MOVA,LED_2MOVCA,A+DPTRCLRP2.1MOVP0,ALCALLDELAYSETBP2.1 ;显示数码管2,即百位MOVA,LED_3MOVCA,A+DPTRCLRP2.0MOVP0,ALCALLDELAYSETBP2.0 ;显示数码管3,即千位RETDELAY:MOVR6,#10D1:MOVR7,#250DJNZR7,$DJNZR6,D1RETDELAY2:MOVR5,#20D2:MOVR6,#20D3:MOVR7,#250DJNZR7,$DJNZR6,D3DJNZR5,D2RETTABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHENDPCB板效果图自制封装如下: 喇叭 封装 滑动变阻器封装PCB板图3D效果图调试效果图低于温度下限时:高于温度上限时:处于正常温度范围时:结论优点:如果温度低于600,则亮低温报警灯,响报警器,并启动加热电阻自动加温,直至达到设定的温度。加热过程中,若温度高于600则停止警报声,若温度达到设定值,灭低温报警灯,数码管显示加热后的温度值。若温度高于900,响高温警报,亮高温报警灯,并且驱动电扇,令过高的温度降下。若温度值处在正常温度状态,其功能如上,不亮灯,不响警报,数码管显示当前的温度值。缺点:温度由低温加到高温时,无法令数码管显示在预设温值,又会跳回到滑动变阻器所在的那个温度值。分析:在软件方面还是有欠缺,系统的设计并不是十分严密,更有待提高。设计的心得体会这次的课程设计让我学到很多,运用上个学期学到的单片机原理及接口技术的知识,通过自己的查阅资料与分析学习,大致上先了解芯片的大致功能,和单片机的编程语言。在一定程度上提高了自己的自学能力。在编程的过程中遇到了很多困难,通过询问老师以及同学,最终解决了大部分问题,问题的解决让我对芯片的加深了了解。经过多次实验与查阅,终于解决了八位机显示0至1275的问题。完成基本任务后,提倡创新,所以我想给这个退火炉加一个自动升温程序,实现在低于温度下限时用加热电阻实现对温度的加升。但实际的过程远没构思时简单,思维的不紧密正是我目前最欠缺的。与老师同学讨论后,发现了自己设计的系统存在缺陷,还仍有很大的改善空间。这次课程设计中,靠自己的努力解决了各个问题,这才是提升自己能力的最好方法。参考资料1 刘海涛 赵金波 晁阳 8051单片机C语言程序设计与实例分析,清华大学出版社,20092程勇 戚梅,微型计算机技术实验教程,北京航空航天大学出版社,2008元件清单:元件名数量说明封装说明AT89C511主芯片已封装 DIL40ADC08081转换模拟信号为数字信号已封装 DIL2830PF电容2已封装 CAP1010F 电容 1已封装 ELEC-RAD10晶振1已封装XTAL1810K电阻1已封装RES40220欧姆电阻2已封装RES404.7K电阻1加热电阻已封装RES180LED红,黄2报警显示封装LED四位显示1显示温度无喇叭1报警声音自制 如图3滑动变阻器RV11改变电压自制 如图4风扇1高温转动无