电热培养箱单片机pwm温度控制系统本科学位论文_第1页
电热培养箱单片机pwm温度控制系统本科学位论文_第2页
电热培养箱单片机pwm温度控制系统本科学位论文_第3页
电热培养箱单片机pwm温度控制系统本科学位论文_第4页
电热培养箱单片机pwm温度控制系统本科学位论文_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

摘要Ⅰ摘要本文设计了一个基于AT89S52单片机的电热培养箱温度控制系统,阐述了系统的工作原理、硬件电路以及软件设计。详细论述了数字PID控制器的原理及其在温度控系统中的应用,将增量式PID和PWM脉宽调制技术相结合.此外本系统采用DS18B20新型单总线数字温度传感器集温度测量和A/D转换于一体,直接输出数字量,与单片机接口电路简单。该系统经过实验,取得了较为满意的控制效果。本系统由核心处理模块、温度采集模块、键盘显示模块、及控制执行模块等模块组成主要完成成对电热培养箱箱内的温度测量、显示;系统过热保护并报警;手动设置温度;温度智能调节等功能。关键词:温度控制;AT89C51单片机;DS18B20;PID控制;PWM波ABSTRACTⅡABSTRACTThispaperdesignedamicrocontrollerAT89S52-basedelectricincubatortemperaturecontrolsystem,describedtheworkingprincipleofthesystem,thehardwarecircuitandsoftwaredesign.DiscussedindetailtheprinciplesofdigitalPIDcontrolleranditsapplicationoftemperature-controlsystemwillbeincrementalPIDandPWMpulsewidthmodulationtechniquescombined.Furthermore,thissystemusesDS18B20newsingle-busdigitaltemperaturesensorsetoftemperaturemeasurementandA/Dconversioninone,thedirectoutputofdigitalwiththemicrocontrollerinterfacecircuitissimple.Thesystemisexperimental,andachievedrelativelysatisfactorycontroleffect.Thissystemconsistsofthecoreprocessingmodule,thetemperatureacquisitionmodule,keyboarddisplaymodule,andcontroltheimplementationofmodulesmodulesCompletedinpairsinsidethemainelectricincubatortemperaturemeasurement,display;systemover-temperatureprotectionandalarm;manuallysetthetemperature;temperatureofintelligentregulationandotherfunctions.Keywords:temperaturecontrol;AT89C51microcontroller;DS18B20;PIDcontrol;PWMwave目录目录第一章引言 11.1课题的背景和意义 11.2课题研究的内容 1第二章系统设计原理与方案论证 22.1系统设计总体框图 22.2总体方案的论证 32.3各部分电路方案的论证 3第三章核心处理模块 53.1AT89S52简介 53.2核心处理模块电路的整体设计 53.3I/O口的分配 6第四章键盘显示模块 74.1显示电路部分 74.2键盘电路部分 10第五章温度采集模块 125.1温度传感器DS18B20内部结构 125.2硬件连接 135.3软件实现 13第六章控制执行模块 146.1控制执行模块电路 146.2控制执行程序设计 156.2.1PWM波设计 166.2.2PID控制算法 166.2.3PID参数整定 17第七章其他电路设计 197.1电源电路 197.2系统过热保护电路 197.3报警控制电路 19结论 20参考文献 21致谢 22附录 23第一章引言1第一章引言课题的背景意义随着微电子技术和微型计算机的迅猛发展,微机测量和控制技术以其逻辑简单、控制灵活、使用方便及性能价格比高的优点得到了迅猛发展和广泛应用。它不仅在航空、航天、铁路交通、冶金,电力、石油化工等领域获得了广泛应用,而且其技术在日常生活小诸如电梯、微波炉、电冰箱、智能照相机、电动玩具、全/半自动洗衣机、智能空调、携带式心脏监护机等高科技产品中也具有广阔的使用前景,尤其是许多智能仪表和测控系统中引入电脑控制技术后,使传统仪器、仪表设备发生了根本变化,为工业生产的自动化、智能化奠定了坚实的技术基础。温度控制是无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用,过低的温度或过高的温度都会使资源失去应有的作用,从而造成资源的巨大浪费。特别是在当前全球能源极度缺乏的情况下,我们更应该掌握好对温度的控制,把身边的能源好好地利用起来。在现代冶金、石油、化工及电力生产过程中,温度是极为重要而又普遍的热工参数之一。在环境恶劣或温度较高等场合下,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对温度进行测、显示、控制,使之达到工艺标准,以单片机为核心设计的箱温控制系统,可以同时采集多个数据,并将数据通过通讯口送至上位机进行显示和控制。那么无论是哪种控制,我们都希望温度控制系统能够有很高的精确度(起码是在满足我们要求的范围内),帮助我们实现我们想要的控制,解决身边的问题。在计算机没有发明之前,这些控制都是我们难以想象的。而当今,随着电子行业的迅猛发展,计算机技术和传感器技术的不断改进,而且计算机和传感器的价格也日益降低,可靠性逐步提高,用信息技术来实现温度控制并提高控制的精确度不仅是可以达到的而且是容易实现的。用高新技术来解决工业生产问题,以此来加强工业化建设,提高人民的生活水平和生活质量。1.2课题研究的内容培养箱是科研实验的必需设备,主要适用于医疗卫生、医药、生物、农业、科研单位等部门作储藏菌种、生物培养之用。本课题对电热培养箱的控制更是要很好的把温度稳定在某个值或某个区间。因此此课题采用以单片机AT89S52为控制核心。并采用了数字PID控制算法结合PWM脉宽调制技术对培养箱温度进行控制,从而实现对电热培养箱的温度进行实时精确测量、自动检测和控制,有效的提高了控制系统的实时性和控制精度,大大改善了电热培养箱温度控制的自动化程度,具有高的实用价。第二章系统设计原理与方案论证第三章核心处理模块3.1硬件介绍本系统采用ATMEL公司的51系列单片机AT89S52作为电路的控制核心,利用软件编程可实现各种控制算法和逻辑控制。AT89C52芯片时钟频率最高33HZ运算速度快,控制功能完善。其内部具有256字节RAM。而且还带有8KB闪速式存储器,不需要外扩展存储器,可使系统整体结构更为简单、实用。同时具有32条输入输出线,16位定时计数器,5个中断源,1个串行口。其封装引脚如图2所示图2AT89S52封装引脚图3.2核心处理模块电路的整体设计本核心处理模块的整体设计由单片机的最小系统组成。由单片机、复位电路、晶振电路组成。复位电路:由电容串联电阻构成,并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)。图3核心处理模块电路原理图3.3I/O口的分配P0.0~P0.7为七段数码管的片选输出端P2.0~P2.5为七段数码管的位选输出端P1.0为温度信号输入端P1.1为PWM脉冲输出端P1.2为报警信号输出端P1.3为过热保护输出端P1.4为设定温度“+”键的输入端P1.5为设定温度“-”键的输入端第四章键盘显示模块第四章键盘显示模块第四章键盘显示模块键盘和显示电路是电热培养箱温控系统与用户的接口,用户通过显示来观察温度等状态值,再根据观察到的值,通过键盘对电热培养箱进行控制。本章设计了较为合理的键盘和显示电路完成这些功能。4.1显示电路部分4.1.1显示电路的硬件结构显示及键盘电路如图4所示图4键盘和显示电路本系统采用因为本系统采用的是共阳极LED显示器,位选应接高电平,P2口输出的段选信号,通过74LS245芯片接LED段码引脚,74LS245的高电平输出电流在15毫安左右,可以驱动LED显示。另外74LS245的输出接上拉电阻,帮助驱动显示器。LED显示器是由发光二极管显示子段组成的显示器件。在单片机系统中通常使用的是七段LED显示器,这种显示器有共阴极共阳极两种,在这次设计中选用阳极LED显示器。共阳极七段LED显示器的管脚如图5所示图5共阳极七段LED显示器的管脚表1共阴极LED显示器七段码显示字符共阴极七段码显示字符共阴极七段码0C05921F96832A47F83B08804999984.1.2显示电路工作原理温度由来自单片机P2.0(RXD)口输出的数据,通过串入并出移位寄存器74L5164来驱动3位七段LED数码显示,显示温度值的十位、个位、小数位。显示范围为0.0℃~99.0℃。AT89S51P2.0三位AT89S51P2.0三位七段数码显示串入并出移位寄存器74L5164图6显示模块的组成框图4.1.3显示扫描子程序显示扫描子程序完成6位共阳数码管的扫描显示任务。图7所示为显示扫描子程序的流程图。图7显示扫描子程序的流程图显示程序如下:voiddis_temp(uintt) //显示温度数值函数t传递的是整形的温度值{ uchari; i=t/100; //除以100得到的商,为温度的十位 yi=1; P0=table[i]; //在第一个数码管上显示 delay(5); yi=0; i=t%100/10; //100取余再除以10得到商,为温度的个位 er=1; P0=table[i+10]; //在第二个数码管上显示 delay(5); er=0; i=t%100%10; //100取余再用10取余,为温度的小数位 san=1; P0=table[i]; //在第三个数码管上显示 delay(5); san=0;}4.2键盘电路部分为使用户使用界面尽量简单,本文采用两个按键,通过按键来实现温度设置。键盘与单片机的连接如图4所示。4.2.1独立式键盘工作原理因为键盘较少所以用简单的独立式键盘,它的优点是编程简单,缺点是占用I/O口多,适用于键盘较少的电路。键盘的工作原理是按键的一端高电平,另一端已单片机的某个I/O口相连,当按键闭合时,即相当于该I/O口通过按键已电源相连,变成高电平,程序一旦检测到I/O口变为高电平则说明在年间被按下,然后执行相应的指令。这是基本原理,在具体实现时还要考虑键盘的延时去抖,去抖的原理是,当检测到有键按下时,单片机先不动作,延时10毫秒以后,单片机再次检测按键是否按下,如果还是按下,就说明此键确实是按下状态,单片机执行相应操作。4.2.2键盘扫描电路程序其中S1为温度加键,S2为温度减键,当按S1键时,设置温度加0.5度。当按S2键时,设置温度减0.5度。但是由于系统要求在5度至70度之间所有在减到5或加到70后就不在进行加减。图8所示为键盘扫描子程序的流程图。实现程序如下:voidkeyscan() //键盘扫描{ if(key_up==0) //数字加按键按下{ delay(5); //延时消除按键抖动 if(key_up==0) //确认数字加按键按下 {if(wendu_c>=700)//限定温度上限70度wendu_c=700; elsewendu_c=wendu_c+5; //温度初始值加0.5度 } while(key_up==0) { dic_temp(wendu_c); //显示的方式等待按键松开 } } if(key_down==0) //数字减按键按下 { delay(5); //延时消除按键抖动 if(key_down==0) //确认数字减按键按下 { if(wendu_c<=50)//限定温度下限5度wendu_c=50; elsewendu_c=wendu_c-5; //温度初始值减值0.5度 } while(key_down==0) { dic_temp(wendu_c); //显示的方式等待按键松开 } } dic_temp(wendu_c); //显示调整后的温度初始值}图7显示扫描子程序的流程图第五章温度采集模块第五章温度采集模块第五章温度采集模块本系统选用的是数字式的温度传感器DSl8B20。DSl8B20是美国Dallas半导体公司生产的新一代数字式温度传感器,采用TO一92封装。它具有独特的单总线接口方式,将地址线、数据线、控制线复用为一根信号线。输入输出均为数字信号。这使得其与单片机接口变得十分简单,克服了模拟式传感器与微机接口时需要的AD转换器及其它复杂外围电路的缺点,由它组成的温度测控系统非常方便,而且成本低、体积小、可靠性高。DSl8B20供电电压范围为3.0~5.5V。测温范围:-55℃—125℃,测量分辨率为0.0625℃,在-10℃—85℃范围内,精度为±0.5℃;从DSl8B20中读取数据和向DSl8B20写人命令仅需要一根信号线就可完成。采用单根信号线,既可以传输时钟信号,又能传输数据,并且数据的传输是双向的;在温度采集的通道上省去了模数转换电路.可以直接让单片机与温度传感器的数据引脚相连,通过指令控制传感器测量温度。采用这种方法简化了系统的硬件结构。5.1温度传感器DS18B20内部结构DS18B20内部结构如图8所示,主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL配置寄存器。DS18B20的管脚排列如图9所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输人端(在寄生电源接线方式时接地)。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X^8+X^5+X^4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。图8DSI81320的内部结构图9DS18B20的管脚排列5.2硬件连接图10以MCS一51系列单片机为例,画出了DS18B20与微处理器的典型连接。图2(a)中DS18B20采用寄生电源方式,其VDD和GNG端均接地,图2(b)中DS18B20采用外接电源方式,其VDD端用3V~55V电源供电。本系统采用了b图的外接电源的方式。图10DS18B20与微处理器的典型连接图5.3软件实现基于DS18B20的温度测控系统硬件电路简单,但是工作必须严格遵守单总线器件的工作时序。因此程序比较复杂,详细见附录1。第六章控制执行模块第六章控制执行模块第六章控制执行模块AT89S52是整个系统的CPU.测量的温度由DSl8B20数字温度传感器检测并直接转换成数字信号,单片机将该温度值与被控制值(设定温度值)进行比较,计算出温度偏差,根据其偏差值的大小,然后采用PID控制算法并计算出相应的控制输出量,最后通过D/A转换电路(这里采用PWM调功方式,相当于D/A转换器)控制固态继电器在控制周期内的通断占空比(即控制电阻炉平均功率的大小),将控制输出量输出,控制加热器工作,进而达到对温度进行控制的目的。6.1控制执行模块连接电路为了简化输出通道的硬件结构,考虑到加热系统具有较大的热惯性,本系统采用脉冲宽度调制的控制方法(即PWM波控制)。微机系统输出高电平时,使双向可控硅道通,电热丝通电,输出低电平时,双向可控硅截止,电热丝断电。脉冲宽度T1与周期T的比值为ρ(占空比),他反映了系统的输出控制量,我们实质控制的就是这量。当环境温度下降时,输出信号增大,输出脉宽增大,电热丝加热时间增长,环境温度上升。反之,当环境温度上升时,输出减少,输出脉宽减少,电热丝加热时间减少,环境温度下降。温控过程中功率电路输出的脉冲电流方波宽度始终受温度差信号的调节控制原理如图11所示图11PWM控制原理图执行信号输出通道的原理图如图12所示,AT89S52的输出信号经过光电耦合器,直接控制双向可控硅的门极,从而控制电热丝的平均加热功率。这样使输出通道省去了D/A转换器和可控硅移相触发电路,大大的简化了硬件。而且可控硅在工作在过零触发状态,提高了设备的功率因数,减轻了对电网的干扰。光电耦合器的光敏三极管所能通过的电流足以触发5A的双向可控硅,其间不必功放环节。可控硅门极回路与220V电源相通,光电耦合器的绝缘耐压,能有效地把微机系统与220V强电隔离。图12执行控制原理图6.2控制执行程序设计控制执行程序设计主要包括:PWM波的设计、PID控制算法设计等。控制执行程序流程图如图13所示。图13控制执行程序流程图6.2.1PWM波的设计PWM控制采用软件定时器实现,定时器以工频周期为基本计数周期进行加法定时。定时器采用工作方式0,时基定为100毫秒。这里假定PWM波的周期为10秒,把每个周期分成M=100份,由PID算法得到一个0~100之间整数形式的输出控制量N。一个周期开始时M=0,P1.1脚输出高电平,加热器停止加热,每100毫秒M加l,当M小于等于由PID算法得出的控制量时,P1.1脚电平翻转输出低电平,这时加热器开始加热,直到M加到100,重新开始下一个控制周期。等到下一周期开始P1.1脚电平又被置为高电平,如此反复进行便产生温度控制的PWM波。具体实现程序如下:#defineV_TH00X3C#defineV_TL00XB0#defineV_TMOD0X01voidtimer0(void)interrupt1{TH0=V_TH0;//恢复定时器初始值TL0=V_TL0;ET0=1;EA=1;TR0=1;click++;if(click>=100)//判断采样周期是否到?{click=0;zhouqi=1;}if(click<=ZKB)//判断脉宽定时周期是否到?从而实现占空比的调整shuchu=1;else shuchu=0;}6.2.2PID控制算法温度PID控制原理是先求出实测温度与设定温度的偏差值。然后对偏差值进行比例积分与微分数值处理,得到的控制输出信号用来控制加热,使温度控制在设定的温度范围内。温控系统采用的数字PID算法,具体算法采用的是增量式PID算法,增量PID算法的优点是编程简单,数据可以递推使用,占用存储空间少,运算快.用软件来实现。所谓增量式PID是指数字控制器的输出只是控制量的增量∆u(K),增量式PID控制系统的系统如图14所示。图14增量式PID控制系统框图通过离散化过程,可得离散的PID表达式为:式中:k为采样序号,k=O、1、2、3、……;u(k)为第k次采样时刻的计算机输出值;e(k)为第k次采样时刻输入的偏差值;e(k-1)为第k-1次采样时刻输入的偏差值;Ki=Ts/Ti;KD=TD/Ts。可由式(1)导出提供增量的PID控制算式,根据递推原理可得:用式(1)减去式(2),可得:可见。控制系统的输出仅仅与最近3次的偏差有关。在确定了Ts、Ti、TD、Kc之后,根据最近3次的偏差即可求出控制增量。6.2.3PID参数的整定PID参数的设定决定了升温速度和系统的稳定性。面对不同的控制对象参数都不相同。根据这些参数在整个PID控制过程中的作用。根据实验现象具体调节。1)温度很迅速就能达到目标值,但是过冲很大。出现这种现象的可能原因是:比例系数太大,致使在达到设定值之前温度上升比例过高;微分系数过小,致使对控制对象的反应不够灵敏。2)温度经常达不到目标值,小于目标值的时间较长.出现这种现象的可能原因是:比例系数过小,升温比例不够;积分系数过小,对恒定偏差补偿不足。3)基本上能够控制在目标温度上,但上下偏差很大经常波动.出现这种现象的可能原因是:微分系数过小,对即时变化反应不够迅速;积分系数过大,使微分反应被淹没钝化;设定的基本控制周期过短,加热没来得及传到测温点上。PID参数的调整步骤一般为先比例,后积分,再微分的整定步骤.编程时先设定他们的大概数值。然后通过反复实验调试,根据实验现象最终选定比较理想的参数值。对温度控制系统,通过实验测量,被控对象的纯滞后时间为120秒。γ=120s。测得加热炉丝的温度相对时间的阶跃响应曲线.由阶跃响应曲线可以确定T=240s,K=O.5,对象的数学模型为一阶惯带延迟的近似环节特性:采样周期的选择是温度控制系统的关键问题之一,通过对电阻炉加热试验,选择瓦--20s是由控制系统的稳定条件以及微控制器执行控制程序所耗费的时间反复试验确定的。得到对象的数学近似模型,结合MATLAB仿真结果.结合试验反复调试其控制参数,直到得到满意的输出控制曲线为止,温度控制曲线如图15所示,最后得到PID参数:K=4.5,Ti=66.7,耻10,从控制曲线来看对于电阻炉这种惯性环节其动态及稳态特性均令人满意。图15温度控制曲线具体程序如下:voiddeal(uintt) //加热控制函数{ TR0=1;if(zhouqi==1)//进行PID算法,求新的占空比 { zhouqi=0; ek=wendu_c-t;//计算偏差u_k=kp*(ek-ek1)+ki*ek+kd*(ek-2*ek1+ek2);//计算增量uk=uk1+u_k;zkc=100*uk/uc; if(zkc>=95)zkc=95; kkk=(int)zkc; }if(t>=wendu_c)//大于设定值shuchu=0;//输出高电平第七章其他电路的设计else //小于设定值 {ZKB=(int)zkc;//调整新的脉宽定时,即新的占空比if(click<=ZKB)shuchu=1; else shuchu=0; }}第七章其他电路的设计7.1电源电路对于电热培养箱来讲,最常用、最方便的电源当然是220V的工频交流电源,但电热培养箱控制系统需要的是稳定的+5V电源,所以要为控制系统设计直流电源电路。由于本设计由+5V电压供电,并且+5V是主电源。变压器分别采用220/8的变压器,稳压电路分别采用集成稳压器件7805进行稳压。图16为系统+5V直流电源的整体图。图16系统直流电源总图7.2系统过热保护电路为了在关机和超温保护的状态下能可靠地关断加热电源,电路中加入了继电器控制加热电源。当温度超过72°C时,单片机的P1.3口发出高电平直接将继电器关断,从而避免了电热培养箱温度过高,起到了保护作用。电路连线如图12所示。7.3报警控制电路报警输出三极管的集电极接蜂鸣器,蜂鸣器的另一端接正5伏电源。有P1.2口控制报警电路,当温度超标时P1.2口输出高电平报警,不报警时将P1.2口置低电平。结论结论本课题设计了一个以89S52单片机为核心配合其他外围电路的电热培养箱智能控制系统,完成了对电路培养箱容器内的温度测量、显示;温度过高报警;手动设定温度;温度过低智能电加热等功能模块的设计。1完成了电热培养箱的温度的测量和显示电路的设计,并作了硬件调试,调试结果较为理想,得到了误差较小的温度测量。2通过对温度的测量监控,实现了系统过热报警、智能加热等功能。3完成了键盘和显示电路的设计,实现了温度时间共六位动态显示,和2个独立键盘输入。4用键盘实现了手动设置温度等功能。参考文献参考文献[1].李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,1999.[2].顾德英.计算机控制技术(第2版)[M].北京:北京邮电大学出版社,2005.[3].赵全利.单片机原理及应用教程(第2版)[M].北京:机械工业出版社,2007.[4].王兆安.电力电子技术(第4版)[M].北京:机械工业出版社,2009.[5].DallasSemiconductor.DS18B20Datasheet[P].2002.[6].马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社.2003.[7].陶永华.新型PID控制及其应用[M].北京:机械工业出版社.2002.[8].马云峰.数字温度传感器DS18B20的原理与应用[J].电子元器件应用.2003附录致谢致谢在这次毕业设计的整个过程中,很多老师和同学给予了我细心的指导和热心的帮助,让我顺利完成了这份我比较满意的作品,在此深表感谢!真诚地感谢在整个毕业设计过程中帮助过我的每一个人。首先,也是最主要感谢的是我的指导老师,胡熹平老师。在整个课程设计和毕业设计过程中,胡老师在选题、开题、设计方案的确定与细化等方面都给了我耐心、细致的指导;同时,胡老师还仔细地审阅我的论文,为我指出错误、提出修改方法。胡老师诲人不倦、一丝不苟、严肃认真的治学风格给我留下了深刻印象,值得我认真学习。在此,谨向指导老师吴老师致以真诚的谢意!最后,要感谢在毕业设计过程中一路走来帮助过我的人,虽然各自选择的题目不一样,当我有难题的时候他们一样伸出热情的援助之手,在此深表感谢,也祝你们顺利完成毕业设计!

