基于51单片机的温度报警器设计

摘 要:单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度器,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。 随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。本文通过采用蜂鸣器作为电声元件的温度报警器的设计,阐明了该装置进行设计与制作的具体过程及方法。这种温度报警器结构简单,可操作性强,应用广泛。工作时,温度测量范围为5—38ºC。当前环境温度若超过设定的高温临界温度,由单片机发出报警信号,从而防止带来的不必要的损失。 造成高温火灾有:电气线路短路、过载、接触电阻过大等引发高温或火灾;静电产生高温或或火灾;雷电等强电侵入导致高温或火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温;因此机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。 关键词STC89C51单片机,数字控制,温度计,DS18B20 前言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也 是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用 单片机 STC89C51,测温传感器使用 DS18B20,用四位一体共阴极 LED 数码管以串口传送数据,实现温度 显示,能准确达到要求。

1 设计要求与方案论证

首先明确设计要求,再讨论方案,一一攻破设计的难点。

1.1 设计要求

基本范围:温度检测范围-55℃-125℃,报警值设置范围0℃-99℃ ;

精度误差小于 0.1℃ ;

数码管直读显示;

扩展功能:可以任意设定温度的上下限报警功能。

1.2 系统基本方案选择和论证

1.2.1 单片机芯片的选择方案和论证

由于单片机具有以下的很多优点,被我们选定为制作该作品的首选芯片

单片机特点:

(1)高集成度,体积小,高可靠性

单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的CPU。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。

(2)控制功能强

为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。

(3)低电压,低功耗,便于生产便携式产品

为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8V~3.6V,而工作电流仅为数百微安。

(4)易扩展

片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。

(5)优异的性能价格比

单片机的性能极高。为了提高速度和运行效率,单片机已开始使用RISC流水线和DSP等技术。单片机的寻址能力也已突破64KB的限制,有的已可达到1MB和16MB,片内的ROM容量可达62MB,RAM容量则可达2MB。由于单片机的广泛使用,因而销量极大,各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。

方案一:

采用STC89C51芯片作为硬件核心。STC89C51内部具有8KB ROM 存储空间,512字节数据存储空间,带有2K字节的EEPROM存储空间,与MCS-51系列单片机完全兼容,STC89C51可以通过串口下载。

方案二:

采用AT89S51。AT89S51片内具有8K字节程序存储空间,256字节的数据存储空间没有EEPROM存储空间,也与MCS-51系列单片机完全兼容,具有在线编程可擦除技术。

两种单片机都完全能够满足设计需要,STC89C51相对ATS89C52价格便宜,且抗干扰能力强。考虑到成本因素,因此选用STC89C51。

1.2.2 温度传感器设计方案论证

利用物质各种物理性质随温度变化的规律把温度转换为电量的传感器。这些呈现规律性变化的物理性质主要有体。温度传感器是温度测量仪表的核心部分,品种繁多。按测量方式可分为接触式和非接触式两大类,按照传感器材料及电子元件特性分为热电阻和热电偶两类。

现代信息技术的三大基础是信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)。温度传感器的发展大致经历了以下三个阶段;(1)传统的分立式温度传感器(含敏感元件);(2)模拟集成温度传感器/控制器;(3)智能温度传感器。国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展。在20世纪90年代中期最早推出的智能温度传感器,采用的是8位A/D转换器,其测温精度较低,分辨力只能达到1°C。国外已相继推出多种高精度、高分辨力的智能温度传感器,所用的是9~12位A/D转换器,分辨力一般可达0.5~0.0625°C。由美国DALLAS半导体公司新研制的DS1624型高分辨力智能温度传感器,能输出13位二进制数据,其分辨力高达0.03125°C,测温精度为±0.2°C。为了提高多通道智能温度传感器的转换速率,也有的芯片采用高速逐次逼近式A/D转换器。目前,智能温度传感器的总线技术也实现了标准化、规范化,所采用的总线主要有单线(1-Wire)总线、I2C总线、SMBus总线和spI总线。温度传感器作为从机可通过专用总线接口与主机进行通信。

