《水温控制系统设计03学位论文.doc》由会员分享,可在线阅读,更多相关《水温控制系统设计03学位论文.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘 要温度是日常生活中无时不在的物理量,温度的控制在各个领域都有积极的意义。很多行业中都有大量的用电加热设备,如用于热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,采用单片机对它们进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量。因此,智能化温度控制技术正被广泛地采用。水温控制在工业及日常生活中应用广泛,分类较多,不同水温控制系统的控制方法也不尽相同,其中以PID控制法最为常见。单片机控制部分采用AT89C51单片机为核心,采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然
2、而,单纯的PID算法无法适应不同的温度环境,在某个特定场合运行性能非常良好的温度控制器,到了新环境往往无法很好胜任,甚至使系统变得不稳定,需要重新改变 PID 调节参数值以取得佳性能。关键词:单片机、水温控制、AT89C51目 录1 课题描述12问题分析和任务定义22.1 问题分析22.2 水温控制系统总体框图23硬件电路设计34 程序设计44.1 程序流程图44.2 程序代码65电路仿真155.1 仿真软件155.2仿真过程156调试、测试与结果分析166.1仿真166.2测试166.3结果分析167总结17参考文献181 课题描述水温控制在工业及日常生活中应用广泛,分类较多,不同水温控制系
3、统的控制方法也不尽相同,其中以PID控制法最为常见。单片机控制部分采用AT89C51单片机为核心,采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然而,单纯的PID算法无法适应不同的温度环境,在某个特定场合运行性能非常良好的温度控制器,到了新环境往往无法很好胜任,甚至使系统变得不稳定,需要重新改变 PID 调节参数值以取得佳性能。本文首先用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然后在模型参考自适应算法 MRAC基础上,用单片机实现了自适应控制,弥补了传统 PID控制结构在特定场合下性能下降的不足,设计了一套实用的温度测控系统,使
4、它在不同时间常数下均可以达到技术指标。此外还有效减少了输出继电器的开关次数,适用于环境参数经常变化的小型水温控制系统。开发环境:微机windowsXP操作系统、DICE反汇编环境、Protues仿真系统、Keil环境2问题分析和任务定义2.1 问题分析实际上题目的任务就是要设计一个温控系统,系统的功能是温度测量和控温在测量部分,要求测量4090C的温度范围,还规定了测量的精度需高于1C,测温的结果要求显示。在控制部分,要求系统能够将水温调节到给定的温度,并进行保温。题目并未规定温度调节的时间长短,但显然调节时间越短越好。题目没有具体给出具体加热的器具和方式,因此选手必须自行选择和制作加热装置,
5、然后才能真正进行电路制作。在发挥部分,还要求提高温度系统的控制性能,缩短调节时间,提高控制精度,增加打印功能。2.2 水温控制系统总体框图传感器电炉信号放大功率放大A / D键盘显示键盘单片机基本系统微型打印机图2.1 总体设计3硬件电路设计水温控制硬件电路图,如图3.1所示:图3.1 水温控制硬件电路图4 程序设计4.1 程序流程图(1)主程序流程图开始初始化AT89C51单片机端口地址读入预设温度值启动A/D转换A/D转换结果送入NX单元NX-FF0F0-NX0降温加热工程量变换温度非线性温度转换发送数据到串口命令识别程序从串口接受数据YYYNNN图4.1 水温控制主程序流程图(2)软件结
6、构程序流程图检测与变送A/D转换工程量变换温度非线性转换发送数据到串口比较判断算法温度预设值温度调节 电路执行器从串口接受数据命令识别控制程序图4.2 软件结构程序流程图4.2 程序代码;用于获取设置的温度值TEMP_GETSH EQU 10HTEMP_GETSL EQU 11H;用于在数码管上显示TEMP_SETHH EQU 12HTEMP_SETLL EQU 13H;用于存放实时温度值A_BIT EQU 14H ;个位B_BIT EQU 15H ;十位;按键输入引脚定义K1 EQU P2.0K2EQU P2.1;控制状态引脚定义DS1820 EQU P3.7FLAG EQU 20H.1;D
7、S18B20是否存在标记DQ EQU P3.7;=主程序=ORG 0000HJMP STARTORG 03HJMP EXT0ORG 0013HJMP EXT1START:MOV A,#02H ;设置温度值为:25MOV DPTR,#TABLE3MOVC A,A+DPTRMOV TEMP_SETHH,AMOV A,#05HMOV DPTR,#TABLE3MOVC A,A+DPTRMOV TEMP_SETLL,AMOV IE,#10000101BMOV IP,#00000001BMOV TCON,#00000101BMOV SP,#70H;设置堆栈指针MOV R7,#00H ;R7为按键K1次数记
8、录MOV R6,#00H ;R6为按键K2次数记录;=数码管显示子程序=DISPLAY:MOV P0,#0FFHMOV A,TEMP_SETHHMOV P0,AMOV A,#00000001BMOV P1,AACALL DELAYACALL TEMP_GETSHH1 ;调用该子程序,以便保存设置温度值的十位数的值MOV P0,#0FFHMOV A,TEMP_SETLLMOV P0,AMOV A,#00000010BMOV P1,AACALL DELAYACALL TEMP_GETSLL1 ;调用该子程序,以便保存设置温度值的个位数的值MOV P0,#0FFHMOV A,#0BFHMOV P0,
9、AMOV A,#00000100BMOV P1,AACALL DELAYMOV P0,#0FFHMOV A,#0BFHMOV P0,AMOV A,#00001000BMOV P1,AACALL DELAYACALL TEMP_DISPLAY;调用实时温度显示子程序JMP DISPLAY;=按键扫描子程序=EXT0:PUSH ACCPUSH PSWINC R6MOV A,R6CJNE A,#10,DD1MOV R6,#00HMOV A,R6DD1:MOV DPTR,#TABLE1MOVC A,A+DPTRMOV TEMP_SETHH,A;ACALL DELAYPOP PSWPOP ACCRETI
10、EXT1: PUSH ACCPUSH PSWINC R7MOV A,R7CJNE A,#10,DD2MOV R7,#00HMOV A,R7DD2:MOV DPTR,#TABLE2MOVC A,A+DPTRMOV TEMP_SETLL,A;ACALL DELAYPOP PSWPOP ACCRETI;=;=获取设置温度值的子程序=TEMP_GETSHH1:;PUSH ACCMOV A,TEMP_SETHH ;获取设置温度值的十位数;MOV P0,#0FFHMOV TEMP_GETSH,AMOV R0,#0FFHTEMP1:INC R0MOV A,R0MOV DPTR,#TABLE3MOVC A,A
11、+DPTRMOV R1,TEMP_GETSHCLR CSUBB A,R1JNZ TEMP1MOV TEMP_GETSH,R0;POP ACCRETTEMP_GETSLL1:;PUSH ACCMOV A,TEMP_SETLL ;获取设置温度值的个位数MOV TEMP_GETSL,AMOV R0,#0FFHTEMP2:INC R0MOV A,R0MOV DPTR,#TABLE3MOVC A,A+DPTRMOV R1,TEMP_GETSLCLR CSUBB A,R1JNZ TEMP2MOV TEMP_GETSL,R0;POP ACCRET;=;=初始化及读取温度值子程序=RE_TEMP:SETB D
12、QACALL RESET_1820JB FLAG,STRETST:MOV A,#0CCHACALL WRITE_1820MOV A,#44HACALL WRITE_1820ACALL RESET_1820MOV A,#0CCHACALL WRITE_1820MOV A,#0BEHACALL WRITE_1820ACALL READ_1820RET;=;=DS18B20复位初始化子程序=RESET_1820:SETB DQNOPCLR DQ;主机发出延时537us的复位低脉冲 MOV R1,#3DLY:MOV R0,#107DJNZ R0,$DJNZ R1,DLY;然后拉高数据线 SETB DQ
13、NOPNOPNOP;等待DS18B20回应 MOV R0,#25HT2: JNB DQ,T3 DJNZ R0,T2JMP T4;置标志位FLAG=1,表示DS18B20存在T3:SETB FLAGJMP T5;清标志位FLAG=0,表示DS18B20不存在T4:CLR FLAGJMP T7;时序要求延时一段时间T5:MOV R0,#117T6:DJNZ R0,T6T7:SETB DQRET;=;=写入DS1820子程序=;写入DS1820WRITE_1820:MOV R2,#8 ;一共8位数据CLR C ;C=0WR1:CLR DQ ;总线低位,开始写入MOV R3,#7DJNZ R3,$ ;
14、保持16us以上RRC A ;把字节DATA分成8位,环移给CMOV DQ,C ;写入一个位MOV R3,#23DJNZ R3,$ ;等待SETB DQ ;重新释放总线NOPDJNZ R2,WR1 ;写入下一个位SETB DQ ;释放总线RET;=;=读出DS1820子程序=;将温度值从DS18B20中读出READ_1820:MOV R4,#2 ;读取两个字节的数据MOV R1,#29H ;低位存入TEMP_GETCL,高位存入TEMP_GETCHRE0:MOV R2,#8 ;数据一共8位RE1:CLR CSETB DQNOPNOPCLR DQ ;读前总线保持为低NOPNOPNOPSETB D
15、Q ;开始读总线释放MOV R3,#9 ;延时18usDJNZ R3,$MOV C,DQ ;从总线读到一个位MOV R3,#23DJNZ R3,$ ;等待50usRRC A ;把读到的位值环移给ADJNZ R2,RE1 ;读下一个位MOV R1,ADEC R1DJNZ R4,RE0RET;=;=温度显示子程序=TEMP_DISPLAY:ACALL RE_TEMP ;调用读取温度子程序ACALL TURNACALL DATAES1MOV A,29HMOV B,#10DIV ABMOV B_BIT,AMOV A_BIT,BMOV P0,#0FFHMOV DPTR,#TABLE3MOV A,B_BI
16、TMOVC A,A+DPTRMOV P0,AMOV P1,#00010000BACALL DELAYMOV A,A_BITMOV P0,#0FFHMOVC A,A+DPTRMOV P0,AMOV P1,#00100000B ACALL DELAYRET;=;=数据转化子程序=TURN:MOV A,29HMOV C,40H;28的位地址RRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,ARET;=;=处理温度数据子程序=DATAES1:MOV A,TEMP_GETSHMOV B,#00001010BMUL ABMOV R0,AMOV A
17、,TEMP_GETSLADD A,R0MOV R0,AMOV A,B_BITMOV B,#00001010BMUL ABMOV R1,AMOV A,A_BITADD A,R1MOV R1,AMOV A,R0CLR CSUBB A,R1JZ DDAS3RLC AJC DDAS4MOV P2,#11011111BJMP DDAS5DDAS3: MOV P2,#10111111B JMP DDAS5DDAS4:MOV P2,#01111111BDDAS5:ACALL DELAYRET;=;=延时子程序=DELAY: ;延时3msMOV R0,#25DD3:MOV R1,#100DJNZ R1,$DJ
18、NZ R0,DD3RETTABLE1:;设置温度值十位数代码表DB 0B0H ;3DB 99H ;4DB 92H ;5DB 82H ;6DB 0F8H;7DB 80H;8DB 90H;9DB 0C0H;0DB 0F9H ;1DB 0A4H;2TABLE2:;设置温度值个位数代码表DB 92H ;5DB 82H ;6DB 0F8H;7DB 80H;8DB 90H;9DB 0C0H;0DB 0F9H ;1DB 0A4H;2DB 0B0H ;3DB 99H ;4TABLE3:;数码管显示代码表DB 0C0H;0DB 0F9H ;1DB 0A4H;2DB 0B0H ;3DB 99H ;4DB 92H
19、;5DB 82H ;6DB 0F8H;7DB 80H;8DB 90H;9END5电路仿真5.1 仿真软件电路仿真中采用Proteus仿真软件。该软件简单易用,容易上手,元器件较为齐全,仿真稳定,功能强大,故采用了此仿真软件。 5.2仿真过程建立仿真电路图,如下图所示:图5.1 水温控制设计仿真电路图图5.2 水温控制设计仿真电路图图5.3 水温控制设计仿真电路图 6调试、测试与结果分析6.1仿真根据水温控制设计原理,可以按照以下步骤来完成仿真:(1)根据要求在Proteus中选取元器件,设计电路图。 (2)编写代码,实现软件设计。(3)使用Kiel编译程序,产生相应的Hex文件。(4)将Hex
20、文件装入Proteus仿真软件中,实现仿真。6.2测试(1)根据要求选取元器件。(2)根据所设计电路图连接电路: (3)编写代码,实现软件设计。(4)使用Kiel编译程序,产生相应的Hex文件。(5)将Hex文件装入DICE中,下载到AT89C51中,运行系统。6.3结果分析 通过按照设计的电路图连接电路,装载、编译并运行程序,可以实现通过温度的变化,系统给出相应的警示。7总结通过紧张有序的课程设计实践,不仅让我对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与模型机的硬件结构和怎么去设计微程序等过程有了进一步的了解, 也让我觉得自己的动手能力有了很大的提
21、高;自信心也增强了,在课程设计中自己动脑子解决遇到的问题,书本上的知识有了用武之地,这巩固和深化了自己的知识结构。实现水温控制系统需要解决两个问题:一是高精度的水温测量电路及其数据处理的实现,另一个是控制方法及其控制电路实现的研究。采用PID控制,其优点是理论和技术都很成熟,再单片机上容易实现,可以达到较小的静态误差。但必须仔细的调控参数,才能获得较好的结果。实践也让我懂得了:学校安排课程设计目的不在于你做了多少,不在于你做得好不好,关键在于你能否认真去对待,在于你能否通过这次设计对课本上知识有了更深刻的认识,在于能否从中学到书本上学不到的知识。因此,我会认真地对待我的每一次实验。参考文献1 李群芳.单片微型计算机与接口技术.电子工业出版社,2005.12 何立民. MCS-51单片机应用系统设计. 北京航空航天大学出版社,2000.33 戴梅鄂.微型计算机技术及应用.清华大学出版社,2008.2 4 李建忠单片机原理及应用西安电子科技出版社,2008.2 5 沈美明.汇编语言程序设计.清华大学出版社,2008.106 路而红. 电子设计自动化应用技术. 北京希望电子出版社,2000.1
限制150内