最新版基于单片机的温度控制系统设计毕业设计.docx
《最新版基于单片机的温度控制系统设计毕业设计.docx》由会员分享,可在线阅读,更多相关《最新版基于单片机的温度控制系统设计毕业设计.docx(26页珍藏版)》请在冰豆网上搜索。
最新版基于单片机的温度控制系统设计毕业设计
南阳理工学院本科毕业设计(论文)
基于单片机的温度控制系统设计
BasedonSingleChipMicrocomputerTemperatureControlSystemDesign
学院(系):
计算机与信息工程学院
专业:
计算机科学与技术
学生姓名:
李瑞卿
指导教师(职称):
鲁庆宾(副教授)
评阅教师:
完成日期:
2015年6月
南阳理工学院
NanyangInstituteofTechnology
基于单片机的温度控制系统设计
通信工程专业李瑞卿
【摘要】温度是工业控制中主要的被控参数之一,在日常生活中也经常要用到温度的检测及控制。
本文介绍了一种以AT89C51单片机为核心的控制器,以DS18B20为温度传感器的温度控制器。
首先,通过对元器件的选择,设计控制器的硬件电路;然后,设计相关应用程序;最后,通过仿真,对整个系统进行调试、分析。
最终实现温度采集、显示、控制等功能。
仿真结果表明,所设计的控制器能够完成所需功能,并且具有测量精准高、实时性好、使用方便等特点。
【关键词】:
温度控制;AT89C51;温度显示;DS18B20
BasedonSingleChipMicrocomputerTemperatureControlSystemDesign
CommunicationsEngineeringMajorLiRuiqing
Abstract:
Temperaturecontrolischargedwithoneofthemainindustrialparameters,ineverydaylifealsooftenusetodetectandcontrolthetemperature.ThispaperpresentsaAT89C51microcontrollerasthecoretothecontrollertoDS18B20temperaturesensortemperaturecontroller.First,thechoiceofcomponents,designofthecontroller,design-relatedapplications;Finally,thesimulationoftheentiresystemfordebuggingandanalysis.Theultimaterealizationoftemperatureacquisition,displayandcontrolfunctions.Simulationresultsshowthatthedesignedcontrollertocompletetherequiredfunction,and,real-time,user-friendlyfeatures.
Keywords:
Temperaturecontrol;AT89C51;Temperaturedisplay;DS18B20
1绪论
1.1课题背景及意义
日常生活中温度控制在各行各业中都起着重要的作用,因此能够检测温度变化的温度检测设备出现在人们的视线中。
它能使人们能及时看到温度变化的第一手资料,提示温度变化情况,协助人们及时调整,并有温度报警作用,让温度控制更好的服务于整个社会和人们的生活。
21世纪是电子技术飞速发展的时代,人类的生活发生了质的变化,特别是随着大规模集成电路的出现微型计算机应运而生,让人类社会进入了一个新的时代。
虽然微机可以完成各种各样的工程控制,但是微机价格高,对于大多数的工业控制来说,并不是最佳选择。
于是单片机就出现在了人们的视野中。
它是一个简化的微机,将微机的中央处理器,存储单元,IO接口,定时器计数器等集成在一片芯片上。
和微机比较,单片机价格低廉,适合应用在工业的控制场合以降低成本。
另外,单片机可靠性高,性能稳定。
可在复杂的工业环境下运行。
单片机依靠其高性价比,在工业控制,工业生产,家用电器制造等方面得到了广泛的应用。
温度是表征物体冷热程度的物理量,工农业生产过程中温度是一个重要的参数。
温度测量在产品生产,工业设计,能源节约中起到了关键性的作用。
随着科学技术的进步和生产的需要,温度传感器不断更新丰富起来。
温度作为一个模拟量,如果采用合适的技术和元件,将模拟的温度量转化为数字量虽说不难,但电路也很复杂,成本也很高。
温度测量中测量温度是重点,本设计中单片机温度测量同样如此。
1.2课题研究的内容
本设计研究的主要课题是基于单片机的水温控制系统,介绍了对炉内温度的显示、控制和报警,实现了温度的实时显示及控制。
其中炉内温度控制中,采用AT89C51单片机、DS18B20、和LCD的硬件电路检测和显示实时水温,采用DS18B20与单片机相接再由硬件与软件电路组合来实现对加热电阻丝的控制和超出规定的上下限温度的报警。
1.3.温度控制器的选择
温度控制器选择基于51单片机的温度控制器,图2-1是基于51单片机的温度控制器框图。
该控制器由温度采集模块、控制模块、显示模块、报警模块以及电源模块等组成。
基于单片机的温度控制器框图如图2-1所示。
图1-1基于单片机温度控制器框图
51单片机是控制器的控制核心,因此单片机的选择,对所设计系统的实现以及功能的扩展有着很大的影响。
单片机种类很多,在众多51系列单片机中,较为常用的是ATMEL公司的AT89C51和AT89S52单片机,AT89C51片内4KROM是Flash工艺的,使用专用的编程器自己就可以随时对单片机进行电擦除和改写,片内有128字节的RAM。
而AT89S52含有在系统可编程的Flash存储器,片内有8K闪存,RAM的容量也较AT89C51大,为256字节。
显然这种单片机优点更多,开发时间也大为缩短。
2.温度控制器的硬件电路设计
2.1温度传感器的选择
温度是表征物体冷热程度的物理量,它可以通过物体随温度变化的某些特性(如电阻、电压变化等特性)来间接测量,利用这种物理特性制成的传感器称为温度传感器。
常用的温度传感器有热电偶、热敏电阻、热电阻、集成温度传感器及数字式温度传感器等多种温度传感器。
2.1.1数字温度传感器
典型的数字温度传感器如DS18B20,该传感器主要特性如下:
1.数据线供电是寄生电源方式下的供电方式,电压适应的范围更宽,电压范围:
3.0~5.5V;
2.DS18B20在和微处理器的连接仅仅需一条总线即就可以实现DS18B20和微处理器双向的通信,它的单线接口方式十分特殊;
3.DS18B20可以支持多个点的组网功能,多个DS18B20可并联的在唯一的总线上,能够实现组网的多点测温;
4.转换的电路及全部传感器元件就像一只三极管集成在的集成电路内,DS18B20在使用的时候不需要任何的外围元件;
5.在-10~+85℃时精度为±0.5℃,测温范围-55℃~+125℃;
6.可分辨温度依次为0.5℃、0.25℃、0.125℃和0.0625℃,相对应的可以编程的分辨率是9~12位,可实现高精度测温;
7.12位分辨率时最多在750毫秒内把温度值转换为数字,在9位分辨率时最多在93.75毫秒内把温度转换为数字,速度更快;
8.直接输出数字温度信号的测量结果,可传送CRC校验码,同时以"单总线"串行方式传送给CPU,有极强抗干扰和纠错能力;
9.负压特性:
接反电源的极性时,芯片不会因发热而烧毁,但不能正常工作。
2.1.2热电阻温度传感器
热电阻的测量精度高,性能稳定,使用方便,测量范围宽,在高精度、低温测量中占有重要的地位。
热电阻传感器主要用于中低温度(-200℃~+650℃或850℃)范围的温度测量。
常用的工业标准化热电阻有铂热电阻和铜热电阻。
铂电阻传感器是利用金属铂(Pt)的电阻值随温度变化而变化的物理特性而制成的温度传感器。
以铂电阻作为测温元件进行温度测量的关键是要能准确地测量出铂电阻传感器的电阻值。
铂电阻具有适用范围广、测量范围大、稳定性高、重复性好、价格低廉、使用方便等优点,成为目前工业和实验室中温度测量应用最广泛普遍的传感元件之一,工业中应用较多的热电阻传感器如Pt100。
2.1.3方案选择
对比上述两种方案,虽然Pt100的测量温度范围比较大,但是由于其测温原理是电阻值随着温度的改变而改变,需要设计非常优良的温度采集电路,其中应包括测温部分,线性化部分,放大部分,AD转换部分,这就会使外围的电路更加复杂。
DS18B20是数字式温度传感器,只需一根总线就可以与单片机通信,是外围的电路大大简化,测量的精度更准确。
因此本控制器的设计中,温度传感器拟选择DS18B20作为温度采集传感器。
2.2温度采集模块电路的设计
2.2.1DS18B20介绍
DS18B20引脚图如图2-1所示。
图2-1DS18B20引脚图
DALLAS最新的单线数字温度传感器DS18B20是一种新型“一线器件”,它的体积更小、更适用于多种场合、而且适用电压更宽、也更经济。
DALLAS半导体公司开发的数字化温度传感器DS18B20也是世界上第一片支持“一线总线”接口的数字温度传感器。
温度的测量范围为-55~+125摄氏度,能编程为9位~12位转换精度,0.0625摄氏度的测温分辨率,分辨率的设定参数及用户设定的报警温度会存储在EEPROM中,掉电后依然能保存。
用符号扩展的16位数字量方式串行的输出被测温度;采用寄生电源方式产生,其工作的电源既可以远端引入;3根或2根线上可并联多个DS18B20,CPU只需要一根端口线就能与诸多的DS18B20通信,较少占用微处理器的端口,可以节省逻辑电路和大量的引线,因而用它来组成的测温系统,具有线路简单,在一根通信线,可挂多个这样的数字温度计,非常的方便。
2.2.2温度传感器工作原理
DS18B20的读写时序及测温原理与DS1820是相同的,得到的温度值的位数却会因为分辨率的不同而不同,而且进行温度转换时的延时时间从2s减为750ms。
DS18B20的测温原理:
低温度系数的晶振,它是用以产生固定频率的脉冲信号给计数器1,它的振荡频率受到温度的影响非常的小。
高温度系数的晶振,则它的振荡率会随着温度的变化而明显的改变,产生的信号就作为计数器2的脉冲输入。
温度寄存器以及计数器1被预先设置在-55℃所对应的一个基数值。
对从低温度系数晶振产生的脉冲,将会通过计数器1来进行减法的计数,当计数器1预置的值减到了0的时候,计数器1的预置值将重新装入,这时候温度寄存器的值就加1。
计数器1也就重新开始进行计数,如此循环,停止温度寄存器值的累加时计数器2的计数值到0,所测温度就为此时温度寄存器中的数值。
DS18B20功能特点:
1.采用了总线技术,与单片机的通信只需要一根IO线,在一根线上可以挂接多个的DS18B20。
2.每只DS18B20它是根据序列号来访问相应的器件,具有一个独有的,不可更改的64位的序列号。
3.低压供电,电源范围为3--5V,可本地供电,也能直接通过数据线提供电源(即寄生电源2方式)。
4.在-10°C至+85°C范围内的可以达到精度为±0.5摄氏度,测温的范围为-55℃~+125摄氏度。
5.温度超过了的预定值的器件可以用报警搜索命令识别以及寻址。
6.用户可以自己设定报警上下限温度。
7.它转换12位的温度的最大时间为750毫秒,可编辑的数据位9--12位。
8.DS18B20的分辨率由用户通过EEPROM设置为9--12位。
9.DS18B20可以将检测到的温度值直接转化为数字量,并且通过串行通信方式。
DS18B20有4个主要数据部件:
1.光刻ROM中的64位序列号在出厂之前就已经被光刻好了,它可看作该DS18B20的地址的序列码。
64位光刻ROM的排列为:
开始的8位(28H)是产品类型的标号,接着48位是该DS18B20的自身序列号,最后的8位是前面的56位循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是让每一个DS18B20都不相同,这样的话就能够一根总线上可挂接多个的DS18B20。
2.DS18B20温度传感器能实现对温度的测量,以12位的转化为例:
用16位的符号扩展二进制补码读数的形式提供,以0.0625℃LSB的形式表达,其中S是符号位。
3.DS18B20温度传感器它的内部存储器包括一个高速暂存RAM以及一个非易失性的、可电擦除的EEPRAM,后者存放高温度和低温度的触发器TH、TL以及结构寄存器。
4.配置寄存器。
DS18B20内部结构及功能:
DS18B20内部的结构如图3-7所示。
主要包括以下部分:
电源,温度传感器,64位的ROM单总线接口,用于存放中间数据的高速暂存器RAM,用于存储用户设定温度上下限的TH和TL触发器,控制逻辑,8为循环冗余校验码(CRC)发生器等7部分。
DS18B20内部结构如图2-2所示。
图2-2DS18B20内部结构
2.2.3DS18B20工作原理介绍
温度的读取:
DS18B20出厂时配置为12位,读取温度时共读取16位,所以要把后11位的2进制转化为10进制后再乘以0.0625就是所测的温度,还需判断正负。
前5个的数字为符号位,若前5位为1时,读取的温度就为负数;若前5位为0时,读取的温度就为正数。
DS18B20写操作:
1.数据线首先置低电平“0”。
2.延时的时间为15ms。
3.再按从低位到高位的顺序发送字节(一次只能发送一位)。
4.延时的时间为45ms。
5.把数据线拉到高电平。
6.重复上
(1)到(6)的操作,一直到所有的字节全部都发送完为止。
7.最后把数据线拉高。
DS18B20读操作:
1.把数据线拉高“1”。
2.延时2ms。
3.数据线拉低“0”。
4.延时15ms。
5.将据线拉高“1”。
6.延时15ms。
7.读数据线的状态得到了1个状态位,并且进行数据处理。
8.延时30ms。
2.2.4DS18B20使用中的注意事项
DS18B20虽具有连接方便、测温系统简单、占用口线少、测温的精度高等优点,然而在实际的应用中也应该注意以下几方面问题:
1.DS18B20从测温结束直到把温度值转换成为了数字量,需要一些转换时间,这必须保证,不然会出现转换错误现象,从而使温度输出总是显示为85度。
2.在实际的使用中,应该使电源电压保持在5V左右的大小,若是电源的电压过低了,就会降低所测得的温度精度。
3.较小的硬件开销就需要比较复杂的软件来进行补偿,因为DS1820和微处理器间数据是串行传送的,所以,对DS1820进行读写编程,就必须严格保证读写时序,否则就不能读取测得的温度值。
4.DS18B20的有关资料由于未提及单总线上所挂DS18B20数量,就使人误认为能够挂任意多个的DS18B20,但在实际的应用中并不是这样的,如果在单总线上所挂载的DS18B20超过了8个,就要解决微处理器的总线驱动问题,在进行多点测温系统设计时必须注意这一点。
5.在DS18B20测温程序的设计中,向DS18B20发出了温度转换命令后,程序总是要等待DS18B20的返回信号,若某个DS18B20接触不好或这断线,当程序读该DS18B20时,将会没有返回的信号,程序就进入了死循环,这一点在进行DS18B20硬件连接和软件设计的时候也要给予重视。
2.2.5DS18B20和AT89C51单片机连接电路
DS18B20可以有两种供电的方式,一种用的是电源供电的方式,此时DS18B20的1脚接地,3脚接电源,2脚是信号线。
另一种是寄生电源供电的一种方式。
如图2-3所示单片机端口接的是单总线,为了在DS18B20有效的时钟周期之内提供的电流足够,对总线的上拉可用一个MOSFET管来完成。
当DS18B20处于温度AD转换操作和写存储器操作时,必须有强的上拉在总线上,上拉的最大开启时间为10微秒。
采用寄生电源供电的供电方式时VDD端接地,单线制由于只有一根线,因此发送接口必须是三态的。
DS18B20与单片机的接口电路如图2-3所示。
图2-3DS18B20与单片机的接口电路
2.3显示模块设计
2.3.1LCD液晶显示器简介
显示器是人和机器交流信息的重要界面,早期的是以显像管(CRTCathodeRayTube)显示器为主,但是随着技术的不断发展,各种各样的显示技术不断诞生,而液晶(LCD)显示器由于具有耗电量较低、短小轻薄、无辐射的危险,平面直角显示,和稳定不闪烁的影像等优势,更是在近年来不断下跌的价格吸引下,逐渐取代了主流的CRT之地位。
液晶是一种既有液体的流动性还具光学特性的有机化合物,它的透明程度和呈现颜色受外加电场影响,利用这个特点就可以做成字符显示器。
液晶显示器(LCD)英文为LiquidCrystalDisplay,它是一种采用液晶控制透光度的技术来实现色彩的显示器。
和CRT显示器比,LCD的优点是十分明显的。
因为通过控制是否透光从而控制亮和暗,当色彩不变化时,液晶也就保持不变,这样就不用考虑刷新率的问题。
显示接口用来显示系统的状态,命令和采集的电压数据。
本系统的显示部分用的是LCD液晶模块,采用的是一个16×1字符型液晶的显示模块。
点阵图形式的液晶显示器是由M行×N列个显示单元组成的,若LCD显示屏有64行,每行有128列,每8列对应1个字节的8个位,则每行有16字节,共有16×8=128个点所组成,屏上64×16个显示单元和显示RAM区1024个的字节是相对应的,屏上相应位置的亮暗和每一个字节的内容是对应的。
一个字符是由6×8或者8×8一个点阵所组成的,所以要找到和屏上某几个位置相对应显示RAM区的8个字节,而且应该使每一个字节不的同位为‘1’状态,其它的则为‘0’,为‘1’的点亮,为‘0’的点为暗,这样就组成了某一个字符。
但是对内部自带字符发生器的控制器来说,字符显示就会比较简单了,可以使控制器在文本方式下工作,根据在每行的列数找出显示RAM对应的地址和LCD开始显示的行列号,设立光标,在此送入该字符的对应代码就可以了。
2.3.2液晶模块简介
LM016L结构及功能:
LM016L液晶模块采用了HD44780的控制器,()
{
set();开始设置
while
(1)设置好后进入死循环
{
lcd_init();初始化LCD
key();键盘扫描
error();检查是否出错
readtemp();读取温度值
lcd();显示子函数
relay();控制继电器
delay(500);延时
}
}
3.2DS18B20初始化程序
DS18B20初始化步骤如下:
1、高电平“1”状态必须先给数据线。
2、然后延时(该时间的要求不严格,但尽可能短一点)。
3、把数据线拉低到电平“0”状态。
5、把数据线拉高到电平“1”。
6、延时等待(初始化已成功,在15--60ms时间之内DS18B20返回一个低电平“0”。
根据该状态来确定它是否存在,但不可无限进行等待,否则程序会进入死循环状态,故要有超时控制的操作)。
7、CPU如果读到了数据线上“0”状态的低电平,还要再做延时,延时时间由发出高电平开始算起(第(5)步的时间开始算),最少需480ms。
8、再次把数据线拉高到高电平“1”后就结束。
DS18B20初始化的C语言程序如下:
*******************************************************
DS18B20初始化子程序
********************************************************
voidInit_DS18B20()
{
unsignedcharx=0;定义字符型局域变量
DS=1;总线拉高
tmpDelay(8);延时,准备与DS18B20通讯
DS=0;总线拉低
tmpDelay(80);延时,给DS18B20复位信号
DS=1;总线拉高
tmpDelay(14);延时,等待DS18B20响应
x=DS;读DS18B20响应状态
tmpDelay(20);延时
}
3.3LCD初始化程序的设计
LM016L的读操作时序如图3-2所示。
LM016L的写操作时序如图3-3所示。
LM016L的初始化的C语言程序如下:
*******************************************************
LCD初始化子程序
********************************************************
lcd_init()
{
lcd_wcmd(0x38);设置8位字符显示,5*10点阵字符
delay
(1);延时
lcd_wcmd(0x0c);开显示、光标和闪烁关闭
delay
(1);延时
lcd_wcmd(0x06);读、写操作后,AC增一、画面不动
delay
(1);延时
lcd_wcmd(0x01);清除LCD的显示内容
delay
(1);延时
}
3.4继电器控制的程序
当测量的环境温度低于设定温度时,启动加热继电器,使系统自动加热,当测量的温度高于设定的温度时,启动降温继电器,使系统自动降温,从而使系统的温度维持在设定的温度。
系统继电器控制的C语言程序如下:
*******************************************************
继电器控制子程序
********************************************************
voidrelay()
{
if(an==0)flagn=0;实际温度为0度,实际温度标志位置0
if(as==0)flags=0;设置温度为0度,设置温度标志位置0
if(flagn==0)实际温度标志位为0时循环
{
if(flags==0)设置温度标志位为0时循环
{
if(an{
up=0;升温继电器闭合
down=1;降温继电器打开
}
if(an==as)若实际温度等于设置温度循环
{
up=1;升温继电器打开
down=1;降温继电器打开
}
if(an>as)若实际温度大于设置温度循环
{
down=0;降温继电器闭合
up=1;升温继电器打开
}
}
if(flags==1)设置温度标志位为1时循环
{
up=1;升温继电器打开
down=0;降温继电器闭合
}
}
if(flagn==1)实际温度标志位为1时循环
{
if(flags==1)设置温度标志位为1时循环
{
if(an{
up=1;升温继电器打开
down=0;降温继电器闭合
}
if(an==as)若实际温度等于设置温度