电阻炉炉温控制系统设计_第1页
电阻炉炉温控制系统设计_第2页
电阻炉炉温控制系统设计_第3页
电阻炉炉温控制系统设计_第4页
电阻炉炉温控制系统设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、中北大学2009届毕业设计说明书1 绪论1.1 研究的目的及意义自从发现电流的热效应(即楞次-焦耳定律)以后,电热法首先用于家用电器,后来又用于实验室小电炉1。随着镍铬合金的发明,到20世纪20年代,电阻炉已在工业上得到广泛应用。工业上用的电阻炉一般由电热元件、砌体、金属壳体、炉门、炉用机械和电气控制系统等组成。加热功率从不足一千瓦到数千千瓦。工作温度在650以下的为低温炉;6501000为中温炉;1000以上为高温炉。在高温和中温炉内主要以辐射方式加热。在低温炉内则以对流传热方式加热,电热元件装在风道内,通过风机强迫炉内气体循环流动,以加强对流传热。电阻炉有室式、井式、台车式、推杆式、步进式

2、、马弗式和隧道式等类型。可控气氛炉、真空炉、流动粒子炉等也都是电阻炉2。电阻炉与火焰炉相比,具有结构简单、炉温均匀、便于控制、加热质量好、无烟尘、无噪声等优点,但使用费较高3。电热元件具有很高的耐热性和高温强度,很低的电阻温度系数和良好的化学稳定性。常用的材料有金属和非金属两大类。金属电热元件材料有镍铬合金、铬铝合金、钨、钼、钽等,一般制成螺旋线、波形线、波形带和波形板。非金属电热元件材料有碳化硅、二硅化钼、石墨和碳等,一般制成棒、管、板、带等形状。电热元件的分布和线路接法,依炉子功率大小和炉温要求而定4。在工农业生产或科学实验中,温度是极为普遍的又极为重要的热工参数之一。为了保证生产过程正常

3、安全地进行,提高产品的质量和数量以及减轻工人的劳动强度,节约能源,对加热用的各种电炉要求在一定条件下保持恒温,不能随电源电压波动或炉内物体而变化,也有的电炉的炉温根据工艺要求按照某个指定的升温或保温规律而变化等。因此,在工农业生产或科学实验中常常要求不断地测量温度,同时还进行控制5。电阻炉是热处理生产中应用最广的加热设备,通过布置在炉内的电热元件将电能转化为热能并借助辐射与对流的传热方式加热工件。热处理是提高金属材料及其制品性能的工艺6。根据不同的目的,将材料及其制件加热到适宜的温度,保温,随后用不同的方法冷却,改变其内部组织,以获得所要求的力学性能,通过热处理可以提高制件的使用效能或寿命7。

4、1.2 温度控制研究目前,我国电阻热处理是提高金属材料及其制品质量的重要手段。近年来随着工业的发展,对金属材料的性能提出了更多更高的要求,因而热处理技术也向着优质、高效、节能、无公害方向发展8。电阻炉是热处理生产中应用最广的加热设备,这样加热时均温过程的测量与控制就成为关键性的技术,促使人们更加积极地研究控制热加工工艺过程的方法9。炉控制设备的现状是一小部分比较先进的设备和大部分比较落后的设备并存。整体上,我国的电阻炉控制系统与国外发达国家相比还比较落后。占主导地位的是仪表控制,这种系统的控制参数由人工选择,需要配置专门的仪表调试人员,费时、费力且不准确。控制精度依赖于试验者的调节,控制精度不

5、高,一旦生产环境发生变化就需要重新设置。操作不方便,控制数据无法保存。因而,对生产工艺的研究很困难,因此造成产品质量低、废品率高、工作人员的劳动强度大、劳动效率低,这些都影响了企业的效益。近年来 ,虽然引进了国外的一些控制器,如日本岛电的r四3型40段(步)可编程pid调节器,全部操作窗口按功能分为6个窗口群,共95个子窗口,其设置仍然繁杂10。 电阻炉是一种具有纯滞后的大惯性系统,开关炉门、加热材料、环境温度以及电网电压等都影响控制过程,传统的加热炉控制系统大多建立在一定的模型基础上,难以保证加热工艺要求11。电阻炉在国民经济中有着广泛的应用,而大功率的电阻炉则应用在各种工业生产过程中。然而

