温度报警控制系统.docx

上传人:b****8 文档编号:9328093 上传时间:2023-02-04 格式:DOCX 页数:32 大小:460.89KB
下载 相关 举报
温度报警控制系统.docx_第1页
第1页 / 共32页
温度报警控制系统.docx_第2页
第2页 / 共32页
温度报警控制系统.docx_第3页
第3页 / 共32页
温度报警控制系统.docx_第4页
第4页 / 共32页
温度报警控制系统.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

温度报警控制系统.docx

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

温度报警控制系统.docx

温度报警控制系统

目录

1.课程设计目的……………………………………………………2

2.课程设计的主要内容和任务分析………………………………2

3.控制系统的总体要求……………………………………………2

4.温度报警控制系统硬件部分设计分析…………………………3

4.1温度传感器DSl8B20………………………………………3

4.2AT89C51单片机简介………………………………………9

4.374HC138功能介绍…………………………………………11

4.474HC377功能介绍…………………………………………12

4.574HC245功能介绍…………………………………………12

4.6温度报警控制系统电路图……………………………………13

5.温度报警控制系统软件部分设计分析…………………………14

5.1程序实现功能…………………………………………………14

5.2程序流程图……………………………………………………14

5.3温度报警控制程序……………………………………………17

6.系统调试…………………………………………………………17

课程设计体会…………………………………………………………18

参考文献………………………………………………………………18

附件……………………………………………………………………19

 

温度报警控制系统设计

1.设计目的:

1、通过温度报警控制系统的设计,了解数字式温度传感器DS18B20的工作原理及其控制方法;

2、通过温度报警控制系统的设计,掌握单片机AT89C51的结构原理及其控制指令的应用,熟练应用AT89C51完成一个系统的控制;

3、通过温度报警控制系统的设计,使学生了解一个控制系统设计的基本步骤,程序设计的基本方法,培养学生分析问题和解决问题的能力,将理论联系到实践中去,提高我们的动脑和动手的能力,通过课程设计,还可以使学生树立正确的世界观,培养实事求是、严肃认真、具有高度责任感的工作作风;

4、学习完成控制系统的硬件设计、软件设计、仿真调试的过程。

2.课程设计的主要内容和任务分析

任务:

以单片机AT89C51作为核心,基于数字式温度传感器DS18B20的功能,设计一个具有LED显示功能、按键功能、温度检测功能及控制操作功能的控制系统。

内容:

设计基于DS18B20的数字式烤箱温度控制系统,控制电路主要包括,led显示电路、按键电路、温度检测电路及控制电路。

控制程序主要包括主程序、读出温度子程序、按键子程序、显示子程序、控制子程序等。

要求能检测、显示烤箱温度,并控制烤箱温度在一可设定区域。

3.控制系统的总体要求:

1.对烤箱温度进行检测及控制。

温度显示范围:

0゜C~+99゜C,精度误差在1゜C以内。

2.温度控制在设置的上下限范围。

3.能设置并保存温度上、下限值,并可随时修改。

4.LED数码管直读显示实测温度,设置温度上限温度,下限温度(用键控制设定温度)。

5.温度超出上、下限值时,报警;根据所测温度所在的界限控制烤箱是否加热。

6.启/停键用以启动和停止加热,上电复位后,不论启动还是停止状态,人机界面显示烤箱内温度值,同时也要求显示界面区分停止和运行状态。

4.温度报警控制系统硬件部分设计分析:

4.1温度传感器DSl8B20

由美国DALLAS半导体公司生产的DSl8B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中,例如多路温度测控仪、中央空调、大型冷库、恒温装置等。

此外巧妙利用DSl8B20内部64位激光ROM中具有惟一性的48位产品序号,还可设计成专供大型宾馆客房或军事仓库使用的保密性极佳的电子密码锁。

DSl8B20的电源电压范围均扩展到+3~+5.5V,DSl8B20还能对温度分辨力进行编程,选择9位~12位模式下工作,在12位模式下的最高分辨力可达0.0625℃。

4.1.1DS18B20的性能特点

(1)DSl8B20采用DALLAS公司独特的“单线(1-Wire)总线”专有技术,通过串行通信接口(I/O)直接输出被测温度值(9位二进制数据,含符号位)。

