




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习调研报告 地下室火灾报警器学院:信息工程学院班级:13普本测控学号:姓名:目录摘 要1一、 绪论21.1 课题描述21.2 方案设计21.3 方案比较:21.4 基本工作原理及框图3二、 相关芯片、传感器及硬件电路设计42.1 STC89C52RC芯片42.2 DS18B20 温度传感器52.3 LCD1602字符型液晶62.4 光敏电阻7三、 系统软件设计293.1温度传感器控制程序93.2 液晶屏控制程序133.3主程序 “main.c”15四、 总结21五、 参考文献22第 21 页学习调研报告 地下室火灾报警器摘 要本设计是用于地下室的火灾报警,利用火灾发生时产生的剧烈光强,还有高温,进行感光感温报警。同时如果地下室存放的是一些温度敏感的物品,也可以通过设置进行温度过高/过低报警。用到的传感器主要有温度传感器DS18B20和光电传感器光敏电阻。关键词:DS18B20,光敏电阻,STC89C52,LCD16021、 绪论1.1 课题描述地下室常作为人们的杂物间使用,或者充当饭店的酒窖功能,里面经常摆放着很多易燃物品,由于地下室经常潮湿和经常飘散的灰尘会使普通的烟雾报警器误报1。所以设计此种地下室火灾报警器。1.2 方案设计方案一:火灾发生的时候会有光亮,会使昏暗的地下室光强出现变化,故采用光敏电阻设计此报警器;方案二:火灾发生的时候会产生大量热量,会使阴冷的地下室温度变化,故采用温度传感器设计此报警器;方案三:由于火灾发生时产生光和热,同时采用光敏电阻和温度传感器级联设计此报警器。1.3 方案比较:方案一只采用光敏电阻,电路设计比较简单,但是如果地下室入口没有密封好,或者地下室开有透光窗,外界光强变化时,容易出现报警器误报;方案二采用温度传感器设计,电路上和方案三相当,但是如果地下室密封性好,地下室的一些容易发酵的酒水或者其他粮食蔬菜之类的发酵产生的大量热量,也会使报警器出现误报;方案三综合光强变化和温度变化,电路设计上只比方案二多一个光敏传感器,但是却同时具备了光强和温度传感。如果地下室密封性好,温度升高的时候并没有光照变化,避免误报;如果地下室密封性不好或者开有透光窗,光强变化的时候,发酵产生的热量及时的散出地下室,报警器也不会误报。只有火灾时候瞬间产生高温不会及时散去,而且有大量光照,报警器才会工作。综合以上方案,故采用方案三。1.4 基本工作原理及框图1.4.1 工作原理:温度传感器测温,在lcd1602上实时显示温度。当温度超过设置的标准温度时,打开外部中断。如果没有中断,主程序继续检测温度报警开关K1是否打开,如果温度报警开关关闭,则程序返回开始位置继续测温。如果温度报警开关打开,则出现提示音“地下室温度过高,请及时通风”。在温度过高时,同时出现了光照,光敏电阻阻值减小,电压拉低,则出现外部中断,提示音“地下室有火情”。1.4.2程序流程图:主程序:中断处理程序:1.4.3框图:按键1:设置报警温度+;按键2:设置报警温度-;按键3:设置每次加减的大小(1或者5);按键4:退出设置;开关1:打开/关闭温度报警;温度报警:用LED灯亮表示;火灾报警:用蜂鸣器响表示;2、 相关芯片、传感器及硬件电路设计2.1 STC89C52RC芯片STC89C52RC是STC公司生产的一款8051内核芯片,内部含有Flash EEPROM,为CMOS产品,内部有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-12位。(4) DS18B20体积小、适用电压宽。DS18B20连接如图:测温电路实图:2.3 LCD1602字符型液晶LCD1602是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x11的点阵字符位组成,一共可显示2行,每行可显示16个字符,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。LCD1602的电路图如图液晶连接实物图:2.4 光敏电阻光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的一种电阻器,又称为光电导探测器,入射光强,电阻减小,入射光弱,电阻增大。光敏电阻部分的电路如图:总电路图如图:总电路实图:3、 系统软件设计23.1温度传感器控制程序3.1.1头文件名“ds18b20.h”#ifndef _DS18B20_H_#define _DS18B20_H /定义ds18b20.h#include #ifndef uchar#define uchar unsigned char#endif /定义uchar为类型unsigned char#ifndef uint#define uint unsigned int#endif /定义uint 为类型unsigned intsbit DSIO = P23; /将P23命名为DSIOvoid TempDelay1ms(); /声明一个延时1ms的函数void TempDelay100ms(); /声明一个延时100ms的函数uchar Ds18b20Init(); /声明DS18B20的初始化函数void Ds18b20WriteByte(uchar dat); /声明一个函数将一个8位的二进制数写入DS18B20uchar Ds18b20ReadByte(); /声明一个函数读取DS18B20的一个8位二进制数void Ds18b20ChangTemp(); /声明一个函数写入温度转换命令到DS18B20void Ds18b20ReadTempCom(); /声明一个函数发送读取温度命令到DS18B20int Ds18b20ReadTemp(); /声明一个函数读取温度并返回#endif3.1.2源文件名“ds18b20.c”#includeds18b20.hvoid TempDelay1ms() uchar a,b,c; for(c=1;c0;c-) for(b=142;b0;b-) for(a=2;a0;a-);void TempDelay100ms() uchar a,b,c; for(c=19;c0;c-) for(b=20;b0;b-) for(a=130;a0;a-);uchar Ds18b20Init()uint i;DSIO=0; /拉低总线i=70;while(i-); /延时DSIO=1; /释放总线while(DSIO)i+;if(i5)return 0; /初始化失败 return 1; /初始化成功void Ds18b20WriteByte(uchar dat)uint i,j;for(j=0;j=1; /数据移位,准备送下一位uchar Ds18b20ReadByte()uchar byte,bi;uint i,j;for(j=8;j0;j-)DSIO=0; /拉低总线i+; /延时DSIO=1; /释放总线i+;i+; /延时bi=DSIO; /读ds18b20传到总线的数据,从最低位开始byte=(byte1)|(bi7); /移位,准备读取下一位i=4;while(i-); /延时return byte; /返回读取到的数据void Ds18b20ChangTemp()Ds18b20Init(); /初始化TempDelay1ms(); /延时Ds18b20WriteByte(0xcc); /跳过ROM操作Ds18b20WriteByte(0x44); /发送温度转换命令TempDelay100ms(); /延时void Ds18b20ReadTempCom()Ds18b20Init(); /初始化TempDelay1ms(); /延时Ds18b20WriteByte(0xcc); /跳过ROM操作Ds18b20WriteByte(0xbe); /发送读取温度命令int Ds18b20ReadTemp()uint temp=0;uchar tmh,tml;Ds18b20ChangTemp(); /发送温度转换命令Ds18b20ReadTempCom(); /发送读取温度命令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#ifndef uchar#define uchar unsigned char /定义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写入命令void LcdWriteData(uchar dat); /声明一个函数给lcd1602写数据void LcdInit(); /声明一个函数lcd1602初始化#endif3.2.2源文件名“lcd1602.c”#includelcd1602.hvoid LcdDelay5ms() uchar a,b; for(b=19;b0;b-) for(a=130;a0;a-);void LcdWriteCom(uchar com)RS=0; /操作命令RW=0; /写操作E=0; /关闭使能GPIO_LCD=com; /命令送到P1口LcdDelay5ms(); /延时(大于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(0x0c); /显示开关控制(整屏显示开,不显示光标)LcdWriteCom(0x06); /设置输入模式,读/写一个字符,地址指针加1,整屏显示不动LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /设置数据存储器地址(第一行第一位)3.3主程序 “main.c”#include #include lcd1602.h#include ds18b20.hsbit Key1=P27;sbit Key2=P26;sbit Key3=P25;sbit Key4=P24;sbit K1=P30;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(temp0)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/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()/*初始化*/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,准备读取报警开关状态/*进入报警温度设置,Key1(报警温度加),Key2(报警温度减),Key3(每次加/减d 步长1或者5),Key4退出设置,按复位键重新进入设置*/while(Key4)LcdWriteCom(0xc0);for(i=0;i4;i+)LcdWriteData(sti);/显示字符stdLcdWriteCom(0xc8);for(i=0;i5;i+)LcdWriteData(spi);/显示字符stepsets0=set/100;sets1=set%100/10;sets2=set%10;LcdWriteCom(0xc4);for(i=0;i3;i+)LcdWriteData(_);/std的温度闪烁LcdDelay5ms();LcdWriteCom(0xc4);for(i=0;i3;i+)LcdWriteData(setsi+0);/显示std的设定温度LcdDelay5ms();LcdDelay5ms();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB61T 447.3-2023 林麝人工繁育规范 第3部分:麝香的采收与保存
- DB61T 324.2-2012 红枣育苗技术规程
- 江西省新干县第二中学2025年数学高三上期末联考模拟试题
- 苏轼《西江月》课件
- 禁毒知识培训学习课件
- 陕西省西安市莲湖区七十中2025-2026学年数学高三第一学期期末学业质量监测模拟试题
- 医务人员健康教育培训2讲课文档
- 章抗恶性肿瘤药讲课文档
- 高中政治试卷及答案
- 《机车总体及走行部》课件 项目二 任务3 机车机械室设备布置
- 【中信建投】信息技术-人工智能行业AI产品深度拆解(系列1)-可灵:头部AI视频产品
- 2025年中考化学一轮复习全册1-12单元22个必考实验大全(背诵+默写)含答案
- 水电站优化调度培训课件
- DBJ04T 447-2023 装配式农村住房建筑技术标准
- 2025年惠州市国资本投资集团限公司招聘29人高频重点提升(共500题)附带答案详解
- 信息系统监理师(中级)考试题库(含答案)
- 医院未来人才培养与引进策略
- 【MOOC】研究生学术规范与学术诚信-南京大学 中国大学慕课MOOC答案
- 宁德时代应聘笔试题库及答案
- 《西方艺术史》课程教学大纲
- 旅游公司与导游合作协议书
评论
0/150
提交评论