6、,大多数电阻炉存在着各种干扰因素,将会给工业生产带来极大的不便。因此,在电阻炉温度控制系统的设计中,应尽量考虑到如何有效地避免各种干扰因素而采用一个较好的控制方案,选择合适的芯片及控制算法是非常有必要的12。一直以来,人们采用了各种方法来进行温度控制,都没有取得很好的控制效果。起先由于电阻炉的发热体为电阻丝,传统方法大多采用仪表测量温度,并通过控制交流接触器的通断时间比例来控制加热功率。由于模拟仪表本身的测量精度差,加上交流接触器的寿命短,通断比例低,故温度控制精度低,且无法实现按程序设定的升温曲线升温和故障自诊断功能,因此要对传统的温度控制方法进行改造13。如今,随着以微机为核心的温度控制技

7、术不断发展,用微机取代常规控制已成必然,因为它确保了生产过程的正常进行,提高了产品的数量与质量,减轻了工人的劳动强度以及节约了能源,并且能够使加热对象的温度按照某种指定规律变化,而且微型计算机在智能温度测量和控制电器中的控制作用是一种智能行为,所以,它在能量消耗上是比较少的,和普通仪表温度测量相比,智能温度测量与控制电器是一种节能电器。这不但对用户来说具有很大的意义,而且对整个社会来说都是有重大意义的14。1.3 工作内容系统要求电阻炉炉内的温度按图1.1的规律变化。从室温开始到点为自由升温段,温度一旦达到,就进入系统调节;从点到点为保温段,要始终在系统的控制之下,以保证所需的炉内温度的精度,

8、保温的时间为75min;加工结束后,由点到点为自然降温段。图1.1 炉温控制要求炉温变化曲线要求参数:过渡时间100min;超调量10;静态误差2。温度的变化范围为20220,保温值为200。本次设计主要做的是硬件电路的设计及软件的编程,用计算机进行温度的控制,同时采用pid算法使系统获得较好的性能指标。系统分为四个部分:a/d转换、pid控制、外部中断、单片机控制。第 46 页 共 46 页2 系统方案设计2.1 控制方法常见电阻炉的温度控制方法:串级控制;前馈-反馈控制;比值控制;smith预估控制。2.2 工作原理一个反馈系统,在干扰的作用下,被控量偏离给定值,即出现系统偏差时,通过控制

9、器的控制作用来抵消干扰的影响。大多被控制对象有纯滞后现象,因此采用反馈控制提高精度,提高系统的性能指标。2.3 炉温控制系统工作原理电阻炉温度自动控制体统采用了at89s52单片机作为控制器,扩展了数码管显示、键盘、报警及a/d转换电路等,其系统框图如图2.1所示。控制系统采用铂电阻测量加热电阻的入口温度和出口温度,经a/d转换后送入单片机与给定温度比较,其偏差经pid运算后输出,控制晶闸管三相调功模块导通和断开时间的不同来控制电热元件的通断时间,并由此来控制加热电阻的加热温度。控制系统控制固态继电器(ssr)的通断控制循环泵的运转,循环泵不运转,加热炉不能通电加热。入口温度出口温度at89s

10、52固态继电器晶闸管三相调功模块a/d转换键盘、显示加热炉eeprom循环泵报警电路信号处理电路图2.1 电阻炉温度控制系统3 硬件设计及器件选择3.1 单片机的选择选择at89s52单片机作为控制系统的核心,at89s52内部有8kb的程序储存器,256b的数据储存器,因而无需再扩展储存器,使系统大大简化。at89s52主要完成温度的采集、控制、显示和报警等功能。at89s52引脚说明at89s52有40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,at89s52可以按照常规方法进行编程,也可以在线编程。

