您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 51系列单片机闭环温度控制实验报告
成绩:重庆邮电大学自动化学院综合实验报告题目:51系列单片机闭环温度控制学生姓名:蒋运和班级:0841004学号:2010213316同组人员:李海涛陈超指导教师:郭鹏完成时间:2013年12月一、实验名称:51系列单片机闭环温度控制实验——基于Protuse仿真实验平台实现基本情况:1.学生姓名:蒋运和2.学号:20102133163.班级:08410044.同组其他成员:序号姓名班级学号1李海涛084100420102133152陈超08410042010213317二、实验内容(实验原理介绍)1、系统基本原理计算机控制技术实训,即温度闭环控制,根据实际要求,即加温速度、超调量、调节时间级误差参数,选择PID控制参数级算法,实现对温度的自动控制。闭环温度控制系统原理如图:2、PID算法的数字实现本次试验通过8031通过OVEN是模拟加热的装置,加一定的电压便开始不停的升温,直到电压要消失则开始降温。仿真时,U形加热器为红色时表示正在加热,发红时将直流电压放过来接,就会制冷,变绿。T端输出的是电压,温度越高,电压就越高。计算机PID数字输出温控测温8031对温度的控制是通过可控硅调控实现的。可控硅通过时间可以通过可控硅控制板上控制脉冲控制。该触发脉冲想8031用软件在P1.3引脚上产生,受过零同步脉冲后经光偶管和驱动器输送到可控硅的控制级上。偏差控制原理是要求对所需温度求出偏差值,然后对偏差值处理而获得控制信号去调节加热装置的温度。PID控制方程式:式中e是指测量值与给定值之间的偏差TD微分时间T积分时间KP调节器的放大系数将上式离散化得到数字PID位置式算法,式中在位置算法的基础之上得到数字PID增量式算法:3、硬件电路设计在温度控制中,经常采用是硬件电路主要有两大部分组成:模拟部分和数字部分,对这两部分调节仪表进行调节,但都存在着许多缺点,用单片机进行温度控制使构成的系统灵活,可靠性高,并可用软件对传感器信号进行抗干拢滤波和非线性补偿处理,可大大提高控制质量和自动化水平;总的来说本系统由四大模块组成,它们是输入模块、单片机系统模块、计算机显示与控制模块和输出控制模块。输入模块主要完成对温度信号的采集和转换工作,由温度传感器及其与单片机的接口部分组成。利用模拟加热的装置来控制温度。程序结构图如下:3、电路原理图三、实验结果分析(含程序、数据记录及分析和实验总结等,可附页):1、51系列单片机直流电机闭环调速实验程序/*--------------------------------------------------------------------------REG52.HHeaderfileforgeneric80C52and80C32microcontroller.Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.Allrightsreserved.--------------------------------------------------------------------------*/#ifndef__REG52_H__#define__REG52_H__/*BYTERegisters*/sfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3=0xB0;sfrPSW=0xD0;sfrACC=0xE0;sfrB=0xF0;sfrSP=0x81;sfrDPL=0x82;sfrDPH=0x83;sfrPCON=0x87;sfrTCON=0x88;sfrTMOD=0x89;sfrTL0=0x8A;sfrTL1=0x8B;sfrTH0=0x8C;sfrTH1=0x8D;sfrIE=0xA8;sfrIP=0xB8;sfrSCON=0x98;sfrSBUF=0x99;/*8052Extensions*/sfrT2CON=0xC8;sfrRCAP2L=0xCA;sfrRCAP2H=0xCB;sfrTL2=0xCC;sfrTH2=0xCD;/*BITRegisters*//*PSW*/sbitCY=PSW^7;sbitAC=PSW^6;sbitF0=PSW^5;sbitRS1=PSW^4;sbitRS0=PSW^3;sbitOV=PSW^2;sbitP=PSW^0;//8052only/*TCON*/sbitTF1=TCON^7;sbitTR1=TCON^6;sbitTF0=TCON^5;sbitTR0=TCON^4;sbitIE1=TCON^3;sbitIT1=TCON^2;sbitIE0=TCON^1;sbitIT0=TCON^0;/*IE*/sbitEA=IE^7;sbitET2=IE^5;//8052onlysbitES=IE^4;sbitET1=IE^3;sbitEX1=IE^2;sbitET0=IE^1;sbitEX0=IE^0;/*IP*/sbitPT2=IP^5;sbitPS=IP^4;sbitPT1=IP^3;sbitPX1=IP^2;sbitPT0=IP^1;sbitPX0=IP^0;/*P3*/sbitRD=P3^7;sbitWR=P3^6;sbitT1=P3^5;sbitT0=P3^4;sbitINT1=P3^3;sbitINT0=P3^2;sbitTXD=P3^1;sbitRXD=P3^0;/*SCON*/sbitSM0=SCON^7;sbitSM1=SCON^6;sbitSM2=SCON^5;sbitREN=SCON^4;sbitTB8=SCON^3;sbitRB8=SCON^2;sbitTI=SCON^1;sbitRI=SCON^0;/*P1*/sbitT2EX=P1^1;//8052onlysbitT2=P1^0;//8052only/*T2CON*/sbitTF2=T2CON^7;sbitEXF2=T2CON^6;sbitRCLK=T2CON^5;sbitTCLK=T2CON^4;sbitEXEN2=T2CON^3;sbitTR2=T2CON^2;sbitC_T2=T2CON^1;sbitCP_RL2=T2CON^0;#endif#ifndefWENDU_H_#defineWENDU_H_#defineu8unsignedchar#defineu16unsignedint#definePULSE200//////LCD///////sbitRS=P2^5;sbitRW=P2^6;sbitEN=P2^7;sbitLED=P3^0;sbitENA=P3^7;sbitIN2=P3^6;sbitIN1=P3^5;voiddelay_ms(u16z);voidLCD_WriteData(u8Dat);voidLCD_WriteCOM(u8com);voidShow_Num(u8x,u8y,u8n,u16num);//n为数字长度num小于等于65535voidShow_fNum(u8x,u8y,u16num);voidLCD_Init(void);voidkey_scan(void);//voidkey_scan(void);externu16read_tlc2543(u8port);#endif#ifndefTLC2543_H_#defineTLC2543_H_//////TLC2543////sbitSDO=P2^0;sbitSDI=P2^1;sbitCS=P2^2;sbitCLK=P2^3;sbitEOC=P2^4;//u16read_tlc2543(u8port);#defineu8unsignedchar#defineu16unsignedintu16read_tlc2543(u8port);u8AD_deal(void);#endif#includereg52.h#includetlc2543.h//#includewendu.hvoiddelay_us(u16z){u16i;for(i=z;i0;i--);;}u16read_tlc2543(u8port){staticu8PORT=0;u8Temp,i,k=0;u16AD_value=0;Temp=port;CS=1;CLK=0;delay_us(1);Temp=4;CS=0;while(1){for(i=0;i8;i++){CLK=0;if(Temp&0x80)SDI=1;elseSDI=0;AD_value=1;if(SDO)AD_value|=0x01;CLK=1;delay_us(2);Temp=1;}for(i=8;i12;i++){CLK=0;AD_value=1;if(SDO)AD_value|=0x01;delay_us(2);CLK=1;}CLK=0;CS=1;if(PORT==port)break;else{Temp=port;Temp=4;delay_us(2);CS=0;//PORT=port;}k++;if(k2){PORT=port;}}returnAD_value;}u8AD_deal(void){u16AD_value;u16temp;floattemp1;AD_value=read_tlc2543(0x00);temp1=(AD_value*0.04069);temp=(u16)(temp1*10);if((temp%10)4)temp=temp/10+1;elsetemp=temp/10;temp=(u8)temp;returntemp;}#includereg52.h#includewendu.h#includetlc2543.hu8S_Temp=100;//设置温度u8P_Temp=25;//实际温度u8pulse=0;u8Kp=30,Ki=0;Kd=10;intuk=0;intnum=0;structFLAG{u8turn;}myflag;/*************函数功能:延时****************/voiddelay_ms(u16z){u16i;u8j;for(i=z;i0;i--)for(j=120;j0;j--);}/*************函数功能:LCD写数据****************/voidLCD_WriteData(u8Dat){RS=1;//delay_ms(5);P1=Dat;EN=1;delay_ms(5);EN=0;}/*************函数功能:LCD命令****************/voidLCD_WriteCOM(u8com){RS=0;//delay_ms(5);P1=com;EN=1;delay_ms(5);EN=0;}/*************函数功能:Show_Num初始化****************/voidShow_Num(u8x,u8y,u8n,u16num)//n为数字长度num小于等于65535{u16Temp=num;u8a[5],i;for(i=0;in;i++){a[i]=Temp%10;Temp=Temp/10;}if(y%2==1)LCD_WriteCOM(0x80+x);elseLCD_WriteCOM(0x80+0x40+x);for(i=n;i0;i--)LCD_WriteData(a[i-1]+0x30);}/*************函数功能:Show_fNum初始化****************/voidShow_fNum(u8x,u8y,u16num){u8a,b;a=num/10%10;b=num%10;if(y%2==1)LCD_WriteCOM(0x80+x);elseLCD_WriteCOM(0x80+0x40+x);LCD_WriteData(a+0x30);LCD_WriteData(b+0x30);}/*************函数功能:Show_Num初始化****************/voidShow_c
本文标题:51系列单片机闭环温度控制实验报告
链接地址:https://www.777doc.com/doc-5496999 .html