室内外环境监测报警系统设计报告(1)14页_第1页
室内外环境监测报警系统设计报告(1)14页_第2页
室内外环境监测报警系统设计报告(1)14页_第3页
室内外环境监测报警系统设计报告(1)14页_第4页
室内外环境监测报警系统设计报告(1)14页_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、太原工业学院大学生科技创新室内外环境监测报警系统设计报告系 部 名 称: 电子工程系 项 目 名 称: 室内外环境监测报警系统 指 导 教 师: 陆 锋 申 请 者: 冯国栋 年 级 专 业: 11级电子信息工程 申 请 日 期: 2013年11月24日 联 系 电 话:一、 项目主要内容本项目将利用单片机与传感器等电子器件,设计一款实用方便的室内外环境监测报警系统。设计分为两个模块,室内模块和室外模块。室内模块主要功能是:测量室内温度和湿度、火灾监测报警、烟雾(或有害气体)监测报警;室外模块的主要功能是:测量室外温湿度。两个模块可以通过无线(采用ZigBee)连接,

2、单片机将收集的数据进行处理,将温度、湿度及室内外温差显示在LCD显示器上;当出现火情、有害气体泄漏时,蜂鸣器用不同频率的响声分别对各种情况进行预警。二、 项目主要创新1.设计的室内外环境监测报警系统灵巧、简便。2.将日常生活中需要的几种监测报警系统进行统一的整合。最主要的是设计了温湿检测、火灾监测、烟雾及有害气体监测报警。3.可以用我们设计的系统作为控制系统,外接风扇、水雾喷洒或换气系统。根据温度变化调节风扇、根据湿度喷洒水雾或根据空气质量开关换气系统。4.使用了ZigBee近距离无线组网通讯技术。三、 硬件电路设计硬件电路包括室内模块和室外模块。室内模块相当于协调器,使用了STM32和CC2

3、530两款芯片,主要用于检测室内温湿度并显示、监测火灾、有毒气体以及报警装置、接收室外温湿信息并显示、控制继电器等。室外模块相当与终端设备,使用CC2530芯片,主要用于检测室外或其他地方温湿参数,并把这些参数无线发射到室内模块进行显示。下面是主要的硬件设计。1. STM32核心板电路图2. CC2530核心板电路图3. 电源电路设计 ASM117-3.3是5V转3.3V芯片4. DS18B20电路设计5. DHT11电路设计 6. 火灾、烟雾监测电路设计 烟雾、有害气体监测使用MQ_2,利用红外接受二极管监测是否有火灾发生。LM393是一种低功率失调电压双比较器,它类似于增益不可调的运算放大

4、器。每个比较器有两个输入端和一个输出端,两个输入端一个称为同向输入端,一个称为反相输入端。在比较两个电压时,任意一个输入端加一个固定电压作参考电压,另一端加一个待比较信号电压。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

5、.h#include IR.h#include LED.h#include BUZZER.h#include KEY.h#include RELAY.h#include Display.hvoid Deal_With(u8,u8);void Deal_Temp(u8,u8);extern unsigned char TH, TL, RH, RL;extern unsigned char temp7;extern u8 RES;int main(void)u8 ts = 0;u8 fs = 1;u8 mq = 0;u8 ir = 0;u8 h_norm = H_TEMP;u8 l_norm =

6、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()

7、;ir = IR_Scan();ts = Key_Scan();switch(ts)case KVALUE1 : fs = Set_LCD(ts); break;case KVALUE2 : h_norm = Set_H_Param(ts,fs); break;case KVALUE3 : l_norm = Set_L_Param(ts,fs); break;case KVALUE4 : Reset_Instrument(ts); break;default : break;switch(fs)case 0 : break;case 1 : Display_Indoor(); break;ca

8、se 2 : Display_Outdoor_1(); break;case 3 : Display_Outdoor_2(); break;case 4 : 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_extern unsigned char Ds18b20Initial(void);extern void Temp_test(

9、void);extern void Temp_Conversion(void);extern unsigned char temp7;extern unsigned char tflag;#endif#include iocc2530.h#include OnBoard.h#define uint unsigned int #define uchar unsigned char#define Ds18b20Data P0_6 /温度传感器引脚#define ON 0x01 /读取成功返回0x00,失败返回0x01#define OFF 0x00uchar temperature2; /存放温度

