单片机智能温度报警系统.docx

上传人:b****5 文档编号:5792619 上传时间:2023-01-01 格式:DOCX 页数:19 大小:1.90MB
下载 相关 举报
单片机智能温度报警系统.docx_第1页
第1页 / 共19页
单片机智能温度报警系统.docx_第2页
第2页 / 共19页
单片机智能温度报警系统.docx_第3页
第3页 / 共19页
单片机智能温度报警系统.docx_第4页
第4页 / 共19页
单片机智能温度报警系统.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机智能温度报警系统.docx

《单片机智能温度报警系统.docx》由会员分享,可在线阅读,更多相关《单片机智能温度报警系统.docx(19页珍藏版)》请在冰豆网上搜索。

单片机智能温度报警系统.docx

单片机智能温度报警系统

私立华联学院

 

毕业设计题目:

单片机智能温度报警系统

学院:

电子信息工程系

专业:

电子信息工程技术

班级:

08电子1班

姓名:

梁旭

学号:

0301080135

 

摘要:

介绍了单总线数字温度传感器DSI8B20模块的特性,利用DS18B20设计了一种基于STC89C52单片机的智能温度报警系统。

该智能温度报警系统以STC公司生产的STC89C52为控制器,结构简单、测温准确。

软件使用模块化结构.并对温度进行刷新显示和报警处理。

Abstract:

Thesingle-busdigitaltemperaturesensorDSI8B20modulefeatures,theuseofDS18B20designedbasedonSTC89C52ofIntelligenttemperaturealarmsystem.TheintelligenttemperaturealarmsystemtoSTCproducedSTC89C52thecontrollerstructureissimple,accuratetemperaturemeasurement.Softwareusesamodularstructure.Refreshandtemperaturedisplayandalarmprocessing.

 

一、引言

在工业生产中,温度的控制尤其重要,因而对温度报警系统的需求也越来越大。

如何设计一款成本低廉、测量准确、操作简单的智能温度报警系统成为一个重要问题。

在本次设计中,整个系统以SCT98C52为核心。

温度传感器DS18B20完成环境温度转换功能。

其输出为数字形式,可以直接给单片机进行处理;键盘为简单的三键控制,处理方式采用中断方式,减少了占用CPU时间。

这种设计的成本较小,结构简单、操作方便,并且测量也很准确,能够满足工业生产

的需要

温度控制,在工业自动化控制中占有非常重要的地位。

单片机系统的开发应用给现代工业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用。

将单片机控制方法运用到温度控制系统中,可以克服温度控制系统中存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制效果和控制精度。

现代自动控制越来越朝着智能化发展,在很多自动控制系统中都用到了工控机,小型机、甚至是巨型机处理机等,当然这些处理机有一个很大的特点,那就是很高的运行速度,很大的内存,大量的数据存储器。

但随之而来的是巨额的成本。

在很多的小型系统中,处理机的成本占系统成本的比例高达20%,而对于这些小型的系统来说,配置一个如此高速的处理机没有任何必要,因为这些小系统追求经济效益,而不是最在乎系统的快速性,所以用成本低廉的单片机控制小型的,而又不是很复杂,不需要大量复杂运算的系统中是非常适合的。

温度控制,在工业自动化控制中占有非常重要的地位,如在钢铁冶炼过程中要对出炉的钢铁进行热处理,才能达到性能指标,塑料的定型过程中也要保持一定的温度。

随着科学技术的迅猛发展,各个领域对自动控制系统控制精度、响应速度、系统稳定性与自适应能力的要求越来越高,被控对象或过程的非线性、时变性、多参数点的强烈耦合、较大的随机扰动、各种不确定性以及现场测试手段不完善等,使难以按数学方法建立被控对象的精确模型的情况。

随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。

伴随着科学技术的发展,电子技术有了更高的飞跃,我们现在完全可以运用单片机和电子温度传感器对某处进行温度检测,而且我们可以很容易地做到多点的温度检测,如果对此原理图稍加改进,我们还可以进行不同地点的实时温度检测和控制。

二、设计目的

学习了单片机课程之后,为了加深对理论知识的理解,学习理论知识在实际中的运用,加深自己的动手能力,我通过查找资料,应用STC89C52单片机和DS18B20温度芯片制作了一个智能温度报警系统。

