版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上地下室火灾报警器学院:信息工程学院班级:13普本测控学号:姓名:目录专心-专注-专业地下室火灾报警器摘 要本设计是用于地下室的火灾报警,利用火灾发生时产生的剧烈光强,还有高温,进行感光感温报警。同时如果地下室存放的是一些温度敏感的物品,也可以通过设置进行温度过高/过低报警。用到的传感器主要有温度传感器DS18B20和光电传感器光敏电阻。关键词:DS18B20,光敏电阻,STC89C52,LCD16021、 绪论1.1 课题描述地下室常作为人们的杂物间使用,或者充当饭店的酒窖功能,里面经常摆放着很多易燃物品,由于地下室经常潮湿和经常飘散的灰尘会使普通的烟雾报警器误报1。
2、所以设计此种地下室火灾报警器。1.2 方案设计方案一:火灾发生的时候会有光亮,会使昏暗的地下室光强出现变化,故采用光敏电阻设计此报警器;方案二:火灾发生的时候会产生大量热量,会使阴冷的地下室温度变化,故采用温度传感器设计此报警器;方案三:由于火灾发生时产生光和热,同时采用光敏电阻和温度传感器级联设计此报警器。1.3 方案比较:方案一只采用光敏电阻,电路设计比较简单,但是如果地下室入口没有密封好,或者地下室开有透光窗,外界光强变化时,容易出现报警器误报;方案二采用温度传感器设计,电路上和方案三相当,但是如果地下室密封性好,地下室的一些容易发酵的酒水或者其他粮食蔬菜之类的发酵产生的大量热量,也会使
3、报警器出现误报;方案三综合光强变化和温度变化,电路设计上只比方案二多一个光敏传感器,但是却同时具备了光强和温度传感。如果地下室密封性好,温度升高的时候并没有光照变化,避免误报;如果地下室密封性不好或者开有透光窗,光强变化的时候,发酵产生的热量及时的散出地下室,报警器也不会误报。只有火灾时候瞬间产生高温不会及时散去,而且有大量光照,报警器才会工作。综合以上方案,故采用方案三。1.4 基本工作原理及框图1.4.1 工作原理:温度传感器测温,在lcd1602上实时显示温度。当温度超过设置的标准温度时,打开外部中断。如果没有中断,主程序继续检测温度报警开关K1是否打开,如果温度报警开关关闭,则程序返回
4、开始位置继续测温。如果温度报警开关打开,则出现提示音“地下室温度过高,请及时通风”。在温度过高时,同时出现了光照,光敏电阻阻值减小,电压拉低,则出现外部中断,提示音“地下室有火情”。1.4.2程序流程图:主程序:中断处理程序:1.4.3框图:按键1:设置报警温度+;按键2:设置报警温度-;按键3:设置每次加减的大小(1或者5);按键4:退出设置;开关1:打开/关闭温度报警;温度报警:用LED灯亮表示;火灾报警:用蜂鸣器响表示;2、 相关芯片、传感器及硬件电路设计2.1 STC89C52RC芯片STC89C52RC是STC公司生产的一款8051内核芯片,内部含有Flash EEPROM,为CMO
5、S产品,内部有8KB的程序存储空间,512B的RAM。因为本设计应用于火灾报警,因此要选用温度范围-40至+85的工业级产品。外部晶振最高可接入40MHz,双列直插式封装。需要为维持51单片机运行搭建最小系统,硬件连接如图。2.2 DS18B20 温度传感器使用DS18B20单线数字温度传感器具有以下优点:(1) 和微处理器连接时,仅需要一个I/O口就可实现。单总线具有经济性好、抗干扰能力强、使用方便等优点;(2) 测温范围宽,测量精度高:DS18B20测温范围为-55到+125;在-10至+85范围内,精度为±0.5。(3) 测量参数可配置:DS18B20测量分辨率可通过程序设定9
6、-12位。(4) DS18B20体积小、适用电压宽。DS18B20连接如图:测温电路实图:2.3 LCD1602字符型液晶LCD1602是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x11的点阵字符位组成,一共可显示2行,每行可显示16个字符,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。LCD1602的电路图如图液晶连接实物图:2.4 光敏电阻光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的一种电阻器,又称为光电导探测器,入射光强,电阻减小,入射光弱,电阻增大。光敏电阻部分的
7、电路如图:总电路图如图:总电路实图:3、 系统软件设计23.1温度传感器控制程序3.1.1头文件名“ds18b20.h”#ifndef _DS18B20_H_#define _DS18B20_H /定义ds18b20.h#include <reg52.h>#ifndef uchar#define uchar unsigned char#endif /定义uchar为类型unsigned char#ifndef uint#define uint unsigned int#endif /定义uint 为类型unsigned intsbit DSIO = P23; /将P23命名为DSI
8、Ovoid TempDelay1ms(); /声明一个延时1ms的函数void TempDelay100ms(); /声明一个延时100ms的函数uchar Ds18b20Init(); /声明DS18B20的初始化函数void Ds18b20WriteByte(uchar dat); /声明一个函数将一个8位的二进制数写入DS18B20uchar Ds18b20ReadByte(); /声明一个函数读取DS18B20的一个8位二进制数void Ds18b20ChangTemp(); /声明一个函数写入温度转换命令到DS18B20void Ds18b20ReadTempCom(); /声明一个
9、函数发送读取温度命令到DS18B20int Ds18b20ReadTemp(); /声明一个函数读取温度并返回#endif3.1.2源文件名“ds18b20.c”#include"ds18b20.h"void TempDelay1ms() uchar a,b,c; for(c=1;c>0;c-) for(b=142;b>0;b-) for(a=2;a>0;a-);void TempDelay100ms() uchar a,b,c; for(c=19;c>0;c-) for(b=20;b>0;b-) for(a=130;a>0;a-);uc
10、har Ds18b20Init()uint i;DSIO=0; /拉低总线i=70;while(i-); /延时DSIO=1; /释放总线while(DSIO)i+;if(i>5)return 0; /初始化失败 return 1; /初始化成功void Ds18b20WriteByte(uchar dat)uint i,j;for(j=0;j<8;j+)DSIO=0; /拉低总线i+; /延时DSIO=dat&0x01; /从最低位开始送数据到ds18b20i=6; while(i-); /延时DSIO=1; /释放总线dat>>=1; /数据移位,准备送下一
11、位uchar Ds18b20ReadByte()uchar byte,bi;uint i,j;for(j=8;j>0;j-)DSIO=0; /拉低总线i+; /延时DSIO=1; /释放总线i+;i+; /延时bi=DSIO; /读ds18b20传到总线的数据,从最低位开始byte=(byte>>1)|(bi<<7); /移位,准备读取下一位i=4;while(i-); /延时return byte; /返回读取到的数据void Ds18b20ChangTemp()Ds18b20Init(); /初始化TempDelay1ms(); /延时Ds18b20Write
12、Byte(0xcc); /跳过ROM操作Ds18b20WriteByte(0x44); /发送温度转换命令TempDelay100ms(); /延时void Ds18b20ReadTempCom()Ds18b20Init(); /初始化TempDelay1ms(); /延时Ds18b20WriteByte(0xcc); /跳过ROM操作Ds18b20WriteByte(0xbe); /发送读取温度命令int Ds18b20ReadTemp()uint temp=0;uchar tmh,tml;Ds18b20ChangTemp(); /发送温度转换命令Ds18b20ReadTempCom();
13、/发送读取温度命令tml=Ds18b20ReadByte(); /读取温度(共16位),先读低8位tmh=Ds18b20ReadByte(); /读取温度高8位temp=tmh;temp<<=8;temp|=tml; /将16位温度数据保存到16位变量tempreturn temp; /返回温度值3.2 液晶屏控制程序3.2.1头文件名“lcd1602.h”#ifndef _LCD1602_H_#define _LCD1602_H_ /定义lcd1602.h#include<reg51.h>#ifndef uchar#define uchar unsigned char
14、 /定义uchar为类型unsigned char#endif#ifndef uint#define uint unsigned int /定义uint 为类型unsigned int#endif#define GPIO_LCD P1 /定义GPIO_LCD替换P1,作为lcd1602的输入sbit RS=P20; /声明RS为I/O口P20sbit RW=P21; /声明RW为I/O口P21sbit E=P22; /声明E为I/O口P22void LcdDelay5ms(); /声明一个延时5ms的函数void LcdWriteCom(uchar com); /声明一个函数给lcd1602写
15、入命令void LcdWriteData(uchar dat); /声明一个函数给lcd1602写数据void LcdInit(); /声明一个函数lcd1602初始化#endif3.2.2源文件名“lcd1602.c”#include"lcd1602.h"void LcdDelay5ms() uchar a,b; for(b=19;b>0;b-) for(a=130;a>0;a-);void LcdWriteCom(uchar com)RS=0; /操作命令RW=0; /写操作E=0; /关闭使能GPIO_LCD=com; /命令送到P1口LcdDelay5m
16、s(); /延时(大于40ns)E=1; /开使能LcdDelay5ms(); /延时 (大于150ns)E=0; /写命令结束,关闭使能void LcdWriteData(uchar dat)RS=1; /操作数据RW=0; /写操作E=0; /关闭使能GPIO_LCD=dat; /将数据送到P1口LcdDelay5ms(); /延时(大于40ns)E=1; /开使能LcdDelay5ms(); /延时(大于150ns)E=0; /写数据结束,关闭使能void LcdInit()LcdWriteCom(0x38); /设置显示模式(8位总线,双行显示,5*7点阵字符)LcdWriteCom(
17、0x0c); /显示开关控制(整屏显示开,不显示光标)LcdWriteCom(0x06); /设置输入模式,读/写一个字符,地址指针加1,整屏显示不动LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /设置数据存储器地址(第一行第一位)3.3主程序 “main.c”#include <reg51.h>#include "lcd1602.h"#include "ds18b20.h"sbit Key1=P27;sbit Key2=P26;sbit Key3=P25;sbit Key4=P24;sbit K1=P30
18、;sbit LED=P36;sbit BZ=P37;int temp100;/*温度显示函数*/void TempDisplay(int temp)int a;uchar datas=0,0,0,0,0;float tp;a=temp;if(temp<0)LcdWriteCom(0x86);LcdWriteData('-');a-=1;a=a;tp=a;a=tp*0.0625*100+0.5;elseLcdWriteCom(0x86);LcdWriteData('+');tp=a;a=tp*0.0625*100+0.5;temp100=a;datas0=a
19、/10000;datas1=a%10000/1000;datas2=a%1000/100;datas3=a%100/10;datas4=a%10;LcdWriteCom(0x87);LcdWriteData(datas0+'0');LcdWriteData(datas1+'0');LcdWriteData(datas2+'0');LcdWriteData('.');LcdWriteData(datas3+'0');LcdWriteData(datas4+'0');void main()/*初始化*/
20、uchar i,step,set;uchar code st="STD:"uchar code wd="TEMP:"uchar code sp="STEP:"uchar sets=0,0,0;int temp;Ds18b20Init();Ds18b20ChangTemp();LED=0;BZ=0;LcdInit();EA=1;/中断允许EX0=0;/外部中断0关 set=24;/默认报警温度step=1;/默认每次加/减温度的步长P2|=0xf0;/按键IO写1,准备读取按键状态K1=1;/报警开关IO口写1,准备读取报警开关状态/*
21、进入报警温度设置,Key1(报警温度加),Key2(报警温度减),Key3(每次加/减d 步长1或者5),Key4退出设置,按复位键重新进入设置*/while(Key4)LcdWriteCom(0xc0);for(i=0;i<4;i+)LcdWriteData(sti);/显示字符stdLcdWriteCom(0xc8);for(i=0;i<5;i+)LcdWriteData(spi);/显示字符stepsets0=set/100;sets1=set%100/10;sets2=set%10;LcdWriteCom(0xc4);for(i=0;i<3;i+)LcdWriteDa
22、ta('_');/std的温度闪烁LcdDelay5ms();LcdWriteCom(0xc4);for(i=0;i<3;i+)LcdWriteData(setsi+'0');/显示std的设定温度LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdWriteCom(0xce);LcdWriteData(step+'0');/显示步长if(Key1=0)LcdDelay5ms();if(Key1=0)if(set<100)set+=step;else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (正式版)DB21∕T 3287-2020 《水质 丙烯醛的测定 高效液相色谱法》
- 物联网设备安装调试与故障排除预案
- 某纸业公司生产安全守则
- 电商销售责任保证承诺书8篇
- 农业现代化智慧农场灌溉管理系统手册
- 职员资料守秘及培训品质责任书(6篇)
- IT企业网络安全防护操作指南
- 亲子教育兴趣培养儿童发展指导书
- 家庭出行安全预案操作手册
- 压电石英晶体切割工安全管理评优考核试卷含答案
- 陕西省汉中市(2025年)纪委监委公开遴选公务员笔试试题及答案解析
- 2026江苏盐城市交通运输综合行政执法支队招录政府购买服务用工人员2人备考题库含答案详解(综合题)
- 2026重庆联合产权交易所集团股份有限公司招聘13人笔试备考题库及答案详解
- 2026年保安考证通关试卷附答案详解(考试直接用)
- 2026年嘉兴市秀洲区招聘社区工作者33人笔试参考试题及答案详解
- 儿童卡丁车安全培训内容
- 物联网技术在智慧城市建设中的实践优化研究
- 2026年基础教育智能图书馆管理系统创新分析报告
- 2026年中国化工经济技术发展中心招聘备考题库有答案详解
- 安全驾驶下车培训课件
- 多校区办学格局下的校园安全管理困境与突破-以台州学院为个案
评论
0/150
提交评论