10、数据uchar temp7;/存放分解的7个ASCII码温度数据 uchar tflag;void Ds18b20Delay(uint k);void Ds18b20InputInitial(void);/设置端口为输入void Ds18b20OutputInitial(void);/设置端口为输出uchar Ds18b20Initial(void);void Ds18b20Write(uchar infor);uchar Ds18b20Read(void);void Temp_test(void); /温度读取函数void Temp_Conversion(void);/时钟频率为32Mvoi

11、d Ds18b20Delay(uint k) /*uint i,j; for(i=0;ik;i+) for(j=0;j 8000)Flag_1 = OFF; Status = Ds18b20Data; Ds18b20OutputInitial();/P0_6设置为输出模式 Ds18b20Data = 1;/拉高总线 Ds18b20Delay(100); return Status;/主机往Ds18b20写数据void Ds18b20Write(uchar infor) uint i; Ds18b20OutputInitial();/P0_6设置为输出模式 /发送一个字节 for(i=0;i=

12、1;/移位 /主机从Ds18b20读数据uchar Ds18b20Read(void) uchar Value = 0x00; uint i; Ds18b20OutputInitial();/P0_6设置为输出模式 Ds18b20Data = 1;/总线拉高,准备读数据 Ds18b20Delay(10); for(i=0;i= 1; Ds18b20OutputInitial();/P0_6设置为输出模式 Ds18b20Data = 0;/拉低总线产生读信号 Ds18b20Delay(3); Ds18b20Data = 1;/释放总线准备读数据 Ds18b20Delay(3); Ds18b20I

13、nputInitial();/P0_6设置为输入模式 /等待读取数据 if(Ds18b20Data = 1) Value |= 0x80; Ds18b20Delay(15); return Value;void Temp_test(void) /温度读取函数 uchar V; Ds18b20Initial();/初始化 Ds18b20Write(0xcc);/逃过 ROM Ds18b20Write(0x44);/温度转换命令 Ds18b20Initial(); Ds18b20Write(0xcc);/逃过 ROM Ds18b20Write(0xbe);/读DS1820温度暂存器命令 tempe

14、rature0 = Ds18b20Read(); temperature1 = Ds18b20Read(); V = temperature1; V = 8; V = V | temperature0; if(V 0x0fff) tflag = 0; else tflag = 1; Ds18b20Initial();void Temp_Conversion(void) uchar temp_data_1,temp_data_2; uint TempDec; temp_data_1 = temperature1; temp_data_1 &= 0xf0;/取高4位 if (temp_data_1

15、 = 0xf0)/判断是正温度还是负温度读数 /负温度读数求补,取反加1,判断低8位是否有进位 if (temperature0=0) /有进位,高8位取反加1 temperature0 = temperature0+1; temperature1 = temperature1+1; else /没进位,高8位不加1 temperature0 = temperature0+1; temperature1 = temperature1; /取高字节低4位(温度读数高4位),注意此时是12位精度 temp_data_1 = temperature1 4; /组合成完整数据 temp_data_1

16、= temp_data_1 | temp_data_2; temp0 = temp_data_1/100+0x30;/取百位转换为ASCII码 temp1 = (temp_data_1%100)/10+0x30;/取十位转换为ASCII码 temp2 = (temp_data_1%100)%10+0x30;/取个位转换为ASCII码 temperature0 &= 0x0f;/取小数位转换为ASCII码 /625=0.0625*10000,表示小数部分,扩大1万倍,方便显示 TempDec = temperature0*625; temp3 = TempDec/1000+0x30;/取小数十分位转换为ASCII码 temp4 = (TempDec%1000)/100+0x30;/取小数百分位转换为ASCII码 temp5 = (TempDec%1000)%100)/10+0x30;/取小数千分位转换为ASCII码 temp6 = (TempDec%1000)%100)%10+0x30;/取小数万分位转换为ASCII码五、 项目总结1使用Altium Desicner软件,完成了基于STM32F103VBT6最小系统的核心电路板的设计、基于CC2530

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论