温度控制器课程设计书.docx

上传人:b****7 文档编号:8787269 上传时间:2023-02-01 格式:DOCX 页数:28 大小:158.80KB
下载 相关 举报
温度控制器课程设计书.docx_第1页
第1页 / 共28页
温度控制器课程设计书.docx_第2页
第2页 / 共28页
温度控制器课程设计书.docx_第3页
第3页 / 共28页
温度控制器课程设计书.docx_第4页
第4页 / 共28页
温度控制器课程设计书.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

温度控制器课程设计书.docx

《温度控制器课程设计书.docx》由会员分享,可在线阅读,更多相关《温度控制器课程设计书.docx(28页珍藏版)》请在冰豆网上搜索。

温度控制器课程设计书.docx

温度控制器课程设计书

温度控制器课程设计书

1前言

社会在发展,科技在进步,测温仪器在各个领域的应用,各种温度控制系统迅速发展。

近年来,温度控制系统已广泛应用各个方面,然而温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。

针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。

温度是一个重要的物理量,它反映了物体的冷热程度,与自然界中的各种物理与化学过程相联系,再生产过程中,各个环节都与温度有紧密联系,因此人们非常重视温度的测量。

温度概念的产生及温度的测量都是以热平衡为基础,当两个冷热程度不同的物体接触后就会产生导热,换热,换热结束后两物体处于平衡状态,因此他们具有最本质的性质。

温度控制系统对温度进行检测和控制,任何工厂在生产过程中如果没有合适的温度环境,很多的器件甚至是电子设备都不能正常的工作,从而多生产的产品质量有很大的影响,所以各行各业对温度的要求的愈来愈高,所以,温度控制系统的作用非常重要。

温度控制系统的控制系统是温度,在我们日常生活中,温度控制使非常重要的,在温室、水池、电源等场所不能对温度有效的控制,则会出现很多事故,所以为了避免此类事故的发生,温度控制应当受到重视。

本设计不仅实现了对温度的检测,还实现了温度控制、显示功能,当温度大于设定的温度时,报警器报警;当温度小于设定的值时,报警器不报警,从而实现对温度的控制,并且还可以实现按键复位功能。

2总体方案

方案一

温度测量的设计,可以采用热敏温度传感器等对温度进行测量,在将被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示液晶显示屏上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。

运用这种方案时模拟信号在传输过程中存在损耗并且容易受到外界的干扰,导致测量温度不准确。

图2.1温度检测流程图

方案二

使用温度传感器DS18B20直接对温度进行检测和转换,在结合89C52单片机与1602液晶显示器就能对温度进行显示。

比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。

本设计方框图如图1.1所示,它由四部分组成:

①控制部分主芯片采用单片机89C52;②显示部分采用LCD1602液晶显示器实现温度显示;③温度采集部分采用DS18B20温度传感器。

报警装置

 

 

图2.2温度控制电路总体设计方案

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,完成对温度信号的采集和转换工作,数字温度传感器DS18B20把采集到的温度通过P1.7引脚传到单片机,单片机接受温度并存储并通过P0口连接LCD160数字液晶显示器显示。

通过P1.0口接报警装置,实现报警功能。

3单元模块设计

3.1DS18B20温度检测电路

 

图3.1温度检测电路

温度检测电路采用智能温度传感器DS18B20,它与单片机相连只需要3线,减少了外部的硬件电路。

DS18B20主要性能特点如下:

(1)测温的围为-55~125℃,最大分辨率可以达到0.0625℃;

(2)电源电压围为3.0~5.5V;

(3)供电模式:

寄生供电和外部供电;

(4)封装形式有两种:

3脚的TO-92封装和8脚的SOIC封装;

(5)可编程的温度转换分辨率,分辨率为9~12位(包括1位符号位),由配置寄存器决定具体位数,配置寄存器的格式如表3-1所示。

表3-1配置寄存器格式

TM

R1

