温度采集报警系统的设计.docx
- 文档编号:8949515
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:29
- 大小:290.15KB
温度采集报警系统的设计.docx
《温度采集报警系统的设计.docx》由会员分享,可在线阅读,更多相关《温度采集报警系统的设计.docx(29页珍藏版)》请在冰点文库上搜索。
温度采集报警系统的设计
学号:
1208421071
课程设计报告
温度采集报警系统的设计
院系电子信息工程学院
专业电子信息工程
班级1
姓名孙黄超
摘要
温度采集广泛应用于人民的生产和生活中,使用温度计来采集温度,这样不仅采集精度低、实时性差,而且操作人员的劳动强度大。
为了解决这一问题,本文介绍了一种采用集成温度传感器DS18B20作为检测元件,AT89C51作为CPU的温度监控系统。
利用数字温度传感器DS18B20与AT89C51单片机结合来测量温度,利用相应的显示器显示温度值。
利用仿真工具Proteus进行单片机应用系统的虚拟设计与仿真调试。
在KeilμVision3开发环境下进行C51语言程序开发。
本课题主要有键盘输入模块、传感器采集模块、显示模块、报警模块、CPU处理模块、电源供电及复位模块组成。
本文介绍了该温度采集报警系统的硬件和软件设计。
关键字:
数据采集、传感器、AT89S51单片机、仿真调试
2温度采集报警系统原理说明.......................................................................1
3.2.1晶振电路..................................................................................................3
3.2.2复位电路.................................................................................................4
3.2.3按键操作电路..........................................................................................4
3.2.4显示电路..................................................................................................5
3.2.5报警电路..................................................................................................5
3.2.6温度传感器选择.....................................................................................5
3.2.7实现温度采集报警系统的整体流程图..................................................6
8附录............................................................................................................13
1引言
1.1研究背景及意义
随着社会和经济的发展,城市的消防工作越来越重要,火灾自动报警系统在消防工作中的作用就越突出,我国的火灾报警系统历经了从无到有,从简单到复杂的发展过程,其中智能化程度越来越高,但是由于人为的因素导致发生火灾的消息不能及时向有关方面报告,没有及时的处理火灾事故,这导致了更多的经济财产损失。
而火灾自动报警系统的实现及全方面的应用就是为了减少损失的发生率。
温度采集报警系统的设计及研究应用,对于以后消防工作的进行有十分重大的意义。
因此,采用单片机实现温度控制系统的研究越来越普遍,而单片机温度控制系统中的传感器的应用,简化了信息采集的设计,从而减小了设计的复杂性,增加系统的可靠性,也同时减小了在实际开发中PCB板的面积,节约了成本。
报警和显示模块主要是驱动蜂鸣器实现报警功能和便于实时观察。
该系统充分体现了智能化、低功耗、高精度的发展趋势。
重点在于传感器的设计及智能化、低功耗的硬件电路设计上。
1.2国内外研究现状
由于火灾系统需要不断完善,因此,目前各个国家对于温度采集报警系统十分的重视。
重视的角度虽热不同,但最终的目的就是提高温度采集报警系统的灵敏度,使之应用于各大消防隐患场所。
在现代社会不断发展的时代进程中,起初的消防设施不能广泛应用于各个大型场所。
因此才不断追求灵敏度高、规模小型化、高可靠性、技术智能化的系统。
网络化、智能化、多样化、小型化、社区化是目前各个国家需要攻克的研究课题。
为此,研究力度仍需不断加大。
2温度采集报警系统原理说明
由于采用温度传感器DS18B20与AT89S51单片机相结合的测温方式,因此要对两者有一个简单的了解,下面就其基本性能做下说明。
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型的具有单总线接口的智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字读数方式。
DS18B20的性能如下。
(1)单总线接口,仅需要一个引脚与单片机进行通信。
(2)多个DS18B20均可挂在单总线上,实现多点测温功能。
(3)可通过数据线供电,电压范围为3.0V~5.5V。
(4)温度以9或12位的数字读数方式。
(5)用户可定义报警设置。
(6)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。
(7)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(8)DS18B20采用3引脚PR-35封装或8引脚SOIC封装。
AT89S51单片机的片内硬件组成结构如图1所示。
它把那些作为控制应用所必需的基本外围部件都集成在一个集成电路芯片上。
它具有如下外围部件及特性:
(1)8位微处理器(CPU);
(2)数据存储器(128BRAM);
(3)程序存储器(4KBFlashROM);
(4)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);
(5)1个全双工的异步串行口;
(6)2个可编程的16位定时器/计数器;
图1AT89S51单片机片内结构
(7)1个看门狗定时器;
(8)中断系统具有5个中断源、5个中断向量;
(9)特殊功能寄存器(SFR)26个;
(10)低功耗模式有空闲模式和掉电模式,且具有掉电模式
下的中断恢复模式;
(11)3个程序加密锁定位;
与AT89C51比,AT89S51更突出的优点:
(1)增加在线可编程功能ISP(InSystemProgram),字节和页编程,现场程序调试和修改更加方便灵活;
(2)数据指针增加到两个,方便了对片外RAM的访问过程;
(3)增加了看门狗定时器,提高了系统的抗干扰能力;
(4)增加断电标志;
(5)增加掉电状态下的中断恢复模式;
片内的各功能部件通过片内单一总线连接而成(见图1),基本结构依旧是CPU加上外围芯片的传统微机结构。
CPU对各种功能部件的控制是采用特殊功能寄存器(SFR,SpecialFunctionRegister)的集中控制方式。
单片机通过模拟口采集得到的传感器输出的电压,通过设置的参数电压就可以得到传感器的输入电压,再通过温度与电压转换等式就可以得到温度参数,将得到的温度参数进行分析后进行相应的处理,显示温度数据或者是驱动蜂鸣器报警,AT89S51芯片内集成了A/D转换通道,这样就可以直接将单片机的A/D输入通道与传感器的模拟电压输出通道相连接,系统可以通过键盘来完成对报警温度的上限和下限的设置,再通过显示电路将数据显示出来,当温度超过所设置的最大温度或最小温度时,系统通过驱动蜂鸣器进行报警。
因此采用AT89S51芯片与温度传感器DS18B20相结合的方式实现温度报警系统的研究。
3硬件设计
3.1总体方案设计
温度采集报警系统主要由电源电路、复位电路、键盘、温度采集电路、显示电路、报警电路、CPU处理(AT89S51)等组成,整个系统的原理框图如图2所示。
CPU处理
AT89S51
电源电路
复位电路
键盘
温度采集电路
报警电路
显示电路
图2:
系统电路的总体设计框图
3.2主要模块设计
3.2.1晶振电路
瓷片电容C1、C2是用来驱动晶振Y1的,因为晶振的大小是16M,所以选用30pF的电容,如下图3所示。
图3晶振电路
3.2.2复位电路
复位电路选用了30pF的电解电容和1K的电阻,如下图4所示。
图4复位电路
3.2.3按键操作电路
电路图如下图5所示:
图5按键操作电路
按键SET用来进行温度值的设置;BACK键用于返回上一层次的步骤;INC键用于调整数字的值,每按一次加一,数值加一;MOVE键用于显示屏上光标的移动。
3.2.4显示电路
显示采用16*4字符LCD,如下图6所示:
图6显示电路
3.2.5报警电路
采用蜂鸣器出声、发光二极管闪烁的方式进行报警。
如下图7所示:
图7报警电路
三极管NPN采用9013是作为蜂鸣器的驱动的作用的,R7、R8作为限流电阻使用。
3.2.6温度传感器选择
采用数字温度传感器DS18B20。
DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。
可直接与单片机通信,读取测温数据,电路简单。
DS18B20能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。
基于现有器件所限,温度采集模块采用DS18B20温度传感器效果更好。
3.2.7实现温度采集报警系统的整体流程图
图8温度采集报警系统整体流程图
4软件设计
在本设计系统中,要求达到的目的是在温度数值低于或超过设定的安全数值的情况下,系统自动报警的目的。
要实现现实社会中温度异常检测与报警预警之间的联系转换,就需要温度采集报警系统的全面应用。
温度采集报警系统的主要功能是实现微妙的温度伤害差距对于生产生活影响的减弱,通过单片机等设施及时的通告给人类,以便于我们采取有利的措施。
总之,该系统对于我们的生产生活有很大的影响。
4.1温度采集传感系统的任务
温度采集传感系统的任务就是运用温度传感器将超出或低于设定温度的温度状态报告给上一级,通过单片机的CPU处理系统,实现即时的报警预警,以减少国家及人民的财产安全。
4.2Proteus的界面实现
下图9为其基本界面:
图9Proteus界面
打开Proteus软件,将图中标号为P的小格选中,将会出现一个如下图10的界面。
在界面中的Keywords中输入要找的元器件,然后点击OK就会出现在图9中的界面中,按照此方法找到我们所需要的所有器件,之后在开始的界面中绘制所需原理图。
绘制好之后,将在KeilμVision4中生成的.hex文件导入到绘制好的原理图中。
最后,进行调试与检测。
图10元件快速查找界面
4.3在KeilμVision4平台下进行编程
如图11为KeilμVision4运行界面。
在编写一个新的应用程序前,一定先要建立项目。
下面首先介绍如何建立一个新的项目。
在编辑界面下,首先要建立一个点击“Project”菜单,选择下拉式菜单中的“NewProject”,弹出文件对话窗口,选择要保存的路径,在“文件名”中输入一个程序项目名称,保存后的文件扩展名为“.uv2”,这是KeilµVision4项目文件的扩展名,以后可直接点击此文件就可打开先前做的项目。
点击“保存”后,这是会弹出一个对话框,要求选择单片机的型号,用户可根据所使用的单片机来选择。
KeilµVision4支持几乎所有的51内核单片机。
然后编写第一个程序。
点击“File”菜单,单击“New”。
这时,用户可输入代码。
输入完毕,单击菜单上的“File”,在下拉菜单中单击“SaveAs”,在“文件名”栏的编辑框中,键入文件名,同时,必须键入正确的扩展名(.C或.ASM),然后,单击“保存”按钮。
上述工作完成后,还有有关项目的设置,程序的编译,链接,调试。
这些内容,可按照KeilµVision4开发环境的帮助功能。
5系统调试与实验
本设计完成了一个温度采集报警系统,系统的硬件组成主要有:
计算机,USB转串口,STC12系列单片机,驱动电路,传感器等。
本次系统的调试程序采用的是C语言进行编程的,经多次的实验以及调试,最终结果还是较好的,下图12为本次系统实验研究原理图。
图12系统原理图
通过改变温度,研究温度采集报警系统的情况如下:
图13—16
图13温度超过设定安全温度,灯闪烁蜂鸣器鸣响
图14温度恰在设定临界处,灯不闪蜂鸣器不响
图15温度低于设定安全温度,灯闪烁蜂鸣器鸣响
图16温度处于设定安全温度之间,灯不闪蜂鸣器不响
由以上调试分析,验证该温度采集报警系统符合设计要求。
6总结
这次的课程设计是我自己第一次设计的一个系统,前期的方案选取与材料的查找,原理图的绘制及调试,程序的编写和Proteus仿真等等,使我对之前的理论知识有了较好的巩固,同时也提高了自己的动手能力与实际学习能力,但是在学习中我也发现自己在理论知识方面存在很多不足,比如说,对单片机的中断控制系统的掌握还不够,和对LCD的菜单界面编程能力不足。
所以在今后,我将更加努力地学习,提高自己的专业水平和课程设计的能力,为以后更好的做相关的工作而积累经验。
7参考文献
[1]袁昌立.基于网络架构的智能火灾报警系统设计.微计算机信息,2007,1-1:
215-216.
[2]楼然苗,李光飞.51系列单片机设计实例[M].北京航空航天大学版社.
[3]孙焕铭,赵成会,王金.51单片机C程序应用实例详解[M].北京:
北京航空航天大学出版社,2011.
[4]胡汉才,单片机原理及其接口技术[M].北京:
清华大学出版社,1996.
[5]赵建领,弓雷.51系列单片机开发宝典2版[M].北京:
电子工业出版社,2012.
[6]李勇.一个多串口多线程数据采集系统软件的设计与实现.微计算机.
8附录
主程序:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineIOP0
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
voidcheck_busy(void);
voidwrite_cmd(ucharcom);
voidwrite_data(uchardat);
voidLCD_init(void);
voidwrite_str(ucharx,uchary,uchar*s);
voidlcd_test(void);
voiddelay(uint);
//1ms延时程序
voiddelay(uintj)
{
uchari;
for(;j>0;j--)
for(i=0;i<100;i++);
}
//查忙程序
voidcheck_busy(void)
{
uchardt;
do
{
dt=0xff;E=0;RS=0;
RW=1;
E=1;
dt=IO;
}while(dt&0x80);
E=0;
}
//写控制指令
voidwrite_cmd(ucharcom)
{
check_busy();
E=0;RS=0;RW=0;IO=com;
E=1;_nop_();E=0;
delay
(1);
}
//写数据指令
voidwrite_data(uchardat)
{
check_busy();
E=0;RS=1;RW=0;
IO=dat;E=1;_nop_();
E=0;delay
(1);
}
voidLCD_init(void)
{
write_cmd(0x38);//8位总线,双行显示,5X7的点阵字符
write_cmd(0x0C);//开整体显示,光标关,无黑块
write_cmd(0x06);//光标右移
write_cmd(0x01);//清屏
delay
(1);
}
voidset_xy(ucharx,uchary)
{
if(x==0)x=0x80+y;
if(x==1)x=0xc0+y;
if(x==2)x=0x94+y;
if(x==3)x=0xd4+y;
write_cmd(x);
}
voidwrite_str(ucharx,uchary,uchar*s)
{
set_xy(x,y);
while(*s)
{
write_data(*s);
s++;
}
}
unsignedcharReadOneChar(void);
voidWriteOneChar(uchardat);
voidReadTemp(void);
#ifndefDS18B20_H
#defineDS18B20_H
#defineuintunsignedint
#defineucharunsignedchar
sbitDQ=P1^7;//温度传送数据IO口
inttemp_value;//温度值
unsignedcharTemp[6];//存放温度的各个位的值
inttemp_dot;//温度小数部分
/*******ds18b20延时子函数(晶振12MHz***/
voiddelay_18B20(unsignedinti)
{
while(i--);
}
/**********ds18b20初始化函数************/
voidInit_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ复位
delay_18B20(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay_18B20(80);//精确延时大于480us
DQ=1;//拉高总线
delay_18B20(14);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay_18B20(20);
}
/***********ds18b20读一个字节**********/
unsignedcharReadOneChar(void)
{
uchari=0;
uchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
/*************ds18b20写一个字节********/
voidWriteOneChar(uchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay_18B20(5);
DQ=1;
dat>>=1;
}
}
/**************读取ds18b20当前温度******/
voidReadTemp(void)
{
unsignedchara=0;
unsignedcharb=0;
unsignedchart=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0x44);//启动温度转换
delay_18B20(100);//thismessageisweryimportant
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度
delay_18B20(100);
a=ReadOneChar();//读取温度值低位
b=ReadOneChar();//读取温度值高位
temp_value=b<<4;
temp_value+=(a&0xf0)>>4;//温度整数部分
temp_dot=a&0x0f;//温度小数部分
}
voidtemp_to_1602()//温度数据转换成液晶字符显示
{
ReadTemp();
Temp[0]=temp_value/10+'0';//十位
Temp[1]=temp_value%10+'0';//个位
Temp[2]='.';
Temp[3]=temp_dot*0.625+'0';
Temp[4]=0xdf;
Temp[5]='\0';
}
#endif
sbitKEY_SET=P1^0;
sbitKEY_BACK=P1^1;
sbitKEY_INC=P1^2;
sbitKEY_MOVE=P1^3;
sbitALART=P1^4;
sbitSHK=P1^5;
bitSET_FLAG=0;//SETflag,whenflag1isonSETmode
bitOVER_FLAG=0;
uchar;CURRENT_MENU=0;
ucharcodeMESSAGE[2][4]={"NO","YES"};
ucharcodeMENU1[]="*****Welcome******";
ucharcodeMENU2[]="****SETMODER****";
ucharcodeMENU3[2][20]={"**Setsucess!
**","Yousetisilleage"};
ucharcodeWARING[]="WARING:
";
ucharcodeTEM[]="TEMP:
";
ucharcodeSET[]="->SET";
ucharcodeBACK[]="->BACK";
ucharcodeHIGHS[]="HIGHT:
";
ucharcodeLOWS[]="LOW:
";
ucharHIGHT=40,LOW=10;
ucharmove,base;
uchardis_temp[6];
bitMENU_FLAG3;
voiddelay_100us(ucharx)
{
uchary;
while(x--)for(y=0;y<100;y++);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 采集 报警 系统 设计