室内外环境监测报警系统设计报告.docx

上传人:b****3 文档编号:2592502 上传时间:2022-11-03 格式:DOCX 页数:14 大小:358.03KB
下载 相关 举报
室内外环境监测报警系统设计报告.docx_第1页
第1页 / 共14页
室内外环境监测报警系统设计报告.docx_第2页
第2页 / 共14页
室内外环境监测报警系统设计报告.docx_第3页
第3页 / 共14页
室内外环境监测报警系统设计报告.docx_第4页
第4页 / 共14页
室内外环境监测报警系统设计报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

室内外环境监测报警系统设计报告.docx

《室内外环境监测报警系统设计报告.docx》由会员分享,可在线阅读,更多相关《室内外环境监测报警系统设计报告.docx(14页珍藏版)》请在冰豆网上搜索。

室内外环境监测报警系统设计报告.docx

14

太原工业学院大学生科技创新

室内外环境监测报警系统

设计报告

系部名称:

电子工程系

项目名称:

室内外环境监测报警系统

指导教师:

陆锋

申请者:

冯国栋

年级专业:

11级电子信息工程

申请日期:

2013年11月24日

联系电话:

15388513926

一、项目主要内容

本项目将利用单片机与传感器等电子器件,设计一款实用方便的室内外环境监测报警系统。

设计分为两个模块,室内模块和室外模块。

室内模块主要功能是:

测量室内温度和湿度、火灾监测报警、烟雾(或有害气体)监测报警;室外模块的主要功能是:

测量室外温湿度。

两个模块可以通过无线(采用ZigBee)连接,单片机将收集的数据进行处理,将温度、湿度及室内外温差显示在LCD显示器上;当出现火情、有害气体泄漏时,蜂鸣器用不同频率的响声分别对各种情况进行预警。

二、项目主要创新

1.设计的室内外环境监测报警系统灵巧、简便。

2.将日常生活中需要的几种监测报警系统进行统一的整合。

最主要的是设计了温湿检测、火灾监测、烟雾及有害气体监测报警。

3.可以用我们设计的系统作为控制系统,外接风扇、水雾喷洒或换气系统。

根据温度变化调节风扇、根据湿度喷洒水雾或根据空气质量开关换气系统。

4.使用了ZigBee近距离无线组网通讯技术。

三、硬件电路设计

硬件电路包括室内模块和室外模块。

室内模块相当于协调器,使用了STM32和CC2530两款芯片,主要用于检测室内温湿度并显示、监测火灾、有毒气体以及报警装置、接收室外温湿信息并显示、控制继电器等。

室外模块相当与终端设备,使用CC2530芯片,主要用于检测室外或其他地方温湿参数,并把这些参数无线发射到室内模块进行显示。

下面是主要的硬件设计。

1.STM32核心板电路图

2.CC2530核心板电路图

3.电源电路设计

ASM117-3.3是5V转3.3V芯片

4.DS18B20电路设计

5.DHT11电路设计

6.火灾、烟雾监测电路设计

烟雾、有害气体监测使用MQ_2,利用红外接受二极管监测是否有火灾发生。

LM393是一种低功率失调电压双比较器,它类似于增益不可调的运算放大器。

每个比较器有两个输入端和一个输出端,两个输入端一个称为同向输入端,一个称为反相输入端。

在比较两个电压时,任意一个输入端加一个固定电压作参考电压,另一端加一个待比较信号电压。

7.LCD显示电路设计

8.继电器电路设计

9.按键电路

10.CC2530串口通信电路设计

四、部分软件设计

由于程序较长,这里提供部分程序。

1.STM32主程序部分

#include"stm32f10x.h"

#include"delay.h"

#include"sys.h"

#include"USART.h"

#include"LCD.h"

#include"DHT11.h"

#include"DS18B20.h"

#include"MQ_2.h"

#include"IR.h"

#include"LED.h"

#include"BUZZER.h"

#include"KEY.h"

#include"RELAY.h"

#include"Display.h"

voidDeal_With(u8,u8);

voidDeal_Temp(u8,u8);

externunsignedcharTH,TL,RH,RL;

externunsignedchartemp[7];

externu8RES;

intmain(void)