11、其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。表3.1 at89s52的管脚功能特性主要功能特性: 兼容mcs52指令系统 8k可反复擦写(1000次)flash rom 32个双向i/o口 256x8bit内部ram 3个16位可编程定时/计数器中断 时钟频率0-24mhz 2个串行中断 可编程uart串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能3.2 数据储存器扩展设定的温度曲线需要长期保存,扩展一片串行eeprom at24c256来保存设定的温度曲线。3.2.

12、1 at24c56引脚说明其引脚排列如图3.1所示,管脚配置如表3.2所示。表3.2 at24c256管脚配置管脚名管脚功能a0a1地址线sda数据线scl串口时钟脉冲wp写保护nc未定义 图3.1 at24c256引脚图a0、a1:地址选择输入端。在串行总线结构中,可以连接4个at24c256。用a0、a1来区分各ic。a0、a1悬空时为0。scl:串行时钟输入。上升沿将sda上的数据写入存储器,下降沿从存储器读出数据送sda上。sda:双向串行数据输入输出口。用于存储器与单片机之间的数据交换。wp:写保护输入。此引脚与地相连时,允许写操作;与vcc相连时,所有的写存储器操作被禁止。如果不连

13、,芯片内部下拉到地。vcc:电源。gnd:地。nc:空。3.2.2 at24c256的工作原理at24c256内部有512页,每一页为64字节,任一单元的地址为15位。地址范围0000h7fffh。3.2.3 芯片工作状态1)时钟和数据传送一般情况下,sda被外部的设备拉到高,只有当scl为低电平时,sda上的数据变化,表示要传送数据。scl为高时sda变化表示状态变化。2)开始状态(start) 当scl为高时,sda由高到低表示数据传送开始,这一状态必须在所有命令之前。3)结束状态(stop) 当scl为高时,sda由低到高表示数据传送结束状态。4)应答状态(ack)所有的地址和数据都是以

14、8位的形式串行传送给存储器或从存储器读出的。存储器在第9个时钟周期sda发零信号表示已经收到8位数据。3.3 传感器的选择及设计目前在温度测量领域内除了广泛使用热电偶外,电阻温度计也得到了广泛的应用,尤其工业生产中-120+500范围内的温度测量常常使用电阻温度计。本设计中采用铂电阻来测量温度,由于铂电阻有精度高、稳定性好、性能可靠,且在氧化性气氛中,甚至在高温下的物理、化学性质都非常稳定,在1000的范围内,铂电阻值与温度变化曲线基本是线性的,因此选择其作为电阻温度计,其分度号为,电阻的初值为=100.00,温度每升高1,铂电阻的阻值约增加0.39.其测量放大线路如图3.2所示。图3.2的测

15、量部分是一个不平衡电桥,铂电阻与固定电阻组成不平衡电桥的4个桥臂。为了保证测温的精度,采用两次温压。在0时,铂电阻的阻值为=100.00,电桥平衡,对角线没有电压差;当温度变化时,铂电阻的阻值变为,其变化值与温度成正比,电桥不平衡,使对角线两点有电压差,此电压差送到运算放大器的输入端,经过放大后送到a/d转换芯片。图3.2 铂电阻及其信号放大电路本放大器的整定值如表3.3所示。表3.3 放大器整定值温度/ r/放大器输出/v0.00100.000.0064.0125.161.25128149.842.50192174.043.75256197.965.00由此可知,3.4 a/d转换器的选择及