(2)在测温范围是-55~+125℃时,测量误差不超过±2℃,在-10~+85℃范围内,可确保测量误差不超过±0.5℃。

温度/数字量转换时间的典型值仅需93.75ms,比DS1820有很大的提高.

(3)内含64位经过激光修正的只读存储器ROM,扣除8位产品系列号和8位循环冗余校验码CRC之后,产品序号占48位。

出厂前就作为DSl8B20惟一的产品序号,存入其ROM中。

在构成大型温控系统时,允许在单线总线上挂接多片DSl8B20。

4.1.2DS18B20的工作原理

DSl8B20的原理与DS1820的原理是一样的。

DS18B20继承了DS1820的所有优点。

DS18B20采用3脚PR—35封装或8脚SOIC封装,引脚排列如图1-1所示。

I/O为数据输入/输出端(即单线总线),它属于漏极开路输出,外接上拉电阻后,常态下呈高电平。

UDD是可供选用的外部+5V电源端,不用时需接地。

GND为地,NC为空脚。

其内部框图如图1-2所示。

主要包括7部分:

①寄生电源;②温度传感器;

64位激光(laser)ROM与单线接口;④高速暂存器,即便笺式RAM,用于存放中间数据;⑤TH触发寄存器和TL触发寄存器,分别用来存储用户设定的温度上、下限tH、tL值;⑥存储与控制逻辑;⑦8位循环冗余校验码(CRC)发生器。

下面分别介绍各部分的工作原理。

(a)(b)

图1-1DS1820/DS18B20的引脚排列

(a)PR—35封装(b)SOIC封装

图1-2DS18B20的内部框图

(1)测温电路原理

DSl8B20内部测温电路框图如图1-4所示。

低温度系数振荡器用于产生稳定的频率ƒ0,高温度系数振荡器则相当于T/ƒ转换器,能将被测温度t转换成频率信号ƒ0图中还隐含着计数门,当计数门打开时,DSl8B20就对低温度系数振荡器产生的时钟脉冲ƒ0进行计数,进而完成温度测量。

计数门的开启时间由高温度系数振荡器来决定。

每次测量前,首先将-55℃所对应的基数分别置入减法计数器、温度寄存器中。

在计数门关闭之前若计数器已减至零,温度寄存器中的数值就增加0.5℃。

然后,计数器依斜率累加器的状态置入新的数值,再对时钟计数,然后减至零,温度寄存器值又增加0.5℃。

只要计数门仍未关闭,就重复上述过程,直至温度寄存值达到被测温度值。

这就是DSl8B20的测温原理。

斜率累加器能对振荡器的非线性予以补偿,提高测量准确度。

需要指出,温度值本应为9位(其中,符号占一位),但因符号位又被扩展成高8位,故实际以16位补码的形式读出。

其中,高8位代表符号,“0”表示t>0℃,“1”表示t<0℃;低8位则以0.5℃/LSB。

图1-3内部测温电路框图

表1—1温度—数据的对应关系

温度/℃

数字输出(二进制)

数字输出(十六进制)

+125

0000011111010000

07D0H

+85

0000010101010000

0550H

+25.0625

0000000110010001

0191H

+10.125

0000000010100010

00A2H

+0.5

0000000000001000

0008H

0

0000000000000000

0000H

-0.5

1111111111111000

FFF8H

-10.125

1111111101011110

FF5EH

-25.0625

1111111001011111

FE6FH

-55

1111110010010000

FC90H

温度与数据的对应关系见表1—1。

欲测量华氏温度(0F),需进行下述换算:

t(0F)=9/5(0C)+32(1—1)

DS18B20中温度字节中的位定义

低八位

23

22

21

20

2-1

2-2

2-3

2-4

高八位

S

S

S

S

S

26

25

24

DSl8B20型单线智能温度传感器典型的测温误差在0~70℃范围内,DSl8B20的上、下限测温误差分别为+0.5℃、-0.5℃,而典型产品的误差仅为±0.25℃。

(4)高速暂存器(简称暂存器)

它由便笺式RAM、非易失性电擦写E2RAM所组成,后者用来存储tH和tL值。

图1-4暂存器的操作命令流程图

数据先写入RAM,经校验后再传给E2RAM。

便笺式RAM占9个字节,第0、1字节是测量出的温度信息,第2、3字节分别是tH、tL值,第4、5字节不用。