{

u8ts=0;

u8fs=1;

u8mq=0;

u8ir=0;

u8h_norm=H_TEMP;

u8l_norm=L_TEMP;

delay_init();

LED_Init();

Buzzer();

RELAY_Init();

IR_Init();

MQ_Init();

USART1_Configuration();

USARTx_NVIC_Configuration();

LCD_Init(0x38,0x0c,0x06,0x01);

DS18B20_WriteEEPROM();

Scan_Key_Configuration();

while

(1)

{

DHT11_ReadData();

DS18B20_ReadTemperature();

Temp_Conversion();

Slect_Model();

mq=MQ_Scan();

ir=IR_Scan();

ts=Key_Scan();

switch(ts)

{

caseKVALUE1:

fs=Set_LCD(ts);break;

caseKVALUE2:

h_norm=Set_H_Param(ts,fs);break;

caseKVALUE3:

l_norm=Set_L_Param(ts,fs);break;

caseKVALUE4:

Reset_Instrument(ts);break;

default:

break;

}

switch(fs)

{

case0:

break;

case1:

Display_Indoor();break;

case2:

Display_Outdoor_1();break;

case3:

Display_Outdoor_2();break;

case4:

Display_Set_Temp_Param(h_norm,l_norm);break;

default:

break;

}

Deal_With(mq,ir);

Deal_Temp(h_norm,l_norm);

}

}

2.CC2530监测温度程序

#ifndef__DS18B20_H__

#define__DS18B20_H__

externunsignedcharDs18b20Initial(void);

externvoidTemp_test(void);

externvoidTemp_Conversion(void);

externunsignedchartemp[7];

externunsignedchartflag;

#endif

#include"iocc2530.h"

#include"OnBoard.h"

#defineuintunsignedint

#defineucharunsignedchar

#defineDs18b20DataP0_6//温度传感器引脚

#defineON0x01//读取成功返回0x00,失败返回0x01

#defineOFF0x00

uchartemperature[2];//存放温度数据

uchartemp[7];//存放分解的7个ASCII码温度数据

uchartflag;

voidDs18b20Delay(uintk);

voidDs18b20InputInitial(void);//设置端口为输入

voidDs18b20OutputInitial(void);//设置端口为输出

ucharDs18b20Initial(void);

voidDs18b20Write(ucharinfor);

ucharDs18b20Read(void);

voidTemp_test(void);//温度读取函数

voidTemp_Conversion(void);

//时钟频率为32M

voidDs18b20Delay(uintk)

{

/*uinti,j;

for(i=0;i

for(j=0;j<2;j++);*/

MicroWait(k);

}

voidDs18b20InputInitial(void)//设置端口为输入

{

P0DIR&=0xbf;

}

voidDs18b20OutputInitial(void)//设置端口为输出

{

P0DIR|=0x40;

}

//ds18b20初始化

//初始化成功返回0x00,失败返回0x01

ucharDs18b20Initial(void)

{

ucharStatus=0x00;

uintCONT_1=0;

ucharFlag_1=ON;//读取是否成功的标志位

Ds18b20OutputInitial();//P0_6设置为输出模式

Ds18b20Data=1;//拉高总线

Ds18b20Delay(260);

Ds18b20Data=0;//拉低总线

Ds18b20Delay(750);

Ds18b20Data=1;//拉高总线

Ds18b20InputInitial();//P0_6设置为输入模式

while((Ds18b20Data!

=0)&&(Flag_1==ON))//等待ds18b20响应,具有防止超时功能

{//等待约60ms左右

CONT_1++;

Ds18b20Delay(10);

if(CONT_1>8000)Flag_1=OFF;

Status=Ds18b20Data;

}

Ds18b20OutputInitial();//P0_6设置为输出模式

Ds18b20Data=1;//拉高总线

Ds18b20Delay(100);

returnStatus;

}

//主机往Ds18b20写数据

voidDs18b20Write(ucharinfor)

{

uinti;

Ds18b20OutputInitial();//P0_6设置为输出模式

//发送一个字节

for(i=0;i<8;i++)

{

//发送一位

if((infor&0x01))

{

Ds18b20Data=0;

Ds18b20Delay(6);

Ds18b20Da

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

当前位置:首页 > 经管营销 > 财务管理

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

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