16、设计模拟输入量采用tlc0834串行a/d转换芯片完成,串行芯片占用单片机口线较少,由于温度变化缓慢,所以转换速度完全可以满足要求。tlc0834简介tlc0834是ti公司生产的八位逐次逼近模数转换器,具有输入可配置的多通道多路器和串行输入方式。tlc0834是ti公司生产的8位逐次逼近模数转换器,具有输入可配置的多通道多路器和串形输入输出方式。其多路器可由软件配置为单端或差分输入,也可以配置为伪差分输入。另外,其输入基准电压大小可以调整。在全8位分辨率下,它允许任意小的模拟电压编码间隔。由于tlc0834采用的是串行输入结构,因此封装体积小,可节省51系列单片机i/0资源,价格也较适中。主

17、要特点如下: 8位分辨率; 易于和微处理器接口或独立使用; 可满量程工作; 可用地址逻辑多路器选通4输入通道; 单5v供电,输入范围为05v; 输入和输出与ttl、cmos电平兼容; 时钟频率为250khz时,其转换时间为32s; 可以和美国国家半导体公司的adc0834和adc0838进行替换,但它内部不带齐纳稳压器网络; 总调整误差为26%。工作特点:tlc0834可通过和控制处理器相连的串行数据链路来传送控制命令,因而可用软件对通道进行选择和输入端进行配置。图3.3 tlc0834引脚图引脚功能:tlc0834的引脚排列如图3.3所示,其中ch0ch3为模拟输入端; cs为片选端;di为

18、串行数据输入,该端仅在多路器寻址时(mux settling time)才被检测;do为a/d转换结果的三态串行输出端;clk为时钟;sart为转换状态输出端,该端为高电平时,表示转换正在进行,为低电平则表示转换完成;ref为参考电压输入端;vcc为电源;dgtl gnd为数字地,angl gnd为模拟地。由图3.4可知,差模运算放大器的输出信号经tlc0834的ch0通道送入tlc0834进行a/d转换,转换后的数字信号通过clk,sart,do(di)三个引脚送入单片机的p1.1p1.3口,使其与设定的温度进行比较,其偏差经pid运算后输出,控制晶闸管三相调功模块导通和断开时间的不同来控制

19、电热元件的通断时间,并由此来控制加热电阻的加热温度。控制系统控制固态继电器(ssr)的通断控制循环泵的运转,循环泵不运转,加热炉不能通电加热。p2.5p2.7接报警电路,温度超限时有声音、灯光两种报警功能。p2.3p2.4接晶闸管三相调功模块和ssr。p0.0p0.3接键盘显示电路。x1、x2接外部晶体和微调电容的一端。p1.1p1.3接数据储存器的test、scl、sda的三个引脚,用于保存电阻炉的出口温度曲线。p3.2接zlg7289a的key引脚,低电平有效,有键按下产生中断。图3.4 炉温模拟量采样电路原理图3.5 显示器、键盘接口设计温度的设定与测量结果通过键盘和数码管显示电路完成。

20、键盘显示电路由zlg7289a芯片完成。3.5.1 zlg7289a的简介zlg7289a是广州周立功单片机发展有限公司自行设计的,具有spi串行接口功能的可同时驱动8位共阴式数码管(或64只独立led)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成led显示键盘接口的全部功能,不需要的按键可以不接。zlg7289a内部含有译码器,可直接接受bcd码或16进制码,并同时具有2种译码方式.此外还具有多种控制指令,如消隐闪烁左移右移段寻址等。zlg7289a具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。系统中扩展了二片zlg7289a驱动12位数码管,用

21、来显示导热油出口温度的给定值,出口温度和入口温度的测量值。键盘由16个键组成,其中10个数字键s1s10用于各种参数的设定;6个功能键s11s16分别是设定键、循环泵启动键、加热启动键、加热停止键、循环泵停止键、修改键。键盘显示电路如图3.5所示。图3.5 键盘显示电路3.5.2 zlg7289a的特点带有串行接口,无需外围元件即可直接驱动led;各位可独立控制译码不译码及消隐和闪烁属性;具有(循环)左移(循环)右移指令;具有段寻址指令,可方便地控制独立的led显示器;内含64键键盘控制器以及去抖动电路;可完全替代其它公司的8279、8155、8255等系列显示器件。3.5.3 zlg7289

