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

下载本文档

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

文档简介

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

2、际值PV。实际温度值,温度峰值、峰值时间等通过串口上传到上位机 (选做)、实验内容1、系统基本原理(实验原理介绍)根据实验要求,温度闭环控制,即对加温速度、超调量、调节时间级误差参数,选择PID控制参数级算法,实现对温度的自动控制。闭环温度控制系统原理图如下:2、PID算法的数字实现本次试验通过8031通过OVEN是模拟加热的装置,加一定的电压便开始不停的升温,直到电压要消失则开始降温。仿真时,U形加热器为红色时表示正在加热,发红时将直流电压放过来接,就会制冷,变绿。 T端输出的是电压,温度越高,电压就越高。8031对温度的控制是通过可控硅调控实现的。可控硅通过时间可以通过可控硅控制板上控制脉

3、冲控制。该触发脉冲想 8031用软件在P1.3引脚上产生,受过零同步脉冲后经光偶管和驱动器输送到可控硅的控制级上。偏差控制原理是要求对所需温度求出偏差 值,然后对偏差值处理而获得控制信号去调节加热装置的温度。PID控制方程式:U = K (E十丄p右十几)式中e是指测量值与给定值之间的偏差TD微分时间T 积分时间=+ K送6 +心代-®f-iKP调节器的放大系数PID将上式离散化得到数字PID位置式算法,式中在位置算法的基础之上得到数字增量式算法:=-卡,日口 +臨_/3、温度控制软件设计 程序结构图如下:OO4、硬件电路设计在温度控制中,经常采用是硬件电路主要有两大部分组成:模拟部

4、分和数字部分, 对这两部分调节仪表进行调节,但都存在着许多缺点,用单片机进行温度控制使构成的 系统灵活,可靠性高,并可用软件对传感器信号进行抗干拢滤波和非线性补偿处理,可 大大提高控制质量和自动化水平;总的来说本系统由四大模块组成,它们是输入模块、 单片机系统模块、计算机显示与控制模块和输出控制模块。输入模块主要完成对温度信利用模拟加热的号的采集和转换工作,由温度传感器及其与单片机的接口部分组成。装置来控制温度。该闭环温度控制系统采用AT89S51八位机作为微处理单元进行控制。采用 4X4键盘把设定温度的最高值和最低值存入单片机的数据存储器,还可以通过键盘完成温度检 测功能的转换。温度传感器把

5、采集的信号与单片机里的数据相比较来控制温度控制器。5、电路原理图1、仿真完整电路图Jhk w.ihL hhl41nr s *- _!. zhr _-2I*''g -1r.npi.T* -J P R _n TVJ _'言=号-g叮PHT宀-:1!_ h wk亠宀亠士 M JWEMA 二-Im贮.帀丄* 1. 1 =_ np;n.n-1_4 _1 =) *-|IR LJ n羞 lj=h1_:r_rJ1-n'1F4S£s蛊誌冇Ln-JEPVI2、12位AD转换模块C7WlF cTEXTnC622<1 R/CVel AVAA6MD1Aina AimAIH

6、2AIM3REFCAP2j2uF 门巳I,O.luF-.TET:=aV» 1 2 3- 4 S a 7 O 口 0 O 0 O O O2356DO0-1D2D3D4D5OSD7U3ADS7824TExliPAR 耳 ER &VTE 0U 更 R忑CONTCPW加AOAl252a191S4、单片机主电路U3ArS7824I ft -二+5vC1U130pr I=1£疋 j1 XIC2I CFfYSTTAL 厂4,-I EX i -23_応C3inF:TED a-R210k1三心OO0102030405050712215h2 fl璃TAUPO.O/ADOP 0.1/AD

7、Ipn ?/An?XTAL?P 0.3/AD3P0.4JWD4P 0.5JWD5P O.6JrAD6F3STP0.7/AD7P2.0/ASP21阿P2.2/A10PSENP2.3/A11ALEP 2.4)A12EAP2.a/A13P 3.5/A14P 27/A15P1.0)T2P3.0/RXDFl 1;2carJ.irrXDP1.2P3.2fliNT0PI .3P3,3'/lNtTP1 .4P3.jfroP1 .5P3.5fT1Fl .6r J.oJVVrtP17P37/ATe9C52CLOCK=11.05Q2MI-t3a22.j621343322DOD1D7D3D4D5D6D722