方案一:

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

方案二:

进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

从以上两种方案,两种都完全能够满足设计需要,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。

1.3 电路设计最终方案决定

综上各方案所述,对此次作品的方案选定: 采用STC89C51单片机作为主控制系统;采用DS18B20为传感器;采用数码管作为显示器件。

2 主要元件介绍

2.1 STC89C51介绍

STC89C51是由深圳宏晶科技公司生产的与工业标准MCS-51指令集和输出管脚相兼容的单片机。

2.1.1 STC89C51主要功能及PDIP封装

STC89C51主要功能如表1所示,其PDIP封装如图1所示

#include <reg51.h> 
#include <intrins.h>
#include <DS18B20.h>
#define uchar unsigned char
#define uint unsigned int
#define SMGIO P0

sbit SET=P1^0;		   //定义设定上下限键
sbit ADD=P1^1;		   //定义增加键
sbit DEC=P1^2;		   //定义减小限键	   
sbit SMG1=P2^0;		   //定义数码管第一位
sbit SMG2=P2^1;		   //定义数码管第二位
sbit SMG3=P2^2;		   //定义数码管第三位
sbit SMG4=P2^3;		   //定义数码管第四位
sbit BEEP=P2^5;		   //定义蜂鸣器报警
uint tempValue;		   //变量 存储当前温度值
uint HI_Alarm=30;	   //初始上限
uint LO_Alarm=10;	   //初始下限
uchar SMG_CC[]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7};		  //共阴极数码管0-9编码
uchar SMG_CC_DOT[]={0x7f,0x64,0xbd,0xf5,0xe6,0xf3,0xfb,0x65,0xff,0xf7};	  //共阴极数码管0-9编码 带小数点
/********************************************************************/
/*						1ms延时										*/
/********************************************************************/
void delayms(uint x)
{
uchar i;
while(x--)
 {
  for(i=150;i>0;i--);
 }
}

void Display_Temperature()	   	//显示温度
{
	char smg1,smg2,smg3,smg4;
	smg1=tempValue/1000;			 //以下表示将温度值拆分开
	smg2=(tempValue-smg1*1000)/100;
	smg3=(tempValue%100)/10;
	smg4=tempValue%10;
	if(tflag==1)	 				//负数显示
		{
			SMGIO=SMG_CC[smg4];		//显示小数位
			SMG4=0;
			delayms(1);
			SMG4=1;
			SMGIO=SMG_CC_DOT[smg3];	 //显示个数位
			SMG3=0;
			delayms(1);
			SMG3=1;
			if(smg2==0)
			{
				SMGIO=0x40;	 		//显示十数位
				SMG2=0;
				delayms(1);
				SMG2=1;
				SMGIO=0x00;			 //显示百数位
				SMG1=0;
				delayms(1);
				SMG1=1;
			}
			else
			{
				SMGIO=SMG_CC[smg2];	 //显示十数位
				SMG2=0;
				delayms(1);
				SMG2=1;
				SMGIO=0x40;	 		//显示十数位
				SMG1=0;
				delayms(1);
				SMG1=1;					
			}
		}
	else	                        //正数显示
		{
			SMGIO=SMG_CC[smg4];	 //显示小数位
			SMG4=0;
			delayms(1);
			SMG4=1;
			SMGIO=SMG_CC_DOT[smg3];	 //显示个数位
			SMG3=0;
			delayms(1);
			SMG3=1;
			if(smg1==0)				  
			{
				SMGIO=0x00;	 
				SMG1=0;
				delayms(1);
				SMG1=1;
				if(smg2==0)
				{
					SMGIO=0x00;	 
					SMG1=0;

image.png

image.png

image.png

image.png

 文章借鉴于此纷传

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值