基于单片机的温度控制毕业设计论文.doc
基于单片机的温度控制设 计 者: 学 号:班 级: 指导老师: 毕业设计(论文)任务书专业(班): 姓名: 课题名称、主要内容和基本要求课题名称:基于单片机的温度控制主要内容: 随着人们生活质量的提高,酒店厂房及家庭生活中都会见到温度控制的影子,特别是在某些场合上,我们必须要对周围温度进行控制,这样才不会使这些场合在过高的温下工作从而导致机器故障或发生不必要的意外,温度控制将更好的服务于社会目前。本设计主要采用了AVR单片机Atmega16L作为控制核心设计的一个温度控制系统。通过对环境周围温度的测量,来达到对温度的控制和调节功能。基本要求:1. 调查温控系统的应用及市场前景2. 掌握温控系统的工作原理3. 完成温控系统硬件设计、硬件调试4. 完成温控系统软件设计调试5. 试运行、测试,完成作品6. 完成设计论文技术指标:1. 温度测量范围:-501102. 温度测量准确度:±0.53. DS18B20输出控制4. 降温报警系统的控制验收标准:1. 毕业设计论文符合要求2. 作品演示功能正常3. 技术指标达到要求进度安排周次工作内容执行情况上学期搜集资料、方案构思、明确题目要求,提交开题报告第1-5周硬件电路设计与制作第6-7周硬件电路设计与制作及调试第8-10周软件设计第11-12周系统程序设计、调试第13-15周写设计报告(论文)第16周答辩,演示制作成品、讲解设计思路、回答提问-l 指导教师评语 指导教师签名: 摘要本设计的主要内容和特点 随着时代的进步和发展,人们生活水平的不断提高,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术。本设计所介绍的基于单片机的温度控制的主要特点是:具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用AVR单片机Atmega16L作为控制核心;测温传感器使用DS18B20,能更好更方便的读取外部温度值;降温控制系统采用低压直流电风扇,当温度高于设定最高限温度时,LED灯及蜂鸣器便会发出报警信号,同是降温风扇也会启动达到降温作用;温度显示使用液晶模块来实现,这样就能准确达到以上要求。外文资料:With the era of progress and development, the continuous improvement of people's living standard, SCM technology has spread to our lives, work, research, in various fields, has become a relatively mature technology.The design presented by the SCM based on the temperature control of the main features are: a reading of convenience, a wide range of temperature measurement, accurate temperature measurement, using figures show that the output temperature, mainly used for more accurate temperature measurement on the premises, or scientific research Laboratory use, the design controller use as a control Atmega16L AVR microcontroller core temperature sensors use DS18B20, can be better and more convenient to read the outside temperature; cooling control system uses low-voltage direct current electric fans, when the temperature is higher than the set Limit the maximum temperature, LED lights and buzzer alarm signal will be issued with a cooling fan will start to cool down; temperature that the use of LCD modules to achieve so that we can accurately meet the above requirements.目录一.前 言7二.方案论证与比较81.方案一82.方案二8三.系统的基本原理及使用说明9四.硬件设计方案91.单片机主板电路102.传感器数据采集电路103.温度显示电路104.报警降温电路11五.软件设计方案111.主程序122.读出温度子程序133.温度转换命令子程序13六.主要器件介绍141.主控制器142.显示液晶模块143.温度传感器144.降温报警系统18七.调试结果与设计体会19八.参考文献191.附1:硬件电路图202.附2:软件源代码223.附3:使用说明书27一. 前 言随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面。 随着人们生活质量的提高,酒店厂房及家庭生活中都会见到温度控制的影子,温度控制将更好的服务于社会目前,单片机控制器在从生活工具到工业应用的各个领域,例如生活工具的电梯、电脑、工业生产中的现场控制仪表、数控机床等。尤其是用单片机控制器改造落后的设备具有性价比高、提高设备的使用寿命、提高设备的自动化程度的特点。 随着社会的发展,人们对环境温度的控制要求也越来越高,对于高温的温度控制也就相应的不断提高,而我设计的基于单片机的温度控制就是为了达到这样的温度控制要求而进行设计的。我所采用的控制芯片为Atmega16L,此芯片功能强大,能够满足设计要求。通过对电路的设计,对芯片的外围扩展,来达到对温度的控制和调节功能 二. 方案论证与比较1. 方案一由于本设计是控温测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。2. 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,(在9位分辨率时最多在93.75MS内把温度转换为数 ,)可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。三. 系统的基本原理及使用说明基于单片机的温度控制电路设计总体设计方框图如图1所示,主控制器采用单片机AVR控制,温度传感器采用DS18B20,以蜂鸣器实现报警功能,降温控制系统采用低压直流电风扇,用液晶来实现温度显示。单片机复位主 控 制 器时钟晶振液晶显示风扇控制及报警温度传感器键盘按键 图1总体设计方框图本数字温控系统采用了AVR单片机Atmega16L作为控制核心,通过一个温度传感器DS18B20把环境温度读取进来,再由液晶模块将读取的温度显示出来,通过键盘按键来设定报警温度值,当温度达到预设报警温度值时,利用蜂鸣器、LED指示灯及电机风扇实现高温报警及降温功能。四. 硬件设计方案系统整体硬件电路包括:单片机主板电路,传感器数据采集电路,温度显示电路,报警降温电路等。(如图1)图1中的按键复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重启单片机电源,就可以实现复位;键盘按键用来设置报警温度值从而控制风扇及报警;显示电路直接用液晶模块显示,不但显示直观、清晰,在硬件电路设计中还更方便。1. 单片机主板电路主要是用AVR的最小开发系统为基础电路,以Atmega16L作为控制核心来实现(图1-1)。 (图1-1)2. 传感器数据采集电路主要是通过外接一种改进型智能温度传感器DS18B20来实现(图1-2)。其内部结构已包含了数据采集转换功能,使用方便,最适合本电路使用。3. 温度显示电路主要是用一块16X2字符型液晶显示模块来实现(图1-3)。它以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用且使用方便直观。(图1-2) (图1-3) 4. 报警降温电路主要是通过两个键盘按键对其报警温度的设置,以蜂鸣器及LED灯配合低压直流电风扇等组合来实现对温度的报警降温(图1-4)。 (图1-4)五. 软件设计方案系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,键盘处理子程序,显示数据刷新子程序等。1. 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,并与设定值相比较从而达到控温报警效果,其程序流程见图2所示。开始程序初始化初次上电读出温度值温度计算处理显示数据刷新显示当前温度当前温度与设定值比较相差?温度报警刷新参数输出调控温度YYNN发温度转换开始命令图2主程序流程图图3读温度流程图2. 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3所示。 3. 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图4所示图4温度转换流程图六. 主要器件介绍1. 主控制器本设计采用了Atmel公司的AVR单片机Atmega16L作为控制核心。AVR单片机的单周期指令能够保证高的执行效率和低成本,是精简指令集CPU中的高性能器件。AVR单片机可以提供高达16 MIPS的执行时间,具有128K字节的可编程Flash存储器,同时具备4096字节的静态RAM。这款AVR增强型单片机具有速度快,抗干扰能力强,价格低廉等诸多优点。2. 显示液晶模块显示电路采用了液晶模块,实现了当前温度在液晶显示模块上实时显示。液晶显示模块占用了单片机Atmega16L的PA0-PA7作为数据接口,采用了单片机的PA0-PA2作为控制端口。PA0引脚选择液晶显示模块的数据存储器或指令存贮器,PA1引脚表明此次操作是读液晶显示模块还是写液晶显示模块,PA2则构成上升沿与下降沿完成读写时序。3. 温度传感器图5 DS18B20内部结构DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如图5所示。64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。 DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图6所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。图6 DS18B20字节定义由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。 当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。 当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。 DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。 减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。 另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图7所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。 当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。图7 DS18B20与单片机的接口电路4. 降温报警系统降温报警系统采用低压直流电风扇、蜂鸣器及LED灯等组合来实现报警降温功能。报警初值设定为40,通过按键PC.2加一,PC.3减一的功能来设置报警值,当温度达到设置报警值时,LED灯及蜂鸣器便会发出报警信号,同时直流电风扇便会启动达到降温效果。七. 调试结果与设计体会 经过这学期的毕业设计,终于完成了我的基于单片机的温度控制的设计,虽然还不是很完善,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀! 在本次设计的过程中,我发现很多的问题,如在程序的调试过程中出事显示屏幕不断在闪烁,怎么能使程序正常显示出当前的温度以及在益出时如何来解决等等。虽然以前课堂上也做过这样的设计但这次设计真的让我长进了很多,我觉得写好一个程序并不是一件简单的事。 从这次的毕业设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。在这里我要感谢我的指导老师晏凯老师以及所有在这此毕业设计中帮助过我的同学,正因为有他们的帮助我才能顺利的完成这次的作品。八. 参考文献1李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982李广弟.单片机基础.北京:北京航空航天大学出版社,19943阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19891. 附1:硬件电路图 原理图:PCB电路图:2. 附2:软件源代码#include <mega16.h>#include <ds18b20_AVR.h>#asm .equ _lcd_port=0x1B ;PORTA#endasm#include <lcd.h>#include <delay.h>#include <stdio.h>int wendu,adjust=31;unsigned char buffer33,buffer133; /定义数组void scan_key(); /声明温度值设置子函数待添加的隐藏文字内容3void motor_turn(); / 声明电机转动子函数void scan_key() / 温度值设置子函数 if(PIND.3=0) adjust+; delay_ms(150); if(PIND.2=0) adjust-; delay_ms(150); void motor_turn() /电机转动子函数 PORTD.5=1;void main(void) /主函数 PORTC=0x00; DDRC=0xf2; PORTD=0xff; DDRD=0xf3; PortDS18B20_Init(); /18B20初始化 DS18B20_Init(); lcd_init(16); /1602初始化while (1) scan_key(); if(ResetOK_Flag=1) /读18B20温度值 wendu=ReadTemp(); else DS18B20_Init(); scan_key(); lcd_clear(); lcd_gotoxy(0,0); sprintf(buffer,"the temp is %d",wendu); / lcd_puts(buffer); /显示当前温度 lcd_gotoxy(0,1); sprintf(buffer1,"the adjust is %d",adjust); / lcd_puts(buffer1); /显示当前设置温度 delay_ms(10); if(wendu>=adjust) /比较当前温度与设置温度 motor_turn(); /电机转动 PORTD.4=1; /驱动蜂鸣器 PORTD.1=1; /LED显示 delay_ms(80); PORTD.4=0; PORTD.1=0; delay_ms(80); else PORTD.5=0; /电机停止 PORTD.4=0; /关闭蜂鸣器 PORTD.1=0; /LED熄灭 ;3. 附3:使用说明书风扇接口 散热风扇复位按键5V电源DS18B20LED指示灯蜂鸣器报警设置按键加1减1Atmega16L芯片液晶显示模块 图7 基于单片机的温度控制实物图如图7所示,本设计在使用上非常简单,主要是通过外接供给5V电源来驱动Atmega16L芯片运行,使液晶显示模块点亮,再通过DS18B20将外界温度读取进来显示在液晶显示模块上(显示当前温度及初始化报警温度值31)。左上角的一个复位按键在程序跑飞时可以过通此按钮进行手动复位,这样就不用在重启单片机电源,就可以实现复位。这工作时,用户可通右边的过两个报警设置按键(PD.3加一,PD.2减一)来设置温度报警值,当温度达到预设置的报警值时,LED指示灯及蜂鸣器便会发出报警信号,同时直流散热风扇便会启动达到降温效果。