提高对单片机的认识,提高焊接能力。

三、使用中央单元处理器介绍

1、主控芯片STC89C52

STC89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandEras-ableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用STC高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC的STC89C52是一种高效微控制器。

STC89单片机为嵌入式控制系统提供了一种灵活性高且价廉的方案。

2、DS18B20数字温度传感器

DSI8B20是DALLAS公司的最新单线数字温度传感器,它体积小、经济。

是世界上第一片支持“一线总线”接口的温度传感器。

一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。

它的测量温度范围为一55~+125℃。

现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。

适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。

与前一代产品不同,新的产品支持3~5.5V的电压范围,使系统设计更灵活、方便。

而且新一代产品更便宜,体积更小。

DSI8B20可以程序设定9~12位的分辨率,精度为±0.5℃。

可以选择更小的封装方式,更宽的电压适用范围。

分辨率设定及用户设定的报警温度存储在EPROM中,掉电后依然保存。

DS18B20的性能是新一代产品中最好的,性能价格比也非常出色,继“一线总线”的早期产品后,DSI8B20开辟了温度传感器技术的新概念。

DS18B20和DS18B22使电压特性及封装有更多的选择,让用户可以构建适合自己的经济的测温系统。

S18B20内部结构主要由4部分组成:

64位光刻ROM,温度传感器、非挥发的温度报警触发器TH和[2]TL,配置寄存器。

DSI8B20的管脚排列如图2所示。

本次设计智能温度报警系统的温度采集就由DSI8B20完成。

将DSI8B20的GND脚接地,VDD脚接高电平,而单总线DQ脚接单片机的外部中断1脚,具体的采集电路

DSI8B20的管脚排列图2

但在系统调试时也出现了很多问题。

第一个问题是温度输出总是85。

后来经过反复实验才发现DSI8B20从测温结束到将温度值转换为数字量需要一定的转换时间。

这是必须保证的,不然会出现转换错误的现象。

第二个问题是在实际使用中发现的,就是要使电源电压保持在5V左右,若电源电压过低,会使所测得的温

度与实际温度出现偏高现象。

四、系统软件设计

本设计智能温度报警系统由温度采集、信号处理、温度监测、输出控制四部分组成。

其系统框图如图7所示,它通过预先设在单片机中的高低温度值来对非常温度值进行报警,从DSI8B20采集到的温度经信号调理电路处理后直接送入单片机进行刷新。

微控制器根据信号数据及设定的各种控制参数,按照嵌入的软件控制规律执行计算与处理,自动显示温度值、输出相应的控制信号,并根据当前状态输出正常、报警等信号,同时将各种数据通过数码管进行显示监控。

系统的软件设计流程图如图6所示。

图6软件设计流程图

1.1、方案一

由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。

而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。

1.2、方案二

进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。

2.1系统总体设计

温度计电路设计总体设计方框图如图1所示,控制器采用单片机STC89C52,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。

 

图2.1—1 总体设计方框图

图2.1—2系统仿真图

2.2系统模块

系统由单片机最小系统、显示电路、按键、温度传感器等组成。

 

2.2.1主控制器

单片机STC89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用电池供电。

晶振采用12MHZ。

复位电路采用上电加按钮复位。

图2.3.1—1晶振电路

图2.2.1—2复位电路

2.2.2显示电路

显示电路采用4位共阴极LED数码管,P0口由上拉电阻提高驱动能力,作为段码输出并作为数码管的驱动。

P2口的低四位作为数码管的位选端。

采用动态扫描的方式显示。

图2.3.2数码管显示电路

2.2.3温度传感器

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

DS18B20的性能特点如下:

1、独特的单线接口仅需要一个端口引脚进行通信;

2、多个DS18B20可以并联在惟一的三线上,实现多点组网功能

3、无须外部器件;

4、可通过数据线供电,电压范围为3.0~5.5V;

5、零待机功耗;

6、温度以9或12位数字;

7、用户可定义报警设置;

8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;

9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。

另一种是寄生电源供电方式,如图4所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。

采用寄生电源供电方式时VDD端接地。

由于单线制只有一根线,因此发送接口必须是三态的。