第6、7字节为计数寄存器,可用于提高温度分辨力。

第8字节用来存储上述8字节的循环冗余校验码。

详见表3—2。

暂存器的命令集见表3—3。

6条命令分别为温度转换、读暂存器、写暂存器、复制暂存器、重新调出E2RAM、读电源供电方式。

表1—2暂存器的内容

便笺式RAM

字节

E2RAM

温度低字节

0

温度高字节

1

报警上限/用户定义字节1

2

报警上限/用户定义字节1

报警下限/用户定义字节2

3

报警下限/用户定义字节2

保留

4

保留

5

计数余数值

6

每度计数值

7

CRC

8

表1—3暂存器命令集

指令

说明

约定代码

发生约定代码后单线总线

温度转换

启动DSl8B20进行温度转换

44H

主CPU读DSl8B20的“忙状态”

读暂存器

读暂存器9个字节的内容

BEH

主CPU读9个字节的数据

写暂存器

将数据写入暂存器的TH和TL字节

4EH

主CPU给DSl8B20发出两个字节的数据

复制暂存器

把暂存器的TH、TL字节写入E2RAM中

48H

主CPU读DSl8B20的“忙状态”

重新调E2RAM

把E2RAM中的TH、'FL字节分别调入暂存器TH、TL字节

B8H

主CPU读DSl8B20的“忙状态”

读电源供电方式

启动DSl8B20发送电源供电方式的信号给主CPU

B4H

主CPU读DSl8B20的“电源状态”

(5)初始化

对DSl8B20的操作是首先进行初始化,然后执行ROM操作命令,再执行暂存器操作命令,最后完成数据处理。

(6)报警信号

在完成温度转换之后,DSl8B20就把测得的温度值,同tH、tL作比较。

若t>tH或t

因此可用多片DSl8B20同时测量温度并进行报警搜索。

一旦某个测温点越限,主CPU用报警搜索命令即可识别正在报警的DSl8B20,并且读出其序号,而不必考虑其他未报警的DSl8B20。

4.2AT89C51单片机简介

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

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

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89C51单片机管脚如图所示。

图1-5AT89C51管脚

各管脚功能:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

4.374HC138功能介绍

74HC138有3个输入A0、A1、A3,它们共有8种状态组合,即可译出8个输出信号Y0-Y7.引脚图及直值表如下示:

 

图1-674HC138引脚图

 

表1-574HC138真值表

4.474HC377功能介绍

74HC377引脚及真值表如下图所示,当允许控制端(1脚)为低电平时,在时钟端(CP)脉冲上升沿作用下,输出端(Q)与数据端(D)相一致。

当CLK为高电平或低电平时,D对Q没有影响。

图1-774HC377引脚图表1-674HC377真值表

4.574HC245功能介绍

74HC245引脚图及其真值表如下图所示。

 

图1-874HC245引脚图表1-774HC245真值表

4.6温度报警控制系统电路图

5.温度报警控制系统软件部分设计分析:

5.1程序实现功能

开机显示当前温度,并进入停止运行烤箱状态。

按下SW1选择显示上、下限温度。

若进入上、下限温度显示则可修改上、下限值(程序默认值上限为60摄氏度,下限为10摄氏度,并且上限永比下限值高5摄氏度以上)。

SW2为加1摄氏度键,SW3为减1摄氏度键。

若当前温度低于下限值,LED2亮并自动进入运行烤箱状态(加热)。

若当前温度在上、下限值之间,则手动选择是否加热。

SW4为运行键。

运行状态下LED1亮。

在运行状态下,若当前温度高于上限值则自动停止运行。

此外,运行状态下按住SW1显示设置的上限值,按住SW2显示设置的下限值。

5.2程序流程图

5.2.1测温程序流程图

5.2.2主程序流程图

5.2.3运行子程序流程

5.2.4运行时按键功能程序

5.2.5加减键子程序流程

5.3温度报警控制程序

该系统的控制程序见附件1。

6.系统调试

该系统的调试结果如下:

开机显示当前温度,并进入停止运行烤箱状态。

LED数码管显示实时温度。

当按一下SW1(选择键)选择显示上限温度,此时按SW2(加键)、SW3(减键)可加减上限温度设定值;再按一SW1选择显示下限温度,按SW2、SW3可加减该下限温度设定值;再按一下SW1,恢复显示当前温度。