8、;23;24£252S广27F111 -1叩;12 J13:14f15;16 :17;21FSFWENEYTEEUSYF/CFWMC3I1 口 12 rI3 刊4 rowl row2 row3 row43、实验结果分析(含程序、数据记录及分析和实验总结等,可附页) 1、51系列单片机闭环温度控制实验程序Mai n.c#in elude "i ncludes.h" char RX_Data5 = 0;charmeasure_te mp erature6'+','0','0','0',C,'0&#

9、39;charsett in g_te mp erature6'0','1','0','0',C,'0'char code_table16 = 7',8,9,T, '4','5','6',' P', '1',2,3,T, '+','0','-','D'char Pv 6=' P','0',9,'0',' 

10、9;,'0'char Iv6='I','0','0','0',' ','0'char Dv6='D','0','0','5',' ','0'int PWM_P eriod = 100;int PWM_Hight = 1;int P WM_Hights = 50;short m_te mp erature = 0;short s_te mp erature = 100;float pc =

11、090.0;float ic = 0.0;float dc = 5.0;float e1 = 0;float e2 = 0;int main() timernit(); lcd_ini t();while(1)ADCRead(); keysca n();Data_ up date();LCD_Dis play(0x80+0x08,setti ng_temp erature);LCD_Dis pl ay(0x80+0x40, Pv);LCD_Dis pl ay(0x80+0x45,lv); LCD_Dis play(0x80+0x4A,Dv);return 0;PWM.C#i nclude &q

12、uot;in cludes.h" uchar T_up date = 0; uchar P_up date = 0; uchar l_up date = 0; uchar D_up date = 0;void T0_time() in terru pt 1/PWM"P WM_Hights-;if(P WM_Hights = 0)P WM_EN = 0;P WM_Hights = 1;PWM_P eriod-; if(PWM_P eriod = 0)P WM_EN = 1;P WM_Period = 100;P WM_Hights = P WM_Hight; void p i

13、d()static long sum = 0;e2 = e1;e1 = s_temp erature-m_te mp erature; sum += e1;if(e1 > 20)P WM_Hight = 100;else if(e1 < -20)PWM_Hight = 1;elseP WM_Hight= P WM_Hight+p c*(e1+ic*sum+dc*(e1-e2);if(P WM_Hight > 100)P WM_Hight = 100;else if(P WM_Hight < 1)PWM_Hight = 1;void Interrup t_T1() int

14、errupt 3 static int count = 0;TH1 = 0x3C;/ 定时 50msTL1 = 0xB0;coun t+;if(cou nt = 20)pid();count = 0; void up date_Te mp() "short j = 0;short tmp = 0;for(j = 1;j<=3;j+)tmptmp *10+(setti ng_tem peraturej-'0'); if(setti ng_te mp erature0='-') tmp = -tmp;s_te mp erature = tmp;&qu

15、ot;void up date_ Pv() "short j = 0;short tmp = 0;for(j = 1;jv=3;j+)tmp = tmp *10+( Pvj-'0');pc = tmp;void up date_Iv() "short j = 0;short tmp = 0;for(j = 1;j<=3;j+)tmp = tmp *10+(Ivj-'0');ic = tmp;void up date_Dv() "short j = 0;short tmp = 0;for(j = 1;j<=3;j+)tmp

16、 = tmp *10+(Dvj-'0');dc = tmp;void Data_u pdate()/ 循环检查每一次T、PID值是否有修改if(T_up date = 1)"up date_Te mp();T_up date =0;else if(P_up date = 1)up date_Pv(); P_up date =O;"else if(l_up date = 1)"up date_lv(); l_up date =O;else if(D_ up date = 1) "up date_Dv();D_up date =O;"

17、;Timer.c#in elude "in cludes.h" void timer_i nit() "EA = O;/关闭总中断TLO = Ox9C;TH1 = Ox3C;/定时 5OmsTL1 = OxBO;ETO = 1;/ETO 用于 PWM 产生ET1 = 1;/ET1测速计时TRO = 1;/运行定时器0TR1 = 1;/运行定时器1PTO = 1; /TO中断优先级高T1:EA = 1; /打开总中断TMOD = Ox12;/TO:工作方式 2 工作方式1THO = 0x9C;ADS7824.C#in elude "i ncludes.h&

18、quot; void itoa(short nu m,char str) int i=3;num = (nu m/2O47.O)*999.O; for(i=3; i>O; i-)stri = (num % 1O) + 'O' num = num / 1O;str='O' void ADCReadOshort num = O;/无 符号 16 位RC = O;/启动转换RC = 1;/启动读取 while(BUSY = O); num = O;BYTE = O; /读取高4位 num = (num|P 1)<<8; num = num &

19、 OxOFOO;BYTE = 1;/读取低8位 num = num| P1;/12位数据完整取好 if( num&OXO8OO) = OxO8OO)measure_te mp eratureO='-' num = num&O xF7FF;num = (nu mOxO7FF)+1; m_te mp erature-(nu m/2O47.O)*999.O);elsemeasure_te mp erature0 = '+' m_te mp erature(nu m/2047.0)*999.0;re);Delay.c#i nclude "in

