2022年温度控制系统设计 .pdf
学号:电脑控制技术课程设计题目温度控制系统设计学院专业班级姓名指导教师精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 44 页武汉理工大学电脑控制技术课程设计2016 年月日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 44 页武汉理工大学电脑控制技术课程设计课程设计任务书学生: _ 专业班级: _ 指导教师:周申培工作单位: _ 题目: 温度控制系统设计初始条件:被控对象为电炉, 采用热阻丝加热, 利用大功率可控硅控制器控制热阻丝两端所加的电压大小, 来改变流经热阻丝的电流, 从而改变电炉炉内的温度。 可控硅控制器输入为 05伏时对应电炉温度 0300,温度传感器测量值对应也为05伏,对象的特性为积分加惯性系统,惯性时间常数为T140秒。要求完成的主要任务 :包括课程设计工作量及其技术要求,以及说明书撰写等具体要求1设计温度控制系统的电脑硬件系统,画出框图;2编写积分别离 PID算法程序,从键盘接受 Kp、Ti 、Td、T及 的值;3电脑仿真被控对象,编写仿真程序;4通过数据分析 Td改变时对系统超调量的影响。5. 撰写设计说明书。课程设计说明书应包括:设计任务及要求;方案比较及认证;系统滤波原理、硬件原理,电路图,采用器件的功能说明;软件思想,流程,源程序;调试记录及结果分析;参考资料;附录:芯片资料,程序清单;总结。时间安排:2016 年 5 月 23 日2016年 6 月 3 日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 44 页武汉理工大学电脑控制技术课程设计摘要比例-积分-微分控制简称 PID 控制,是控制系统中应用最为广泛的一种控制规律。实际运行的经验和理论的分析都说明,这种控制规律对许多工业过程进行控制时,都能得到满意的效果。利用电脑可以很好地使用PID 算法对控制对象进行控制, 具有较高的精度,并且可以很方便的改变PID 参数,以到达不同的控制效果。本设计的控制对象为电炉,控制量为电炉温度,利用单片机对大功率可控硅导通角的控制,可以很方便地改变电热丝两端的电压,从而起到调节温度的作用。而热电偶配合单片机编程,能够较精确地得到炉温,使单片机能够实时发出控制信号,快速将炉温调节为给定值。当外界出现干扰使炉温发生变化时,单片机能够通过PID 算法快速使炉温回到给定值。为了使 PID 控制更加稳定可靠,本设计加入了积分别离的改良措施,当偏差较大时取消积分作用,利用 PD 控制快速使系统趋于稳定;当偏差小于某一个值时,加入积分作用,以消除静差。利用Matlab 软件,可以通过仿真得到Td 改变对系统超调量的影响。关键词:PID 控制;Matlab;系统超调量精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 44 页武汉理工大学电脑控制技术课程设计目录1 设计任务及要求 . 11.1 设计任务要求 . 11.2 任务要求分析 . 12 方案比较及认证 . 22.1 方案设计 . 22.2 方案认证 . 33 系统软件设计 . 43.1 PID 控制算法 . 43.2 积分别离的 PID 控制控制算法 . 54 系统硬件设计 . 74.1 系统滤波原理 . 74.2 硬件设计原理 . 75 系统仿真 . 105.1 仿真程序及图形 . 105.2 仿真结果 . 115.3 结果分析 . 166 心得体会 . 17参考文献 . 18附录 A 芯片资料 . 19附 A1 ADC0809 芯片功能 . 19附 A2 DAC0832 芯片功能 . 21附 A3 AT89C51 单片机 . 22精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 44 页武汉理工大学电脑控制技术课程设计附录 B 程序清单 . 25附 B1 单片机程序代码 . 25附 B2 仿真程序代码 . 35本科生课程设计成绩评定表. 37精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 44 页武汉理工大学电脑控制技术课程设计1 1 设计任务及要求1.1 设计任务要求被控对象为电炉,采用热阻丝加热,利用大功率可控硅控制器控制热阻丝两端所加的电压大小,来改变流经热阻丝的电流, 从而改变电炉炉内的温度。 可控硅控制器输入为05 伏时对应电炉温度0300,温度传感器测量值对应也为05 伏,对象的特性为积分加惯性系统,惯性时间常数为T140 秒。要求完成的主要任务 :1设计温度控制系统的电脑硬件系统,画出框图;2编写积分别离PID 算法程序,从键盘接受Kp、Ti、Td、T 及的值;3电脑仿真被控对象,编写仿真程序;4通过数据分析Td 改变时对系统超调量的影响。5. 撰写设计说明书。1.2 任务要求分析本系统的控制对象为电炉,被控量为温度,利用温度传感器实时检测电炉温度;将测得的数据经过 A/D 转换后送入电脑;电脑系统将检测得到的温度与炉温给定值进行比较,并计算偏差;按照预置的控制算法,对可控硅控制器的导通角进行调节,从而可以控制热阻丝两端的电压,起到温度调节的作用。为了实现数据采集、转换、处理以及PID 算法控制,并通过键盘对温度设定值和PID控制参数进行修正,因此可以使用单片机或PLC。由于本次控制对象为电炉,其时间常数较大,因此采用周期不宜过小,防止系统响应过于频繁,降低电脑系统的效率并使控制品质变坏;但也不能太大,否则会使误差不能及时消除。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 44 页武汉理工大学电脑控制技术课程设计2 2 方案比较及认证2.1 方案设计用温度传感器来检测炉的温度,将炉温转变成毫伏级的电压信号,经温度变送器放大并转换成电流信号。由电阻网络将电流信号变成电压信号,送入A/D 转换器,通过采样和模数转换,所检测到的电压信号和炉温给定值的电压信号送入电脑程序中作比较,得出给定值与实际值之间的偏差,并与进行比较,从而确定算法。计算得到的控制量输出给可控硅控制器,改变可控硅的导通角,到达调压的目的,是电阻丝两端的电压增大或较小,进而实现对炉温的控制。方案一:使用 PLC 直接对铁块温度进行PID 调节。其基本思想为,触摸屏要设定温度给 PLC,PLC 控制光耦电路,然后对电阻丝进行控制加热。具体流程为,由触摸屏设定温度给 PLC,由 PLC 通过电路控制铁块的加热或不加热,热电偶把温度以电压的方式经过AD 转换反馈给 PLC,PLC 再经过 PID 来控制温度。其结构框图如图2-1 所示。图 2-1 方案一设计结构图方案二:单片机热电偶温度自动控制。主要的控制芯片采用AT89C51,要求传感器测量的电压范围和可控硅控制器的电压在0-5,所以 A/D 与 D/A 转换芯片采用ADC0809和 DAC0832。炉温控制在 0300内,因此采用镍铬 -铜镍热电偶,同时选用运算放大器将信号放大。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 44 页武汉理工大学电脑控制技术课程设计3 图 2-2 方案二设计结构图2.2 方案认证根据设计要求,综合考虑选择方案二。在系统中,利用热电偶测得电阻炉实际温度并转换成毫伏级电压信号。该电压信号经过温度检测电路转换成与炉温相对应的数字信号进入单片机,单片机进行数据处理后,通过液晶显示器显示温度,同时将温度与设定温度比较,根据设定计算出控制量,根据控制量通过控制继电器的导通和关闭从而控制电阻丝的导通时间,以实现对炉温的控制。程序流程图如图2-3 所示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 44 页武汉理工大学电脑控制技术课程设计4 图 2-3 程序流程图3 系统软件设计3.1 PID控制算法模拟 PID 控制器的控制规律为3-1在 PID 调节中,比例控制能迅速反应误差,从而减小误差,但比例控制不能消除稳态误差, KP 的加大,会引起系统的不稳定;积分控制的作用是:只要系统存在误差,积分控制作用就不断地积累,输出控制量以消除误差,因而,只要有足够的时间,积分控制将能完全消除误差,积分作用太强就会使系统超调增大,甚至使系统出现振荡;微分控制可以减小超调量,克服振荡,使系统的稳定性提高,同时加快系统的动态响应速度,减小调节时间,从而改善系统的动态性能。为了便于电脑实现PID 控制算法,必须将式 3-1变换成差分方程,以得到数字PID精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 44 页武汉理工大学电脑控制技术课程设计5 位置型控制算式3-2根据式 3-2可写出 u(k-1)的表达式3-3将式 3-2与式 3-3相减,可以得到数字PID 增量型控制算式为3-4式中, Kp 为比例增益; Ki=Kp*T/Ti为积分系数; Kd=Kd*Td/T 为微分系数。相对于位置型算法,增量型算法不需要做累加,计算误差或计算精度对控制量的计算影响较小,而位置型算法要用到过去的累加值,容易产生较大的累加误差。位置型算法不仅要占用较多的内存单元,而且不便于编写程序,并且逐渐增大的累加误差可能引起系统冲击,严重影响系统的稳定性。综合考虑,应该使用增量型数字PID 控制算法来增加系统的稳定性以及控制精度。3.2 积分别离的PID 控制控制算法在一般的 PID 控制中,当有较大的扰动或大幅度改变给定值时,由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项的作用下,往往会产生较大的超调和长时间的波动。特别对于温度等变化缓慢的过程,这一现象更为严重,为此,可采用积分别离措施,即偏差 e(k)较大时,取消积分作用;当偏差较小时才将积分作用投入。亦即当时,采用 PD 控制;当时,采用 PID 控制。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 44 页武汉理工大学电脑控制技术课程设计6 积分别离阈值应根据具体对象及控制要求。假设值过大时,则达不到积分别离的目的;假设 值过小,则一旦被控量y(t)无法跳出个积分别离区,只进行PD 控制,将会出现残差,为了实现积分别离,编写程序时必须从数字PID 差分方程式中别离出积分项,进行特殊处理。积分别离PID 控制算法流程图如图3-1 所示。图 3-1 积分别离 PID 控制算法流程图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 44 页武汉理工大学电脑控制技术课程设计7 4 系统硬件设计4.1 系统滤波原理一般微机应用系统的模拟输入信号中,均含有种种噪音和干扰, 它们来自信号源本身、传感器、外界干扰等。噪音有两大类:一类为周期性的,另一类为不规则的。前者可采用双积分 A/D 转换器,有效地消除其影响。后者为随机信号,可用数字滤波方法予以消除。算术平均值法式要按输入的N 个采样为周期 ixi=1N,寻找这样一个y,使 y 与各采样值间的偏差的平方和为最小,使由一元函数求值原理可得4.2 硬件设计原理该温度控制硬件设计采用了单片机AT89C52,A/D 转换器 ADC0809 与 D/A 转换器DAC0832。其设计思想为:用热电偶来检测炉的温度,将炉温转变成毫伏级的电压信号,经温度变送器放大并转换成电流信号。由电阻网络讲电流信号变成电压信号,送入A/D 转换器ADC0809,通过采样和模数转换,所检测到的电压信号和炉温给定值的电压信号都转换成数字量送入单片机AT80C52 进行比较,其差值即为实际炉温和给定炉温的偏差,以单片机为核心的数字 PID 控制器对偏差按照给定的方法运算, 运算结果送入 D/A 转换器 DAC0832转换成模拟电压,经功率放大器放大后送入晶闸管调压器,触发晶闸管并改变其导通角的大小,从而控制电阻炉的加温电压,起到炉温调节的作用。其电路图如图 4-1 所示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 44 页武汉理工大学电脑控制技术课程设计8 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 44 页武汉理工大学电脑控制技术课程设计9 图 4-1 硬件设计电路图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 44 页武汉理工大学电脑控制技术课程设计105 系统仿真5.1 仿真程序及图形被控对象为采用 simulink 仿真,通过 simulink 模块实现积分别离 PID 控制算法。选择合适的 Kp,Ki ,Kd 是系统的仿真效果趋于理想状态。MATLAB 程序如下所示。clear all;close all;ts=2; %采样时间 2ssys=tf(1,40,1,0); %令 sys为系统传递函数dsys=c2d(sys,ts,zoh); %将 sys离散化并加零阶保持器num,den=tfdata(dsys,v); %求 sys多项式模型参数kp=1;ti=50;td=1;beta=0.1;ki=kp*ts/ti;kd=kp*td/ts;Simulink 仿真图如图 5-1 所示。240140s1s1sGss精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 44 页武汉理工大学电脑控制技术课程设计11图 5-1 Simulink 仿真图5.2 仿真结果(1)当 Td=0.1 时,仿真波形图如图5-2 所示。图 5-2(2)当 Td=1 时,仿真波形图如图5-3 所示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 44 页武汉理工大学电脑控制技术课程设计12图 5-3 当 Td=1 时的仿真波形图(3)当 Td=10时,仿真波形图如图5-4 所示。图 5-4 当 Td=10 时的仿真波形图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 44 页武汉理工大学电脑控制技术课程设计13(4)当 Td=15时,仿真波形图如图5-5 所示。图 5-5 当 Td=15 时的仿真波形图(5)当 Td=20时,仿真波形图如图5-6 所示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 44 页武汉理工大学电脑控制技术课程设计14图 5-6 当 Td=20 时的仿真波形图(6)当 Td=30时,仿真波形图如图5-6 所示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 44 页武汉理工大学电脑控制技术课程设计15图 5-7 当 Td=30 时的仿真波形图(7)当 Td=40时,仿真波形图如图5-8 所示。此时系统出现振荡,系统不稳定。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 44 页武汉理工大学电脑控制技术课程设计16图 5-7 当 Td=40 时的仿真波形图5.3 结果分析增大微分时间 Td,有利于加快系统响应,使超调量减小,稳定性增加,但系统对扰动的抑制能力减弱,对扰动有较敏感的响应。通过仿真可以看出,当K,Td,T,取了合适的值后,改变Td 既会改变系统的超调量,又会使系统的稳定时间发生较大的改变。在一定范围内Td 增大,而相应的系统超调量减小,说明此时微分作用会使系统超调量减小。但超过该范围,随Td 增大超调量增大。仿真结果中,当Td=40 时,系统甚至出现不稳定的情况。因此,积分时间常数Td 必须取恰当值,微分作用过强,会使系统超调过大,甚至不稳定。因此,Td 增大即微分作用的增强有助于增加系统的稳定性,还可以改善系统的动态特性,如可以明显减少超调量,缩短调节时间等,提高控制精度。但Td 值偏大都会适得其反。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 44 页武汉理工大学电脑控制技术课程设计176 心得体会通过本次温度控制系统设计,个人有了很多获得:一,了解了自身各种理论知识的不足之处,强化了自身知识水平;二,知道了理论必须与实践结合,各种技术才能真正到达熟练运用的程度;三,科学技术是严密谨慎的,不能有一丝马虎,否则可能会出现较大误差;四,通过本次温度控制设计,进一步学习了单片机设计与Matlab 仿真设计。也学习了数字 PID 控制,比较了数字 PID 位置型控制算法与数字PID 增量型控制算法。 同时了解了数字 PID 控制器改良的方法, 如积分别离。为了实现积分别离, 编写程序时必须从数字PID差分方程式中别离出积分项,进行特殊处理。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 44 页武汉理工大学电脑控制技术课程设计18参考文献1 于海生 . 电脑控制技术 M. 北京:机械工业出版社,2014:101-111.2 张毅刚,彭喜元 . 单片机原理及应用 M. 北京:高等教育出版社, 2010:43-82.3 刘教瑜 . PLC 应用技术 M. 北京:人民邮电出版社, 2013:276-278.4 刘红丽 . 传感与检测技术 M. 北京:国防工业出版社, 2012:73-81.5 王孝武,方敏,葛锁良 . 自动控制理论 M. 北京:机械工业出版社,2012:117-118.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 44 页武汉理工大学电脑控制技术课程设计19附录 A 芯片资料附 A1 ADC0809芯片功能A/D 转换器是将模拟电压或电流转换成数字量的期间或装置,它是一种模拟系统和电脑之间的接口,它在数据采集和控制系统中,得到了广泛的应用,常用的A/D 转换器有ADC0809. 它是一种带有 8 通道模拟开关的 8 位逐次逼近式 A/D 转换器, 转换时间为 100us左右,线性误差为 1/2LSB,采用 28 脚双立直插式封装, ADC0809 由 8 通道模拟开关、通道选择逻辑、 8 位 A/D 转换器及三态输出锁存缓冲器组成。(1)8 通道模拟开关及通道选择逻辑该部分的功能是实现8 选 1 操作,通道选择信号C、B、A 与所选通道的关系如下:表 A-1 ADC0809 模拟开关及通道选择逻辑地址锁存允许信号 ALE 、正脉冲用于通道选择信号C、B、A 的锁存。加至 C、B、A 上的通道选择信号在ALE 的作用下送入通道选择逻辑后,通道i 上的模拟输入被送至A/D 转换器转换。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 25 页,共 44 页武汉理工大学电脑控制技术课程设计20(2)8 位 A/D 转换器图 A-1 ADC0809 引脚图如图 A-1 所示。 IN0IN7 为模拟信号的 8 个输入通道。 VREF,VREF 为基准电压的正极和负极。 ADDA 、ADDB 和 ADDC 为模拟信号输入通道的地址选择线。ALE 为地址锁存信号,由低电平到高电平正跳变时讲地址选择线的状态锁存,一选通相应的输入通道。START 为启动信号,正脉冲的上升沿使内部寄存器清零,从下降沿开始进行A/D 转换。OEC 为转换结束信号,在START 信号之后变低,转换结束为高电平,用来申请中断。OE为输出允许信号,有效时将输出寄存器中的数据放到数据总线上。2-82-1 为数码输出端,2-8 为最低有效位, 2-1 为最高有效位。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 26 页,共 44 页武汉理工大学电脑控制技术课程设计21附 A2 DAC0832芯片功能D/A 转换器的功能是把二进制数字量电信号转换为与其数值成正比的模拟量电信号。常用 D/A 转换器为 DAC0832 芯片。 DAC0832 工作在单缓冲寄存器方式,即当CS 信号来时,D0D7 数据线送来的数据直通进行D/A 转换,当 IOW 变高时,则此数据便被锁存在寄存器中,因此D/A 转换的输出也保持不变。 DAC0832 讲输入的数字量转换成差动的电流输出Iout1 和 Iout2 , 为了将其编程电压输出, 须经过运算放大器, 使其输出 05V Vref为-5V或 010VVref 为-10V,假设要形成负电压输出,则Vref 需接正的基准电压。图 A-2 DAC0832 引脚图如图 A-2 所示, DAC0832 是双列直插式 8 位 D/A 转换器。能完成数字量输入到模拟量(电流)输出的转换。图 4 为 DAC0832 的引脚图。其主要参数如下:分辨率为8 位,转换时间为 1s, 满量程误差为 1LSB, 参考电压为 (+10/span -10)V, 供电电源为 (+5+15)V,逻辑电平输入与 TTL 兼容。在 DAC0832 中有两级锁存器, 第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC 寄存器,它的锁存信号也称为通道控制信号 XFER。当 ILE 为高电平,片选信号CS 和写信号WR1 为低电平时,输入寄存器控制信号为1,精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 27 页,共 44 页武汉理工大学电脑控制技术课程设计22这种情况下,输入寄存器的输出随输入而变化。此后,当WR1 由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据 DB 的变化而变化。对第二级锁存来说, 传送控制信号 XFER 和写信号 WR2 同时为低电平时, 二级锁存控制信号为高电平, 8 位的 DAC 寄存器的输出随输入而变化,此后,当WR2 由低电平变高时,控制信号变为低电平,于是将输入寄存器的信息锁存到DAC 寄存器中。其余各引脚的功能定义如下:DI7DI0:8 位的数据输入端, DI7 为最高位。IOUT1:模拟电流输出端1,当 DAC 寄存器中数据全为1 时,输出电流最大, 当 DAC寄存器中数据全为0 时,输出电流为 0。IOUT2:模拟电流输出端2,IOUT2 与 IOUT1 的和为一个常数。RFB:反馈电阻引出端, DAC0832 内部已有反馈电阻,所以RFB 端可以直接接到外部运算放大器的输出端,相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。VREF:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0 至 255的数字量转化出来的模拟量电压值的幅度,VREF 范围为 +10。VREF 端与 D/A 内部 T 形电阻网络相连。VCC:芯片供电电压,范围为5V15V。GND :模拟量地 /数字量地,即模拟 /数字电路接地端。附 A3 AT89C51单片机AT89C51 提供以下的功能标准: 4K 字节闪烁存储器, 128 字节随机存储器, 32 个 I/O口,2 个 16 位定时 /计数器, 1 个 5 向量两级中断结构, 1 个串行通信口,片内震荡器和时钟电路。另外, AT89C51 还可以进行 0HZ 的静态逻辑操作,并支持两种软件的节电模式。8051单片机的内部结构十分复杂,但封装之后,只有引脚是面向用户的,所以使用者需要熟悉各引脚的用途。常用的8051 芯片是用双列直插40 脚封装。如图 A-3 所示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 28 页,共 44 页武汉理工大学电脑控制技术课程设计23图 A-3 AT89C51引脚图其各引脚功能如下所示:VCC:供电电压。GND:接地。P0 口:P0 口为一个 8 位漏级开路双向I/O 口,每脚可吸收8TTL 门电流。当 P0 口的管脚第一次写 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 口输出精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 29 页,共 44 页武汉理工大学电脑控制技术课程设计24其特殊功能寄存器的内容。 P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“ 1”后,它们被内部上拉为高电平,并用作输入。P3 口也可作为 AT89C51的一些特殊功能口, P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,可用作对外部输出的脉冲或用于定时目的。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次 PSEN 有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当 EA保持低电平时,则在此期间外部程序存储器0000H-FFFFH,不管是否有内部程序存储器。注意加密方式1 时,EA将内部锁定为 RESET;当EA端保持高电平时, 此间内部程序存储器。 在 FLASH 编程期间,此引脚也用于施加12V 编程电源 VPP 。XTAL1 :反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 :来自反向振荡器的输出。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 30 页,共 44 页武汉理工大学电脑控制技术课程设计25附录 B 程序清单附 B1 单片机程序代码单片机程序代码如下所示:积分别离 PID 控制算法子程序:START:MOV 68H,KP ;分别将 KP ,TI ,TD, T,送入指定的存储单元MOV 54H,TI MOV 55H,TDMOV 56H,TMOV 57H,MOV A,68H ;计算 KI=KP*T/TI MOV B,56HMUL ABMOV B,54HDIV ABMOV 69H,AMOV A,68H ;计算 KD=KP*TD/TMOV B,55HMUL ABMOV B,56HDIV ABMOV 6AH,ALOOP0: MOV DPTR #7FF0H;读取预定温度值,送入ADC0809 的 IN0 口地址MOV DPTR,A ;启动 A/D 转换精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 31 页,共 44 页武汉理工大学电脑控制技术课程设计26LOOP1 JB P3.3,LOOP1;等待转换数据MOVX A,DPTR ;读取 ADC0809 的 IN0 口转换后的数据MOV 5CH,A ;将预定值数据放入指定的存储单元MOV DPTR,#7FF1H;读取采样温度值,送ADC0809 的 IN1 口地址MOVX DPTR,A ;启动 A/D 转换LOOP2: JB P3.3,LOOP2 ;等待转换数据MOVX A,DPTR ;读取 ADC0809 的 IN1 口转换后的数据MOV 49H,A ;将采样值数据放入指定的存储单元MOV A,5CH ;计算 e(i),先取温度给定值CLR CSUBB A,50H ;温度给定值 -采样值JNC AA0;判断 e(i)的正负,如果为正,跳至AA0CPL A;e(i)为负,下两条指令求补ADD A,#01H AA0MOV R0,57HSUBB A,57H;|e(i)|-JNC AA1;|e(i)|跳至 AA1SJMP AA2;|e(i)|跳至 AA2 AA1: LCALL PD ;调用 PD 算法AA2: LCALL PID ;调用 PID 算法MOV A,7CH ;将 Ui 通过 DAC0832 输出MOV DPTR,#7FF2HMOVX DPTR,A精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 32 页,共 44 页武汉理工大学电脑控制技术课程设计27INC DPTRMOVX DPTR,ALCALL DELAY ;调用延时子程序,等待下一次采样计算SJMP LOOP0;进入下一次控制计算DELAY PROC NEARDL0: MOV R6,#FFHDL1: MOV R7,#FFHDL2: MOV R5,#FFHDLS: DJNZ R5,DLSDJNZ R7,DL2DJNZ R6 DL1RETDELAYENDPPID PROC NEARPID:MOV A,5CH ;计算 e(i),先取温度给定值CLR CSUBB A,50H;温度给定值 -温度检测值JNC PID1;判断 ei正负,如果为正,跳至PID1CPL A;ei为负,下两条指令求补ADD A,#01H SETB 30H;ei为负,符号位置1SJMP PID2PID1:CLR 30H;ei为正,符号位置0PID2:MOV 6BH,A ;ei值存放在 6BH 单位元中精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 33 页,共 44 页武汉理工大学电脑控制技术课程设计28MOV R1,6BH;计算 ei-ei-1,先将 ei 值,送 R1 MOV C,30H;将 ei 的符号位值送 20H 位MOV 20H,CMOV R2,6CH;将 ei-1 值送 R2MOV C,31H;将 ei-1 的符号位值送 21H 位MOV 21H,C LCALL DJF ;调用单字节带符号的减法子程序MOV 6EH,R3;将差值 ei-ei-1 送 6EH 单元MOV C,22H;将差值 ei-ei-1 的符号位送 33H 位 MOV 33H,CMOV R1,6CH;计算 ei-1-ei-2,先将 ei-1 值送 R1 MOV C,31H;将 ei-1 符号位送 20H 位MOV 20H,CMOV R2,6DH ;将 ei-2 的值送 R2MOV C,32H;将 ei-2 的符号位值送 21H 位MOV 21H,CLCALL DJF ;调用单字节带符号的减法子程序MOV 6FH,R3;将差值 ei-1-ei-2 送 6FH 单元MOV C,22H;将差值 ei-1-ei-2 的符号位送 34H 位MOV 34H,C MOV R1,6EH ;计算 ei-ei-1-ei-1-ei-2,将 ei-ei-1 值送 R1 MOV C,33H;将 ei-ei-1 符号位送 20H 位MOV 20H,C MOV R2,6FH;将 ei-1-ei-2 值送 R2 MOV C,34H;将 ei-1-ei-2 符号位送 21H 位MOV 21H,C 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 34 页,共 44 页武汉理工大学电脑控制技术课程设计29LCALL DJF ;调用单字节带符号的减法子程序MOV 70H,R3;将差值 ei-ei-1-ei-1-ei-2送 70H 单元MOV C,22H;将差值 ei-ei-1-ei-1-ei-2的符号位值送35H 位MOV 35H,CMOV A,68H ;计算 Kp* ei-ei-1,将 Kp 值送 A MOV B,6EH ;将 ei-ei-1 值送 B MUL AB ;两数相乘MOV 71H,B ;Kp* ei-ei-1值存 71H,72H 单元MOV 72H.A MOV A,69H ;计算 KI*ei ,将 KI 值送 A MOV B,6BH ;将 ei 值送 B MUL AB ;两数相乘MOV 73H,B ;KI*ei 值存 73H,74H 单元MOV 74H,A MOV A,6AH ;计算 KD* ei-ei-1-ei-1-ei-2,将 KD 送 A MOV B,70H ;将 ei-ei-1-ei-1-ei-2值送 BMUL AB ;两数相乘MOV 75H,B ;KD* ei-ei-1-ei-1-ei-2值存 75H,76H 单元MOV 76H,A MOV R1,71H;计算 Kp* ei-ei-1+KI*ei ,将 Kp* ei-ei-1 值送 R1,R2 MOV R2,72H MOV C,33H;将 Kp* ei-ei-1的符号位值送 23H 位MOV 23H,C 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 35 页,共 44 页武汉理工大学电脑控制技术课程设计30MOV R3,73H;将 KI*ei 值送 R3,R4 MOV R4,74H MOV C,30H;将 KI*ei 值的符号位懂 24H 位MOV 24H,C LCALL SJF;调用双字节带符号加法子程序MOV 77H,R5;将 Kp* ei-ei-1+KI*ei 值送 77H,78H MOV 78H,R6 MOV C,25H;将 Kp* ei-ei-1+KI*ei 值的符号位送 36H 位MOV 36H,C MOV R1,77H;计算 Ui,将将 Kp* ei-ei-1+KI*ei 值送 R1, R2 MOV R2,78H MOV C,36H;将 Kp* ei-ei-1+KI*ei 值的符号位送 23H 位MOV 23H,C MOV R3,75H;将 KD* ei-ei-1-ei-1-ei-2的值送 R3,R4 MOV R4,76HMOV C,35H;将 KD* ei-ei-1-ei-1-ei-2的符号位送 23H 位MOV 24H,C LCALL SJF;调用双字节带符号加法子程序MOV 79H,R5;将 Ui 值送 79H,7AH MOV 7AH,R6 MOV C,25H;将 Ui 值的符号位送 37H MOV 37H,C MOV R1,7DH ;计算 Ui,将 Ui-1 值送 R1,R2 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 36 页,共 44 页武汉理工大学电脑控制技术课程设计31MOV R2,7EH CLR 23H;Ui-1 值的符号位值恒为0 MOV R3,79H;将 Ui 值送 R3,R4 MOV R4,7AH MOV C,37H;将 Ui 值的符号位送 24H MOV 24H,C LCALL SJF;调用双字节带符号加法子程