R0

1

1

1

1

1

其中R1R0是用来设定分辨率的,分辨率的定义如表3-2所示。

表3-2DS18B20分辨率的定义

R1

R0

分辨率/位

温度最大转换时间/ms

0

0

9

93.75

0

1

10

187.5

1

0

11

375

1

1

12

750

由表3-2可以看出,分辨率设定得越高,温度转换所需要的时间就越长,因此应根据实际应用的需要来选择合适的分辨率。

本文中选取12位分辨率,每隔1秒检测一次温度。

3.2单片机电路

单片机电路如图3.2所示,

 

图3.2单片机电路

AT89C52是一款超强抗干扰/高速/低功耗的单片机,AT89C52是一个低电压,高性能CMOS8位单片机,片含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

3.3显示电路

显示模块采用的是LCD1602液晶显示如图3.3。

单片机微控制器通过对当前温度传感器进行读取获得当前温度值,通过一定的运算后经LCD1602液晶显示屏显示出来。

芯片的工作电压是4.5—5.5V,能显示两行,每行显示16个字符。

除电压、背光引脚及8个I/O引脚外,主要的控制引脚还有数据/命令选择RS引脚,该引脚为高电平时表示I/O引脚出现的是数据,该引脚为低电平时表示I/O引脚出现的是命令;读/写选择引脚及使能引脚E(该引脚为高电平时对LCD1602的操作才有效)。

 

图3.3LCD1602液晶显示

3.4报警电路

报警电路采用蜂鸣器作为发生装置,当温度高于设定的上限值时,蜂鸣器发出报警声作为提醒,蜂鸣器会一直发出声音直到温度低于设定上限值。

 

3.5DS18B20温度传感器简介

3.5.1温度的采集和转换

DS18B20的测温原理如图3.4所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。

计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

斜坡式累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值。

 

图3.4温度测量电路

DS18B20接收到温度转换命令后,开始启动转换。

转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。

单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。

当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值,表3-3是一部分温度值对应的二进制温度数据。

表3-3温度与数据的关系

温度/℃

数据输出(二进制)

数据输出(十六进制)

+125

0000000011111010

00FA

+25

0000000000110010

0032

+1/2

0000000000000001

0001

0

000000000000000

0000

-1/2

1111111111111111

FFFF

-25

1111111111001110

FFCE

-55

1111111110010010

FF92

3.5.2DS18B20的工作原理

DS18B20的共做时序

(1)初始化时序

图3.5初始化时序图

总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。

应答脉冲使主机知道,总线上有从机设备,且准备就绪。

主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。

接着主机释放总线,上拉电阻将总线拉高,延时15~60us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时480us。

 

(2)写时序

图3.6写时序图

当主机把数据线从逻辑高电平拉到低电平的时候,写时序开始。

有两种情况,写1时间间隙和写0时间间隙,所以写时间间隙最少持续60us,包括两个写周期至少1us的恢复时间,I/O线电平变低后,DS18B20在一个5us到60us的窗口对I/O线采样,如果线上时高电平,就是写1,如果线上是低电平,就是写0。

(3)读时序

图3.7读时序图

总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。

所有读时序至少需要60us。

当主机把高电平拉到低电平时写时间开始,在2次独立的读时序之间至少需要1us的恢复时间。

每个时序都由主机发起,至少拉低总线1us。

主机在读时序期间必须释放总线,并且在时序起始后的15us之采样总线状态。

主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us。

 

DS18B20温度流程

 

图3.8DS18B20温度流程图

 

ROM操作命令

表3-4ROM操作命令

指令

约定代码

功能

读ROM

33H

读DS18B20ROM中的编码

符合ROM

55H

发出此命令之后,接着发出64位ROM编码,访问单线总线与改变码相对应得DS18B20使之做出响应,为下一步对该DS18B20的读写做准备

搜索ROM

0F0H

读ROM

跳过ROM

0CCH

忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作

告警搜索ROM

0ECH

执行后,只有温度超过设定值上限或者下限的片子才做出响应

温度变换

44H

启动DS18B20进行温度转换,转换时间最长为500MS,结果存入部9字节RAM中

读暂存器

0BEH

读部RAM中9字节的容

写暂存器

4EH

发出向部RAM的第3,4字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据

复制暂存器

48H

将E2PRAM中第3,4字节容复制到E2PRAM中

重调E2PRAM

0BBH

将E2PRAM中容恢复到RAM中的第3,4字节

读供电方式

0B4H

读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”

4软件设计

高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强,常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,而MCS—52指令系统的指令长度较短,它在存储空间和执行时间方面具有较高的效率,编成的程序占用存单元少,执行也非常的快捷,与本系统的应用要求很适合。

而且MCS—52指令系统有丰富的位操作(或称位处理)指令,可以形成一个相当完整的位操作指令子集,这是MCS—52指令系统主要的优点之一。

对于要求反应灵敏与控制及时的工控、检测等实时控制系统以及要求体积小、系统小的许多“电脑化”产品,可以充分体现出汇编语言简明、整齐、执行时间短和易于使用的特点。

图4.1系统总流程图

系统程序主要有主程序和LCD1602初始化子程序及读写时序程序、DS18B20复位及读写时序子程序温度数字处理子程。

4.1系统调试读出温度子程序

图4.2读出温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。

DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,还有一位符号位。

 

4.2系统调试写入子程序

图4.3写入子程序流程图

 

5系统调试

硬件调试是对温度显示器LCD1602进行调试,温度显示器通电后不显示温度,使用示波器对LCD1602、单片机的每个管脚进行测试,对其进行分析是由于电阻值过大,调节滑动变阻器减小其阻值,液晶显示器显示温度为0。

软件调试是在温度大于31℃,而报警器不报警,经检查,发现是温度写成31000。

多写了两个0,改正过后又发现报警器在温度大于31℃时,只响一次。

把如下程序的=改为〉就排出了这个异常。

voidmain()

{

init_play();//初始化显示

while

(1)

{

read_temp();//读取温度

ds1820disp();//显示

if(tvalue>310)

Beef=0;

else

Beef=1;

}

}

 

6总结与体会

本设计使用的温度控制器结构简单、测温准确,具有一定的实际应用价值。

该温度控制器只是DS18B20在温度控制领域的一个简单实例,还有许多需要完善的地方,例如可以将测得的温度通过单片机与通讯模块相连接,以手机短消息的方式发送给用户,使用户能够随时对温度进行监控。

此外,还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业。

本温度控制系统可以应用于多种场合,像育婴房的温度、水温的控制。

用户可灵活选择本设计的用途,有很强的实用价值。

通过这次课程设计,让我对单片机有了进一步的了解、巩固和加深,并且对所学知识的得以实际应用。

与我所学芯片再一次零距离接触,进一步加深我对各个芯片的功能和特性的了解。

微机控制与接口技术课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.回顾起此次课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在短短的两个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次微机控制与接口技术的课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

在此次温度控制器的设计过程中,让我了解到了现代电子产品的设计和工作原理。

以前在实际生活中看到的电子产品例如彩灯、交通灯、电磁炉、电饭煲等,就只会用他们并不知道他们的工作原理,通过这次课程设计对这些产品的原理有了深入的了解。

同时这次课程设计大大提高了我的动手能力,为我以后的工作和学习奠定了基础,在以后的生活中我也可以用我所学的知识和对芯片功能的了解来设计一些日常生活所需的电子产品。

实训时间很短,但是通过这次实训可以学到很多书本没有的东西,有了这一次的实践经验,我们的动手能力和思维能力也相应的得到了的提高,这次实训进一步锻炼了自己的逻辑思维能力,并从中总结出宝贵的经验。

最后,在此感老师的细心指导,也同样其他各位同学的无私帮助!

 