22、a的引脚说明zlg7289a芯片具有标准的dip28和soic28两种封装形式。其引脚排列如图3.5所示,各引脚的功能说明见表3.4所列。图3.5 zlg7289a引脚排列图表3.4 引脚功能3.5.4 控制指令说明zlg7289a的控制指令分为二大类:纯指令和带有数据的指令。1)纯指令纯指令包括复位(清除)指令(0a4h)、测试指令(0bfh)、左移指令(0a1h)、右移指令(0a0h)、循环左移指令(0a3h)、循环右移指令(0a2)等。2)带有数据的指令下载数据且按方式0译码指令该指令的格式如下:d7d6d5d4d3d2d1d01 0 0 0 0 a2a1 a0d7 d6 d5 d4 d

23、3 d2 d1d0dp x x x d3 d2 d0 d1该命令由二个字节组成。前半部分为指令,其中a2 a1a0为位地址d0d3数据。当系统接收到此指令时(zlg7289a将按译码方式0进行译码),小数点的显示可由dp位控制,dp为时,小数点显示,dp为0时,小数点不显示。在该指令格式中,表示没有影响。下载数据且按方式译码指令这种指令与上一个指令基本相同。所不同的是,该指令的d0d3对应的数据位0ah0fh分别为七段显示中的a、b、c、d、e、f。该指令的具体格式如下: d7 d6 d5 d4 d3 d2 d1 d0 1 1 0 0 1 a2a1a0d7d6d5d4d3d2d1d0dp x

24、x xd3d2d0d1 读键盘数据指令该指令从zlg7289a读出当前的按键代码,格式如下:d7 d6 d5 d4 d3 d2 d1 d00 0 1 0 1 0 1 0d7d6d5d4d3d2d1d0d7d6d5d4d3d2d0d1与其它指令不同的是,此命令的前一个字节00010101b为单片机传送到zlg7289a的指令,而后一个字节d0d7则为zlg7289a返回的按键代码。其范围为03fh(无键按下时为0ffh)。在此指令的前半段,zlg7289a的data引脚处于高阻输入状态,可以用来接收来自微处理器的指令;在指令的后半段,data引脚从输入状态转为输出状态,此时将输出键盘代码的值。故

25、微处理器连接到data引脚的i/o口应当有一个从输出态到输入态的转换过程。当zlg7289a检测到有效的按键时,key脚将从高电平变为低电平,并一直保持到按键结束。在此期间,如果zlg7289a接收到“读键盘数据指令”,则输出当前按键的键盘代码;如果在接收到“读键盘数据指令”时没有有效按键,zlg7289a将输出ffh(11111111b)。其它指令除以上几个指令外,zlg7289a还具有下载数据但不译码、闪烁控制、消隐控制、段点亮指令、段关闭等指令。3.6 执行器件的选择选择交流接触器控制循环泵,晶闸管三相调功模块控制加热元件。三相调功模块内部含有晶闸管主电路、过零触发及控制电路和强弱电隔离

26、电路,并有1个5引脚的控制插口,由单片机控制其导通和关断的时间完成对电热元件的加热,达到温度控制的目的。固态继电器是用半导体器件代替传统电接点作为切换装置的具有继电器特性的无触点开关器件,为四端有源器件,其中两个输入控制端,两个输出端,输入输出间为光隔离,输人端加上直流或脉冲信号到一定电流值后,输出端1,2就能从断态转变成通态,从而接通交流或直流电路。 图3.8 固态继电器内部结构框图固态继电器就相当于一个无触点的开关,如图3.9所示,通过对输入控制端信号的给定,对电源(交流或直流)的通断进行控制。 图3.9 固态继电器外部框图3.7 报警电路与状态显示电路报警电路由蜂鸣器和发光二极管组成,当