SW4为运行烤箱的启动\停止控制键。

SW1的选择只是在烤箱停止运行时有效,即当按SW4停止运行烤箱时,可进行以上操作;当按SW4启动烤箱时,只能显示上下限的温度值,而不能修改温度值(运行状态下按住SW1显示设置的上限值,按住SW2显示设置的下限值)。

若进入上、下限温度显示则可修改上、下限值(程序默认值上限为60摄氏度,下限为10摄氏度,并且上限永比下限值高5摄氏度以上)。

SW2为加1摄氏度键,SW3为减1摄氏度键。

若当前温度低于下限值,系统的指示灯LED2亮(警报)并自动进入运行烤箱状态(加热),当前温度高于下限值时,指示灯LED2灭(取消警报)。

在运行状态下,若当前温度高于上限值指示灯LED2亮并自动停止运行,温度低于下限值灯灭。

若当前温度在上、下限值之间,则手动选择是否加热。

SW4为运行键。

运行状态下指示灯LED1亮。

7.课程设计体会:

通过两个星期的实训,我对8051的结构及编程语言有了更多的认识,更深的了解了8051的工作方式,并能对硬件调试时出现的一些故障进行合理的分析与改正,保证控制系统的正常控制要求外,我们还尽量使设计的系统符合实际的需求。

通过对控制系统的控制要求的分析,理解控制其控制思想,构思、编写控制程序,并通过调试,修改,使其具备系统要求的功能。

这次的课程设计让我把理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论的是实践的基础,实践有能检验理论的正确性,让我受誉非浅,同时提高了自己的发现问题,分析问题与解决问题的能力。

对我以后参加工作或者继续学习将会产生巨大的帮助和影响。

 

8.参考文献:

1.赖麒文8051单片机C语言彻底应用科学出版社2005

2.陈龙三8051单片机C语言控制与应用清华大学出版社1998

3.钟富昭8051单片机典型模块设计与应用人民邮电出版社2007

4.XX百科DS18B20

附件1:

总程序

#include

#include

#include

//LED选择端口起始地址

#defineled_selXBYTE[0xc000]

//LED数据端口起始地址

#defineled_dataXBYTE[0xe000]

//按键端口起始地址

#definekey_addrXBYTE[0xA000]

//定义数码管内容

charcodetable[22]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x39,0x00,0x40,0x76,0x70,0x38,

0x21,0x30,0x18,0x0c,0x06,0x03};

//LED数码管数字内容:

0,1,2,3,4,5,6,7,

//8,9,c,空,-,H,卜,L,

//运行时当前温度下的动态显示

//定义传感器转换所用到内容

unsignedcharcodetable2[16]={0,0,1,1,2,3,3,4,5,5,6,6,7,8,8,9};

//定义各个变量

//标志状态变量

unsignedinttr1=0,tr0=0,fan;

unsignedcharflag;//运行标志0为运行,1为停止

//上限,下限,当前温度

unsignedintTh,Tl,Tm,Tn;

//定义温度传感器通讯端口为P1.0

sbitDQ=P1^0;

sbitfan1=P1^5;

sbitlgh1=P1^6;

sbitlgh2=P1^7;

//------------------各个子程序------------------

voiddelay(unsignedinti)//测温用到的延时

{

while(i--);

}

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

/*初始化ds18b2子函数**/

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

voidInit_DS18B20(void)//初始化传感器函数

{

unsignedcharx=0;

DQ=1;//DQ复位

delay(8);//稍做延时

DQ=0;//单片机将DQ拉低

delay(80);//精确延时大于480us

DQ=1;//拉高总线

delay(14);

x=DQ;//稍做延时后

//如果x=0则初始化成功x=1则初始化失败

delay(20);

}

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

/*读字节子函数*/

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

unsignedcharReadOneChar(void)//读一个字节

{

unsignedchari=0;

unsignedchardat=0;

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

{

DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ)dat|=0x80;

delay(4);

}

return(dat);

}

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

/*写字节子函数*/

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

voidWriteOneChar(unsignedchardat)//写一个字节

{

unsignedchari=0;

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

{

DQ=0;

DQ=dat&0x01;

delay(5);

DQ=1;

dat>>=1;

}

}

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

/*读

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

当前位置:首页 > 求职职场 > 职业规划

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

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