图2.2.3温度传感器与单片机的连接

2.2.4报警温度调整按键

本系统设计三个按键,采用查询方式,一个用于选择切换设置报警温度和当前温度,另外两个分别用于设置报警温度的加和减。

均采用软件消抖。

图2.3.4按键电路

3系统软件算法分析

系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序,按键扫描处理子程序等。

3.1主程序流程图

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。

这样可以在一秒之内测量一次被测温度,其程序流程见图3.1所示。

 

 

图3.1主程序流程图

3.2读出温度子程序

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

其程序流程图如图3.2示

3.3温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。

温度转换命令子程序流程图如上图,图3.3所示

 

图3.3温度转换流程图

 

图3.2读温度流程图

3.4计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3.4所示。

3.5显示数据刷新子程序

显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。

程序流程图如图3.5。

 

 

图3.4 计算温度流程图  图3.5 显示数据刷新流程图

3.6按键扫描处理子程序

按键采用扫描查询方式,设置标志位,当标志位为1时,显示设置温度,否则显示当前温度。

如下图3.6示。

 

图3.6按键扫描处理子程序

4实验仿真

进入protuse后,连接好电路,并将程序下载进去。

将DS18B20的改为0.1,数码管显示温度与传感器的温度相同。

图4—1温度显示仿真

当按下SET键一次时,进入温度报警上线调节,此时显示软件设置的温度报警上线,按ADD或DEC分别对报警温度进行加一或减一。

当再次按下SET键时,进入温度报警下线调节,此时显示软件设置的温度报警下线,按ADD或DEC分别对报警温度进行加一或减一。

图4—2温度调试仿真

当第三次按下SET键时,退出温度报警线设置。

显示当前温度。

五、电路实物图

使用元器件:

主控器STC89C52一片、DS18B20温度测量传感器一片、30P瓷片电容2个、1K电阻5个、100欧电阻8个10K电阻1个、8550三极管5个,12M晶体1片、、按钮开关1个、复位按钮3个、蜂鸣器1个、离子电池1个、USB接口1个、万能电路板一块、5V电源一个、四位七段数码管1块、导线若干。

六、结束语

实验表明:

该智能温度报警系统结构简单、测温准确,具有一定的实际应用价值。

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

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

通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。

但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。

而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。

所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。

通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。

在焊接过程中我曾将温度传感器的电源、地焊反啦,导致温度传感器急剧发热,后经观察和查询资料才得以改正。

从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

特别是对单片机C语言产生了更深的兴趣,能用Portel,PROTEUS等专业软件,掌握了电子电路调试的方法,能独立解决设计与调试过程中出现的一般问题,能正确选用元器件与材料,能对所设计电路的指标和性能进行测试并提出改进意见,能查阅各种有关手册和正确编写设计报告。

由于这次的设计是一个人单独作一个课题,所以我是采用以自学为主的学习方法。

在学完《模拟电子技术基础》和《数字电子技术基础》课程之后,还要对《单片机基础》的深入研究。

在复习和课程设计任务有关的单元电路,理清头绪,按照电子电路的一般设计步骤进行设计。

一个人做有点困难,途中不知碰到了多少难题,有些问题需要请教老师和同学,在解决这些实际难题中我的动手能力和知识巩固都得到了很大的提高。

参考文献

 

[1]曾令琴模拟电子技术人民邮电出版社

[2]李晓荃单片机原理与应用电子工业出版社

[3]电子报人民邮电出版社

[4]何立民单片机的C语言应用程序设计北京航空航天大学出版社

[5]网上资料

程序名称:

DS18B20温度测量、报警系统

简要说明:

DS18B20温度计,温度测量范围0~99.9摄氏度

可设置上限报警温度、下限报警温度

即高于上限值或者低于下限值时蜂鸣器报警

默认上限报警温度为38℃、默认下限报警温度为5℃

报警值可设置范围:

最低上限报警值等于当前下限报警值

最高下限报警值等于当前上限报警值

将下限报警值调为0时为关闭下限报警功能

C语言程序:

  

#include

#include"DS18B20.h"  

#defineuintunsignedint

#defineucharunsignedchar  //宏定义

#defineSET  P3_1  //定义调整键

#defineDEC  P3_2  //定义减少键