27、系统中温度超限时,灯光报警。 4 数学模型与控制算法4.1 数学模型建立为了使系统获得较好的性能指标,首先要了解被控对象的的特性,并用以作为设计自动控制系统的依据。电阻炉温度控制采用数字pid调节规律,为了确定pid上的参数,采用飞升曲线法来确定电阻炉温度控制的传递参数。电阻炉出口温度飞升曲线如图4.1所示:图4.1 电阻炉出口温度的飞升曲线由图可知,系统是带纯滞后的一阶对象,其传递函数为:,式中为放大倍数;为对象时间常数;为对象滞后时间。一阶对象参数的求取:对于一阶对象的放大倍数,可由输出稳态值和输入阶跃信号幅值的比值球得。输出从起始值达到0.632倍稳态值的时间为对象时间常数,而滞后时间可

28、直接从图中测量。根据温度变化曲线的要求,可将其分为三段来进行控制:自由升温段,保温段和自然降温段。而真正需要电气控制的是前面两个阶段,即自由升温段和保温段。为避免过冲,从室温到额定温度为自由升温段,在20%额定温度时为保温段。在自由升温段中,希望升温越快越好,总是将加热功率全开,因此得到自由升温段控制方程:当温度时,已较接近需要保温的值,为此采用保温段控制方程。保温控制方法有多种,如果采用比例控制,由于电热元件所加功率的变化和油温变化之间存在一段时间延迟,因此当以温差来控制输出时,系统只有在温度与给定值相等时才停止输出。这时由于电阻炉变化的延迟性质,炉温并不因输入停止而马上停止上升,从而超过给

29、定值。滞后时间越大,超过给定值也越大。炉温上升到一定程度后,才开始下降,并下降到小于给定值时系统才重新输出。同样,由于炉温变化滞后于输出,它将继续下降,从而造成温度的上下波动,即所谓的振荡。考虑到滞后的影响,调节规律必须加入微分因数,即pd调节。有了pd调节,系统输出不仅取决于温差的大小,还取决于温差的变化速率。当炉温从自由升温段进入保温段时, 炉温还小于给定值,但温度变化较大,因而系统可以提前减少或停止输出,使炉温不至于出现过大的超调。同样,在降温过程中也是如此。这样就改善了炉温调节的动态品质。积分作用可以提高温度控制的静态精度,适当选择积分作用,则可以在不影响动态性能情况下提高温度控制的精

30、度。所以保温段控制最好采用pid控制方法。 4.2 pid算法和参数选定 连续系统pid校正的控制量可以表示为: (式4-1) (式4-2)采用离散算法可以表示为(增量式):(式4-3)式中,为采样周期,微分时间,比例系数,积分时间。本系统中将用到的实际算法为: (式4-4)4.3 数字控制器的实现根据上述连续系统原理设计出来的模拟调节器,经离散化后变成适合于计算机计算的差分方程。根据差分方程就可以设计程序流程图,进行程序设计。5 程序流程图6 软件设计软件设计采用c51语言,模块化结构设计,包括初始化程序、主程序、a/d转换和数据采集程序、pid控制算法程序、键盘显示程序等。主程序:cs1

31、bit p0.0cs2 bit p0.1clkz bit p0.2dioz bit p0.3clk bit p1.4di bit p1,6cs bit p1.7key bit p3.2key-zt bit 00hbiy-cnt data 30hdelay1 data 31hdecimal data 32hrec-buf data 33hsend-buf data 34h org 0000h jmp main org 0003h ajmp read-key 0rg 0030h main: setb cs setb dio ;延时25ms call delay mov send-buf,#1010

32、0100b call send-7289 setb cs ;初始化7289 end;*参数1示子程序*display1: ;显示数字子程序 mov send-buf,#80h ;最低位数码管显示 call send-7289 mov send-buf,dat0 call send-7289 mov send-buf,#81h ;次低位数码管显示 call send-7289 mov send-buf,dat1 call send-7289 setb cs1 retread-key: ;键盘中断子程序 mov send-buf,#00010101b call send call receive