20、cludes.h"void delay_ms(i nt n) /1ms 延时 "uint i=0,j=0;for(i=0;i vn ;i+)for(j=0;jv123;j+);Dis play.c#i nclude "in cludes.h"itoa( num ,measure_te mp erature); LCD_Dis play(0x80,measure_te mp eratuRC = 0;en=O;void lcd_wcom(uchar com) /1602 写命令函数单片机给1602写命令rs=0; 选择指令寄存器rw=0; /选择写P0=co

21、m; /把命令字送入delay_ms(1);en=1; /使能线电平变化,命令送入1602的8位数据口delay_ms(1);en=0;void lcd_wdat(uchar dat) /1602 写数据函 数 _rs=1; 选择数据寄存器rw=0; /选择写P0=dat; /把要显示的数据送入delay_ms(1);en=1; /使能线电平变化,数据送入1602的8位数据口delay_ms(1);voidLCD_Dis play(ui nt locati on.Dis play_Part)int i=0;lcd_wcom(locati on); for(i=0;Dis play_ Parti

22、 != 0;i+) lcd_wdat(Dis play_Parti); delay_ms(1);ucharvoid lcd_init() /1602 初始化函数 5*7标,lcd_wcom(0x38); /8 位数据,字形lcd_wcom(0x0c); / 开启显示屏, 光标不闪烁Icd_wcom(0x06); /显示地址递增,即双列,关光写一个数据后,显示位置右移一位Icd_wcom(0x01); / 清屏LCD_Dis pl ay(0x80+0x08,setti ng_tem peratu re);LCD_Dis play(0x80+0x40, Pv);LCD_Dis play(0x80+

23、0x45,lv);LCD_Dis play(0x80+0x4A,Dv); "Keyboards16;#i nclude "in cludes.h"void keysca n()uint keyno = 16;uchar temp = 0;uchar i = 0;static char up date_flag = 0;static int up date_i ndex = 0; char key_code = 0;P3 = 0x0F;if(P3 != 0x0F)P3 = 0x0F; /delay_ms(1); temp = P3;i = tem pA0x0F; s

24、witch(i)case 1: keyno = 0;break; case 2: keyno = 1;break; case 4: keyno = 2;break; case 8: keyno = 3;break; default:keyno =/无键按下 while( P3 != 0xF0);if(key no>=0 && keyno <=15) if(up date_flag = 1)key_code code_tableke yno;sett in g_te mp eratureu pdate_i ndex key_code;up date_i ndex+;

25、if(up date_i ndex = 4) up date_flag = 0; up date_i ndex = 0; T_up date = 1;else if(up date_flag = 2) "key_codecode_tableke yno;P v1+u pdate_i ndexkey_code;P3 = 0xF0; temp = P3;/delay_ms(1);i = (te mp » 4)八 0x0F; switch(i)case 1: keyno += 0;break;case 2: keyno += 4;break;case 4: keyno += 8;

26、break;case 8: keyno += 12;break;up date_i ndex+; if(up date_i ndex = 3) up date_flag = 0; up date_i ndex = 0;P_up date = 1;else if(up date_flag = 3) key_code code_tableke yno;key_code;Iv1+ up datendex up date_i ndex+; if(up date_i ndex = 3)"D_up date = 1;" elseswitch(ke yno) case 3:up date_flag =up date_flag = 0; up date_i ndex = 0; l_up date = 1;else if(up date_flag = 4) key_code code_tableke yno;Dv1+ up date_i ndex1;break;2;break;3;break;4;break;case 7:up date_flag =case

温馨提示

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

评论

0/150

提交评论