附录附录1主程序流程图和程序系统程序如下#include<reg52.h>#defineuintunsignedint#defineucharunsignedchar#defineV_TH00X3C#defineV_TL00XB0#defineV_TMOD0X01sbitds=P1^0; //温度传感器信号线sbitbeep=P1^1; //蜂鸣器sbitkey_up=P1^2; //数字加按键sbitkey_down=P1^3; //数字减按键sbitshuchu=P1^4;//控制输出sbitbaohu=P1^5;//系统过热保护sbityi=P2^0;//位选口定义sbiter=P2^1;sbitsan=P2^2;sbitsi=P2^3;sbitwu=P2^4;sbitliu=P2^5;uinttemp; //定义整形的温度数据floatf_temp; //定义浮点型的温度数据floatwendu_c=300;//定义温度初始值30度,是温度值乘以10以后的结果uintZKB;//定义占空比初始值floatzkc;intkkk;uintkp=4;//定义PID初始值floatki=0.17;uintkd=16;uintuc=5000;floatek;floatu_k;floatuk;floatuk1=0;floatek1=0;floatek2=0;ucharclick=0;//中断次数计数器变量uintzhouqi=0;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x83,0xf8,0x80,0x98,//不带小数点的0~9 0x40,0x79,0x24,0x30,0x19, 0x12,0x03,0x78,0x00,0x18};//带小数点的0~9voiddelay(uintz) //延时函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddsreset(void) //DS18B20复位,初始化函数{ uinti; ds=0; i=103; while(i>0)i--; ds=1; i=4; while(i>0)i--;}bittempreadbit(void) //读1位数据函数{ uinti; bitdat; ds=0;i++; //i++起到延时作用 ds=1;i++;i++; dat=ds; i=8;while(i>0)i--; return(dat);}uchartempread(void) //读1个字节数据函数{ uchari,j,dat; dat=0; for(i=1;i<=8;i++) { j=tempreadbit(); dat=(j<<7)|(dat>>1);//读出的数据最低位在最前面,这样刚好一个字节则dat里 } return(dat);}voidtempwritebyte(uchardat)//向DS18B20写一个字节数据函数{ uinti; ucharj; bittestb; for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) //写1 { ds=0; i++;i++; ds=1; i=8;while(i>0)i--; } else { ds=0; //写0 i=8;while(i>0)i--; ds=1; i++;i++; } }}voidtempchange(void) //DS18B20开始获取温度并转换{ dsreset(); delay(1); tempwritebyte(0xcc); //写跳过读ROM指令 tempwritebyte(0x44); //写温度转换指令}uintget_temp() //读取寄存器中存储的温度数据{ uchara,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); //读低8位 b=tempread(); //读高8位 temp=b; temp<<=8; //两个字节组合为1个字节 temp=temp|a; f_temp=temp*0.0625; //温度在寄存器中为12位,分辨率为0.0625℃ temp=f_temp*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05; returntemp; //temp是整型的}uintgec_temp() //读取寄存器中存储的温度数据{ uchara,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); //读低8位 b=tempread(); //读高8位 temp=b; temp<<=8; //两个字节组合为1个字节 temp=temp|a; f_temp=temp*0.0625; //温度在寄存器中为12位,分辨率为0.0625℃ temp=f_temp*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05; returntemp; //temp是整型的}voiddis_temp(uintt) //显示温度数值函数t传递的是整形的温度值{ uchari; i=t/100; //除以100得到的商,为温度的十位 yi=1; P0=table[i]; //在第一个数码管上显示 delay(5); yi=0; i=t%100/10; //100取余再除以10得到商,为温度的个位 er=1; P0=table[i+10]; //在第二个数码管上显示 delay(5); er=0; i=t%100%10; //100取余再用10取余,为温度的小数位 san=1; P0=table[i]; //在第三个数码管上显示 delay(5); san=0;}voiddic_temp(uintk) //显示温度数值函数l传递的是整形的温度值{ ucharl; l=k/100; //除以100得到的商,为温度的十位 si=1; P0=table[l]; //在第四个数码管上显示 delay(5); si=0; l=k%100/10; //100取余再除以10得到商,为温度的个位 wu=1; P0=table[l+10]; //在第五个数码管上显示 delay(5); wu=0; l=k%100%10; //100取余再用10取余,为温度的小数位 liu=1; P0=table[l]; //在第六个数码管上显示 delay(5); liu=0;}voidkeyscan() //键盘扫描{ if(key_up==0) //数字加按键按下{ delay(5); //延时消除按键抖动 if(key_up==0) //确认数字加按键按下 {if(wendu_c>=700)//限定温度上限70度wendu_c=700; elsewendu_c=wendu_c+5; //温度初始值加0.5度 } while(key_up==0) { dic_temp(wendu_c); //显示的方式等待按键松开 } } if(key_down==0) //数字减按键按

温馨提示

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

评论

0/150

提交评论