33、setb cs2mov b,#10mov a,rec-bufdiv abmov decimal,amov send-buf,#10100001bcall send-7289setb cs2mov send-buf,#10100001bcall send-7289setb cs2mov send-buf,#10000001bcall send-7289mov seng-buf,decimalcall send-7289setb cs2call display1 reti;*由zlg7289a接收一字节数据,高位在前*receive: setb key-zt call send-7289 call

34、 receive mov a,key-zt mov rec-buf,a mov bit-cnt,#8 setb dat call long-delay jb key-zt,l1 lcall del10ms jb key-zt,l1 jnb s11,l2 jnb s12,l3 jnb s13,l4 jnb s14,l5 jnb s15,l6 jnb s16,l2l2:lcall receivel3: setb p2.4 lcall del100min cjne a,#100,p1 sjmp p3p1:jnc p2sjmp p3p2:lcall soundp3:retlcall read-keyl

35、4: setb p2.3 lcall adconvl5: clr p2.3 lcall read-keyl6: clr p2.4 lcall read-keyreceive-lp: setb clkz call short-delay mov c,dioz mov a,rec-buf rlc a mov rec-buf,a clr clkz call short-delay djnz bit-cnt,receive-lp clr diozret;*显示子程序,发送一字节到zlg7289a*send-7289: mov bit-cnt,#8 clr cs2 call long-delaysend

36、-lp: mov a,send-buf rlc a mov send-buf,a mov dioz,c nop nop setb clkz call short-delay clr clkz call short-delay djnz bit-cnt,send-lp clr dioz retlong-selay: ;50us mov r6,#50 djnz r6,$ retshort-selay: ;10us mov r6,#10 djnz r6,$retdel25ms:mov r7,#25s2:mov r6,#250s1:djnz r6,s1djnz r7,s2nopnopretdel75m

37、in:mov r7,#36s3: mov r6,#250s2: mov r5,#250s1: mov r4,#250s0: djnz r4,s0 djnz r5,s1 djnz r6,s2 djnz r7,s3 nop nop ret del10ms:mov r7,#10s2:mov r6,#250s1:djnz r6,s1djnz r7,s2nopnop retdel100min:mov r7,#48s3: mov r6,#250s2: mov r5,#250s1: mov r4,#250s0: djnz r4,s0 djnz r5,s1 djnz r6,s2 djnz r7,s3 ajmp

38、 $ ret ;*启动a/d转换子程序*adconv: clr clk ;清时钟 clr di setb cs ;置片选为高 clr cs ;置片选为低 setb di setb clk clr clk setb di ;1 setb clk clr clk clr di ;0 setb clk clr clk ;选择ch0,单端输入 setb clkclr clk ;由输出状态改为输入状态 setb di lcall adreadret;*tlc0834读取采样数据子程序*adread: mov r0,#08hadlop0: ;读取转化结果 mov c,di rlc a ;累加器a左移,将结

39、果逐位移入a中 setb clk clr clk djnz r0,adlop0 mov r0,#07hadlop1: setb clk clr clk djnz r0,adlop1 setb clk clr clk setb clk clr clk setb cs ;置片选信号位高 lcall display1ret ;结束一次转换;*实测温度值与设定温度值比较子程序*temp: temp1 equ 50hsti equ 51hst2 equ 52hf0 bit p2.5f1 bit p2.6f2 bit p2.7temp-h: ;与上线温度比较mov a,send-7289mov r0,#2

40、20cjne a,r0,loop1sjmp loop3retloop1: jc hp lcall vd1 retloop3: rettemp-l ;与下线温度比较 mov a,send-7289 mov r0,#20 cjne a,r0,l1 sjmp l3l1: jnc hp lcall vd2l3: ret;*报警子程序*vd1: setb p2.5 clr p2.5 mov r7,#1ehdl: mov r6,#0f9hdl1: djnz r6,dl1 djnz r7,dl ajmp $ setb p2.5vd2: setb p2.6 clr p2.6 mov r7,#1ehdl: mo

