51系列单片机闭环温度控制实验报告_第1页
51系列单片机闭环温度控制实验报告_第2页
51系列单片机闭环温度控制实验报告_第3页
51系列单片机闭环温度控制实验报告_第4页
51系列单片机闭环温度控制实验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WordWord资料WordWord资料综合实验报告题目:51系列单片机闭环温度控制班级: 小组成员: 指导教师: 完成时间: 2015年11月 、实验名称:51系列单片机闭环温度控制实验 基于Protuse仿真实验平台实现基本情况:.实验项目组长:.小组成员:在舁厅P姓 名班级学号分工系数123.具体分工:负责程序编写,主要负责查询资料与实验报告撰写。.实验要求:①设计硬件电路:温度检测:采用热电偶或热电阻温度给定:采用电位器进行模拟电压给定, 0——5VAD转采用12位转换显示采用8位LED,或者LCD1602显示键盘4X4,PID等参数通过键盘设置。②软件控制算法:数字PID,参数在线修改。

显示窗口:显示温度的设置值SV、温度的实际值PV实际温度值,温度峰值、峰值时间等通过用口上传到上位机 (选做)二、实验内容1、系统基本原理(实验原理介绍)根据实验要求,温度闭环控制,即对加温速度、超调量、调节时间级误差参数,选择PID控制参数级算法,实现对温度的自动控制。闭环温度控制系统原理图如下:计算机PID数字输出计算机PID数字输出温控测温2、PID算法的数字实现本次试验通过8031通过OVEN是模拟加热的装置,加一定的电压便开始不停的升温,直到电压要消失则开始降温。仿真时,U形加热器为红色时表示正在加热,发红时将直流电压放过来接,就会制冷,变绿。T端输出的是电压,温度越高,电压就越高。8031对温度的控制是通过可控硅调控实现的。可控硅通过时间可以通过可控硅控制板上控制脉冲控制。该触发脉冲想8031用软件在P1.3引脚上产生,受过零同步脉冲后经光偶管和驱动器输送到可控硅的控制级上。偏差控制原理是要求对所需温度求出偏差值,然后对偏差值处理而获得控制信号去调节加热装置的温度。PID控制方程式:U=K(E [edt-I-7-式中e是指测量值与给定值之间的偏差TD微分时间T积分时间KP调节器的放大系数将上式离散化得到数字PID位置式算法,式中在位置算法的基础之上得到数字PID增量式算法:=3g-R+ +3曰-2*+*)3、温度控制软件设计程序结构图如下:

程序结构OO程序结构OO4、硬件电路设计在温度控制中,经常采用是硬件电路主要有两大部分组成:模拟部分和数字部分,对这两部分调节仪表进行调节,但都存在着许多缺点,用单片机进行温度控制使构成的系统灵活,可靠性高,并可用软件对传感器信号进行抗干拢滤波和非线性补偿处理,可大大提高控制质量和自动化水平;总的来说本系统由四大模块组成,它们是输入模块、单片机系统模块、计算机显示与控制模块和输出控制模块。输入模块主要完成对温度信号的采集和转换工作,由温度传感器及其与单片机的接口部分组成。 利用模拟加热的装置来控制温度。该闭环温度控制系统采用AT89S51八位机作为微处理单元进行控制。采用4X4键盘把设定温度的最高值和最低值存入单片机的数据存储器, 还可以通过键盘完成温度检测功能的转换。温度传感器把采集的信号与单片机里的数据相比较来控制温度控制器。5、电路原理图1、仿真完整电路图2、12位AD转换模块C7WuF“EXT:C6AINOVAnAIN101AIN2D2AIN3DQ[>4REF&5CAPt>6&7PAR/SEF&VTE日U空csR/CA6WD1公心N3U3ADS78M<TEXT>3、OVEN模型及信号调理电路2S jl<]BYTE——D>eusrr- <| R/C25 .CONTCPWRt)MAd4、单片机主电路TEXT]U3^£S782401234567DDDDDDDDgooQOQ-oswnyt1FFEE-O-O-OAV3LUC;।F心FWM雨1017613C3l4rpwlrow2row3row400000000•h1ML尸B.lLUMIUU-DIF0.2/AD2XTAL?PQ.3/AD3PG.4/AD4PO.6JWD5PO.6iftD6RSTPO.7JAD7P2.0/ASP2.1/A9PZ2捐1。PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P1B/A14ftorzP2.7W15rj.O/RXDP117T2EXP3ifixnP1,2P3.2ANT0FL3rJ,JflrM11P1.4P3.4frt)P1.5p.5mP1.6P3.6/W=!P1『P37TOAT99C52CLOCK=110592MHz9o-1工JJ312J45G7'AQ—Jo—o—JJcJu1234567oooooooo1L11TEXT*^12K一R10WordWord资料WordWord资料floatpc=090.0;floatic=0.0;floatpc=090.0;floatic=0.0;floatdc=5.0;floate1=0;floate2=0;charRX_Data[5]={0};intmain(){timer_init();lcd_init();while(1){ADCRead();keyscan();三、实验结果分析(含程序、数据记录及分析和实验总结等,可附页)1、51系列单片机闭环温度控制实验程序Main.c#include"includes.h"char measure_temperature[6]{'+','0','0','0','C','\0'};charsetting_temperature[6]{'0','1','0','0','C','\0'};charcode_table[16]={'7','8','9','T','4','5','6','P','1','2','3','I','+','0','-','D'};charPv[6]={'P','0','9','0','','\0'};charIv[6]={'I','0','0','0','','\0'};charDv[6]={'D','0','0','5','','\0'};intPWM_Period=100;intPWM_Hight=1;intPWM_Hights=50;shortm_temperature=0;shorts_temperature=100;Data_update();Data_update();LCD_Display(0x80+0x4A,Dv);return0;LCD_Display(0x80+0x08,setting_tereturn0;LCD_Display(0x80+0x40,Pv);LCD_Display(0x80+0x45,Iv);PWM.c#include"includes.h"PWM_Period--;ucharT_updatePWM_Period--;ucharP_update=0;if(PWM_Period==0)ucharI_update=0;ucharP_update=0;if(PWM_Period==0)ucharI_update=0;ucharD_update=0;PWM_EN=1;PWM_Period=100;PWM_Hights=PWM_Hight;voidT0_time()interruptPWM_Hights=PWM_Hight;PWM_Hights--;if(PWM_Hights==0)voidpid()PWM_EN=0;PWM_Hights=1;staticlongsum=0;e2=e1;e1s_temperature-m_temperature;sum+=e1;if(e1>20){PWM_Hight=100;}elseif(e1<-20){PWM_Hight=1;}else{voidInterrupt_T1()interrupt3{staticintcount=0;TH1=0x3C;//定时50msTL1=0xB0;count++;if(count==20){pid();count=0;}}voidupdate_Temp()voidupdate_Temp(){shortj=0;shorttmp=0;for(j=1;j<=3;j++){tmpPWM_Hight=PWM_Hight+pc*(e1+ic*sum+dc*(e1-e2));}if(PWM_Hight>100)PWM_Hight=100;elseif(PWM_Hight<1)PWM_Hight=1;}tmp*10+(setting_temperature[j]-'0');////循环}if(setting_temperature[0]=='-')tmp=-tmp;s_temperature=tmp;}voidupdate_Pv(){shortj=0;shorttmp=0;for(j=1;j<=3;j++){tmp=tmp*10+(Pv[j]-'0');}pc=tmp;}voidupdate_Iv(){shortj=0;shorttmp=0;for(j=1;j<=3;j++)tmp=tmp*10+(Iv[j]-'0');}ic=tmp;}voidupdate_Dv(){shortj=0;shorttmp=0;for(j=1;j<=3;j++){tmp=tmp*10+(Dv[j]-'0');}dc=tmp;}voidData_update()检查每一次 T、PID值是否有修改{if(T_update==1){update_Temp();update_Iv();I_update=0;update_Iv();I_update=0;}elseif(D_update==1){update_Dv();D_update=0;}}TH0=0x9C;TL0=0x9C;TH1=0x3C;//定时50msTL1=0xB0;TR0=1;//运行定时器 0TR1=1;//运行定时器 1PT0=1;//T0中断优先级高T_update=0;}elseif(P_update==1){update_Pv();P_update=0;}elseif(I_update==1){Timer.c#include"includes.h"voidtimer_init(){EA=0;//关闭总中断ET0=1;//ET0用于PWM产生ET1=1;//ET1测速计时TMOD=0x12;//T0:工作方式2 T1:工作方式1EA=1;//打开总中断ADS7824.c#include"includes.h"ADS7824.c#include"includes.h"voiditoa(shortnum,charstr[]){inti=3;num=(num/2047.0)*999.0;for(i=3;i>0;i--){str[i]=(num%10)+'0';num=num/10;}str[5]='\0';}voidADCRead(){shortnum=0;//无符号16位RC=0;//启动转换RC=1;//启动读取while(BUSY==0);num=0;BYTE=0;//读取高4位num=(num|P1)<<8;num=num&0x0F00;BYTE=1;//读取低8位num=num|P1;//12位数据完整取好if((num&0x0800)==0x0800){measure_temperature[0]='-';num=num&0xF7FF;num=(numA0x07FF)+1;m_temperature-((num/2047.0)*999.0);}elseitoa(num,measure_temperature);elseLCD_Display(0x80,measure_tempmeasure_temperature[0]='+';measure_temperature[0]='+';erature);m_temperature(num/2047.0)*999.0;RC=0;Delay.c#include"includes.h"voiddelay_ms(intn)//1ms延时uinti=0,j=0;for(i=0;i<n;i++)for(j=0;j<123;j++);Display.c#include"includes.h"写命令函数 单片机给1602写命令voidlcd_wcom(ucharcom)//1602rs=0;//选择指令寄存器rw=0;//选择写voidrw=0;//选择写voidLCD_Display(uintlocation,P0=com;//把命令字送入delay_ms(1);en=1;//使能线电平变化,命令送入1602的8位数据口delay_ms(1);en=0;}voidlcd_wdat(uchardat)//1602写数据函数{rs=1;//选择数据寄存器rw=0;//选择写P0=dat;//把要显示的数据送入delay_ms(1);en=1;//使能线电平变化,数据送入1602的8位数据口delay_ms(1);en=0;}ucharDisplay_Part[]){inti=0;lcd_wcom(location);for(i=0;Display_Part[i]!=0;i++){lcd_wdat(Display_Part[i]);delay_ms(1);}}voidlcd_init()//1602初始化函数{lcd_wcom(0x38);//8位数据,双列,5*7字形lcd_wcom(0x0c);//开启显示屏,关光标,光标不闪烁lcd_wcom(0x06);//显示地址递增,即写一个数据后,显示位置右移一位lcd_wcom(0x01);//清屏16;16;LCD_Display(0x80+0x08,setting_temperature);Keyboard.c#include"includes.h"voidkeyscan(){uintkeyno=16;uchartemp=0;uchari=0;staticcharupdate_flag=0;staticintupdate_index=0;charkey_code=0;P3=0x0F;if(P3!=0x0F){P3=0x0F;//delay_ms(1);temp=P3;i=tempA0x0F;LCD_Display(0x80+0x40,Pv);LCD_Display(0x80+0x45,Iv);LCD_Display(0x80+0x4A,Dv);}switch(i){keyno=0;break;keyno=1;break;case4:keyno=2;break;case8:keyno=3;break;default: keyno=//无键按下}P3=0xF0;temp=P3;//delay_ms(1);i=(temp>>4)A0x0F;switch(i){update_index=0;update_index=0;T_update=1;}+= }elseif(update_flag==2){key_codecode_table[keyno];Pv[1+update_index]=key_code;update_index++;if(update_index==3)= {update_flag=0;update_index=0;P_update=1;}}elseif(update_flag==3){key_codekeyno+=0;break;keyno+=4;break;case4:keyno+=8;break;case8:keyno12;break;}while(P3!=0xF0);}if(keyno>=0&&keyno<=15){if(update_flag==1){key_codecode_table[keyno];setting_temperature[update_index]=key_code;update_index++;if(update_index==4){update_flag=0;WordWord资料WordWord资料update_indexupdate_index=0;code_table[keyno];Iv[1+update_index]key_code;update_index++;if(update_index==3){update_flag=0;update_index=0;I_update=1;}}elseif(update_flag==4){key_codecode_table[keyno];Dv[1+update_index]=key_code;update_index++;if(update_index==3){update_flag=0;D_update=1}}else{s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论