#defineADD  P3_3  //定义增加键

#defineBEEPP3_7  //定义蜂鸣器

bitshanshuo_st;  //闪烁间隔标志

bitbeep_st;    //蜂鸣器间隔标志

sbitDIAN=P2^7;      //小数点

ucharx=0;    //计数器

signedcharm;    //温度值全局变量

ucharn;    //温度值全局变量

ucharset_st=0;    //状态标志

signedcharshangxian=38;  //上限报警温度,默认值为38

signedcharxiaxian=5;  //下限报警温度,默认值为38

ucharcode  LEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};

/*****延时子程序*****/

voidDelay(uintnum)

{

while(--num);

}

/*****初始化定时器0*****/

voidInitTimer(void)

{

  TMOD=0x1;

  TH0=0x3c;

  TL0=0xb0;    //50ms(晶振12M)

}

/*****定时器0中断服务程序*****/

voidtimer0(void)interrupt1

{

TH0=0x3c;

TL0=0xb0;

x++;

}

/*****外部中断0服务程序*****/

voidint0(void)interrupt0

{

EX0=0;    //关外部中断0

if(DEC==0&&set_st==1)

{

  shangxian--;

  if(shangxian

}

elseif(DEC==0&&set_st==2)

{

  xiaxian--;

  if(xiaxian<0)xiaxian=0;

}

}

/*****外部中断1服务程序*****/

voidint1(void)interrupt2

{

EX1=0;    //关外部中断1

if(ADD==0&&set_st==1)

{

  shangxian++;

  if(shangxian>99)shangxian=99;

}

elseif(ADD==0&&set_st==2)

{

  xiaxian++;

  if(xiaxian>shangxian)xiaxian=shangxian;

}  

}

/*****读取温度*****/

voidcheck_wendu(void)

{

uinta,b,c;

c=ReadTemperature()-5;  //获取温度值并减去DS18B20的温漂误差

a=c/100;    //计算得到十位数字

b=c/10-a*10;  //计算得到个位数字

m=c/10;    //计算得到整数位

n=c-a*100-b*10;  //计算得到小数位

if(m<0){m=0;n=0;}  //设置温度显示上限

if(m>99){m=99;n=9;}  //设置温度显示上限  

}

/*****显示开机初始化等待画面*****/

Disp_init()  

{

P2=0xbf;    //显示-

P1=0xf7;

Delay(200);

P1=0xfb;

Delay(200);  

P1=0xfd;

Delay(200);

P1=0xfe;

Delay(200);

P1=0xff;      //关闭显示

}

/*****显示温度子程序*****/

Disp_Temperature()    //显示温度

{

P2=0xc6;    //显示C

P1=0xf7;

Delay(300);

P2=LEDData[n];  //显示个位

P1=0xfb;

Delay(300);

P2=LEDData[m%10];  //显示十位

DIAN=0;      //显示小数点

P1=0xfd;

Delay(300);

P2=LEDData[m/10];  //显示百位

P1=0xfe;

Delay(300);

P1=0xff;      //关闭显示

}

/*****显示报警温度子程序*****/

Disp_alarm(ucharbaojing)

{

P2=0xc6;    //显示C

P1=0xf7;

Delay(200);

P2=LEDData[baojing%10];//显示十位

P1=0xfb;

Delay(200);

P2=LEDData[baojing/10];//显示百位

P1=0xfd;

Delay(200);

if(set_st==1)P2=0x89;

elseif(set_st==2)P2=0xc7;//上限H、下限L标示

P1=0xfe;

Delay(200);

P1=0xff;      //关闭显示

}

/*****报警子程序*****/

voidAlarm()

{

if(x>=10){beep_st=~beep_st;x=0;}

if((m>=shangxian&&beep_st==1)||(m

elseBEEP=1;

}

/*****主函数*****/

voidmain(void)

{

  uintz;

InitTimer();  //初始化定时器

EA=1;    //全局中断开关

TR0=1;

ET0=1;    //开启定时器0

IT0=1;      

IT1=1;

check_wendu();

check_wendu();

for(z=0;z<300;z++)

{

  Disp_init();      

  }

 

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

当前位置:首页 > 医药卫生 > 基础医学

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

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