41、v r6,#0f9hdl1: djnz r6,dl1 djnz r7,dl ajmp $ setb p2.6del75min:mov r7,#18s3: mov r6,#250s2: mov r5,#250s1: mov r4,#250s0: djnz r4,s0 djnz r5,s1 djnz r6,s2 djnz r7,s3 ajmp $ ret sound: setb p2.7 clr p2.7 mov r7,#1ehdl: mov r6,#0f9hdl1: djnz r6,dl1 djnz r7,dl ajmp $ setb p2.7hp: clr 07h mov a,#200 mov

42、 r2,a mov a,r3 mov r7,a clrlp: mov a,r0 subb a,r1 mov r0,a inc ro inc r1 djnz r7,lp jnc lp0 setb 07h cjne r0,#2b,lp1 lcall del100min lcall pidlp1: jc lp2 lcall read-key retlp0: mov a,r2 mov r0,a retlp2: lcall del100min lcall pid retjb p2.3,lp3lcall adconvlp3: lcall read-keypid: mov 22h,#0 mov 23h,#0

43、 mov 24h,5ch mov 25h,5dh ;load e(n) mov 26h,5eh mov 27h,5fh ;load e(n-1) mov a,24h jnb acc.7,f-is-p ;e(n)为正跳转 mov 22h,#0ffh ;e(n)为负 mov 23h,#0ffh ;扩展符号位f-is-p: mov r0,#25h mov r1,#27h lcall sr01t0-4byte ;e(n)-e(n-1) mov r0,#25h mov r1,#27h lcall sr01t0-4byte ;-e(n-1) mov r0,#25h mov r1,#61h ;e(n-2)

44、lcall ar01t0-4byte ;+e(n-2) mov r1,#42h lcall imul ;有符号乘法子程序 mov 2ch,#0 mov 2dh,#0 mov 2eh,5ch mov 2fh,5dh ;load e(n) mov a,2eh jnb acc.7,c-is-p mov 2ch,#0ffh mov 2dh,#0ffhc-is-p: mov r0,#2ch mov r1,#64h ;ki lcall imul ;kie(n) mov a,2fh add a,25h mov 2bh,a mov a,2eh addc a,24h mov 2ah,a mov a,2dh ad

45、dc a,23h mov 29h,a mov a,2ch addc a,22h mov 28h,a ;kie(n)+kde(n)-2e(n-1)+e(n-2) mov r0,#28h lcall idiv ;有符号除法子程序 mov 2fh,5dh mov 2eh,5ch ;load e(n)mov 2dh,#0 mov 2ch,#0 mov a,2eh jnb acc.7,s-is-p mov 2ch,#0ffh mov 2dh,#0ffhs-is-p: mov r0,#2fh mov r1,#5fh ;load e(n-1) lcall sro1t0-4byte ;e(n)-e(n-1)m

46、ov a,2fh add a,2bh mov 2bh,a mov a,2eh addc a,2ah mov 2ah,a mov a,2dh addc a,29h mov 29h,a mov a,2ch addc a,28h mov 28h,a ;a+b+c mov r0,#28h mov r1,#3eh ;kp lcall imul ;kp*(a+b+c) mov r0,#28h lcall idiv mov a,2ah jnz not-set1 mov a,2bh jnz not-seti mov 2ah,#0 mov 2bh,#1not-set1: mov r0,#15h mov r1,#2bh lcall ar01t0 outzh ;计算pid输出值 ret;*有符号乘法子程序*imul: mov 24h,r1 mov a,r1 add a,r2 dec a mov a,r1 mov a,r1 anl a,#80h mov r6,a jz neg0neg1: mov r1,24h mov 22h,r2 acall negtun neg0: mov 28h,r0 mov a,r0 add a,r3 dec a mov r0,a mov a,r0 anl a,#80h jz ddomul mov r1,

温馨提示

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

评论

0/150

提交评论