7参考文献

[1].毅刚主编.单片机原理及应用.:

高等教育.2003;

[2].承志等主编.微型计算机控制技术.:

化学工业.2008;

[3].康华光主编.电子技术基础模拟部分(第五版).:

高等教育.2006;

[4].谭浩强著.C程序设计.:

清华大学.2005;

[5].王心水主编.一种基于单片机的多功能温度控制器额设计.曲阜师大学信息技术与传播学院;

[6].胡学海主编.单片机原理及应用系统设计[M].:

京电子工业.2005;

[7].广弟.单片机基础[M].:

北航.2010。

 

附录:

设计程序

/*********Main.c***********/

#include

#include"ds1820.h"

#include"1602.h"

sbitBeef=P1^1;

externuchardisdata[5];

externuinttvalue;//温度值

externuchartflag;//温度正负标志

/********************************************************

功能:

将18B20采集的温度数据在1602显示出来*

输入参数:

无*

返回值:

无*

*********************************************************/

voidds1820disp()//温度值显示

{

ucharflagdat;

disdata[0]=tvalue/1000+0x30;//百位数

disdata[1]=tvalue%1000/100+0x30;//十位数

disdata[2]=tvalue%100/10+0x30;//个位数

disdata[3]=tvalue%10+0x30;//小数位

if(tflag==0)

flagdat=0x20;//正温度不显示符号

else

flagdat=0x2d;//负温度显示负号:

-

if(disdata[0]==0x30)

{

disdata[0]=0x20;//如果百位为0,不显示

if(disdata[1]==0x30)

{

disdata[1]=0x20;//如果百位为0,十位为0也不显示

}

}

wr_(0xc0);

wr_dat(flagdat);//显示符号位

wr_(0xc1);

wr_dat(disdata[0]);//显示百位

wr_(0xc2);

wr_dat(disdata[1]);//显示十位

wr_(0xc3);

wr_dat(disdata[2]);//显示个位

wr_(0xc4);

wr_dat(0x2e);//显示小数点

wr_(0xc5);

wr_dat(disdata[3]);//显示小数位

}

/********************主程序***********************************/

voidmain()

{

init_play();//初始化显示

while

(1)

{

read_temp();//读取温度

ds1820disp();//显示

if(tvalue>310)

Beef=0;

else

Beef=1;

}

}

/**********DS1820.C***********/

#include

#include"ds1820.h"

uchardisdata[5];

uinttvalue;//温度值

uchartflag;//温度正负标志

voiddelay_18B20(unsignedinti)//延时1微秒

{

while(i--);

}

/********************************************************

功能:

ds1820复位*

输入参数:

返回值:

无*

*********************************************************/

voidds1820rst()/*ds1820复位*/

{

unsignedcharx=0;

DQ=1;//DQ复位

delay_18B20(4);//延时

DQ=0;//DQ拉低

delay_18B20(100);//精确延时大于480us

DQ=1;//拉高

delay_18B20(40);

}

/********************************************************

功能:

ds1820读数据*

输入参数:

返回值:

dat*

*********************************************************/

uchards1820rd()/*读数据*/

{

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i--)

{

DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ)

dat|=0x80;

delay_18B20(10);

}

return(dat);

}

/********************************************************

功能:

ds1820写数据*

输入参数:

wdata

返回值:

无*

*********************************************************/

voidds1820wr(ucharwdata)/*写数据*/

{

unsignedchari=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=wdata&0x01;

delay_18B20(10);

DQ=1;

wdata>>=1;

}

}

/********************************************************

功能:

ds1820读取温度*

输入参数:

返回值:

tvalue*

*********************************************************/

uintread_temp()/*读取温度值并转换*/

{

uchara,b;

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0x44);//*启动温度转换*/

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0xbe);//*读取温度*/

a=ds1820rd();

b=ds1820rd();

tvalue=b;

tvalue<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1