基于单片机家用防盗报警系统设计说明_第1页
基于单片机家用防盗报警系统设计说明_第2页
基于单片机家用防盗报警系统设计说明_第3页
基于单片机家用防盗报警系统设计说明_第4页
基于单片机家用防盗报警系统设计说明_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

./单片机大作业题目:基于单片机实现GSM短信的防火_防盗报警系统设计_____________组员:苗哲哲、王敬博、穆文远_______所属院:信息院____________专业:通信工程__________班级:1401_____________指导教师:秋菊___________基于单片机实现GSM短信的防火防盗报警系统设计摘要:介绍了一个基于单片机、GSM短信模块为核心的智能防火防盗报警系统,并从基本工作原理、电路的构成等进行了详细的阐述该系统采用主动式红外传感器和烟雾传感器进行检测,可以实现遇到有人入侵时,有火情出现有浓烟时及时灯光报警,并且以直观的中文短信的方式,将具体的情况反应到你的手机屏幕上,能确保你的家庭安全。该系统自动化程度高、适应能力强、电路设计可靠、一般家庭都能接受。现代报警系统由简单化、局部化逐步向着智能化、集成化的方向发展,为了克服传统防盗报警系统通信方式存在线路被切断或恶意占线的类似隐患或功耗很大等缺点,设计了一个基于单片机实现的GSM短信模块的家庭无线防火防盗报警系统。1总体方案设计本系统由单片机与GSM短信模块、红外烟雾传感器、声光报警模块等组成,针对火灾信号,烟雾传感器通过监测烟雾的浓度来实现火灾防,红外传感器主要用于防盗,当系统检测到危险信号时,自动实现声光报警并通过GSM模块,给预先设置好的用户发送短信,及时通知用户。关键词:单片机;红外传感器;数据采集;报警电路2硬件电路设计2.1微处理器电路微处理器采用的是8位高性能的单片机STC89C52RC,该型号处理器能与51系列单片机完全兼容,它具有比51系列的单片机更为强大的功能,它的抗干扰能力强以及性能稳定性高,可利用的资源比较丰富,8KB的flash存储容量,512B的RAM容量,时钟晶振可达80MHZ,性价比较高,可在高速低速应用场合下均可良好应用。2.2GSM模块电路连接GSM是globalsystemformobilecommunications的简写,意思是:全球移动通信系统。GSM系统有以下重要特点:防盗能力强,网络容量大,手机资源丰富,通话清晰,稳定性强不易受到干扰,信息灵敏,耗电量低,机卡分离等优点,所以先如今被广泛引用于世界上的各个国家。本设计采用的是西门子的TC35型GSM模块,GSM模块可以使用文字短信来实现远程的小批量数据传输,与单片机通过串口通信,波特率为96009600bps,通过SIM卡座来实现SIM卡的安装、应用。GSM模块的引脚接线图如图2所示。2.3传感器电路红外传感器对于防盗的红外感应器而言,本系统采用的是红外线对射传感器,对射红外传感器可适用于安装在门窗和一切需要设防的位置,其采用的多光束综合判断,当前方有障碍物遮挡其红外感应时,红外设备就被触发,极大的降低了传感器的误报现象;其次由于其安装在门窗等位置,可使用户夜间的正常活动不受到限制,这给用户提供了便捷的夜间布防的可能性。烟雾传感器<也可检测气体泄露>烟雾传感器就是通过监测烟雾的浓度来实现火灾防的。该设计采用的是MQ-2气体传感器,它采用的气敏材料是在二氧化锡<SnO2>。当传感器所处环境中存在可燃气体时,传感器的电导率将随空气中可燃气体浓度的增加而增大。由于SnO2在清洁空气中电导率较低,所以MQ-2气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。并且简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号,是一款适合多种应用的低成本传感器。2.4蜂鸣器声光报警当红外传感器感应到了有物体穿过或者烟雾传感器<气体泄漏传感器>感测到了有烟雾和有害气体浓度达到泄漏时,电路板上的显示灯就会亮起,并且蜂鸣器会发出声音,提示感应器发现异物,可提醒人们注意!2.5放大电路的设计如图5所示为最基本的放大电路,Vi是输入电压信号,Vo是输出放大的电压信号。图5放大电路图2.6时钟电路的设计XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片振荡器。石晶振荡和瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us[5]。如图6所示为时钟电路。图6时钟电路图2.7复位电路的设计复位方法一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET端持续给出2个机器周期的高电平时就可以完成复位操作[6]。例如使用晶振频率为12MHz时,则复位信号持续时间应不小于2us[7]。本设计采用的是外部手动按键复位电路。如图7示为复位电路。图7复位电路图2.8发光二极管报警电路的设计由4个发光二极管接上电阻后连上单片的RXD的引脚,外接VCC,当单片机的RXD引脚被置低电平后,发光二极管被点亮,起到报警作用[8]。图8所示为发光二极管报警电路。图8发光二极管报警电路图2.9声音报警电路的设计如下图所示,用一个Speaker和三极管、电阻接到单片机的TXD引脚上,构成声音报警电路,如图9示为声音报警电路。图9声音报警电路图2.10AT89C51单片机简单概述2.10.1AT89C51单片机的结构AT89C51单片机是美国Atmel公司生产低电压,高性能CMOS8位单片机,片含4kbytes的可反复擦写的只读程序存储器〔EPROM和128bytes的随机存取数据存储器<RAM>,器件采用Atmel公司的高密度、非易失性存取技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器〔CPU和Flash存储单元,功能强大[3]。AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。图2为AT89C51单片机的基本组成功能方块图。由图可见,在这一块芯片上,集成了一台微型计算机的主要组成部分,其中包括CPU、存储器、可编程I/O口、定时器/计数器、串行口等,各部分通过部总线相连。下面介绍几个主要部分。振荡器和时序OSC程序存储器4KBROM数据存储器256BRAM/SFR振荡器和时序OSC程序存储器4KBROM数据存储器256BRAM/SFR定时器/计数器2×16AT89C51CPU64KB总线扩展控制器可编程I/O可编程全双工串行口内中断图2AT89C51功能方块图2.10.2AT89C51管脚说明ATMEL公司的AT89C51是一种高效微控制器。采用40引脚双列直插封装形式。AT89C51单片机是高性能单片机,因为受引脚数目的限制,所以有不少引脚具有第二功能。VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址1时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入1后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流。P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3口管脚备选功能P3.0RXD〔串行输入口P3.1TXD〔串行输出口P3.2INT0〔外部中断0P3.3INT1〔外部中断1P3.4T0〔记时器0外部输入P3.5T1〔记时器1外部输入P3.6〔外部数据存储器写选通P3.7〔外部数据存储器读选通P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/:当访问外部存储器时,地址锁存允许端的输出电平用于锁存地址的地址字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。PSEN:外部程序存储器的选通信号端。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/VP:当保持低电平时,则在此期间外部程序存储器〔0000H-FFFFH,不管是否有部程序存储器。注意加密方式1时,将部锁定为RESET;当端保持高电平时,此间部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源。XTAL1:反向振荡放大器的输入及部时钟工作电路的输入。XTAL2:反向振荡器的输出,如采用外部时钟源驱动器件,应不接。3软件设计程序主要实现对家庭防火防盗的布防,启动后,火焰传感器和烟雾传感器开始工作,GSM模块和声光报警模块处于待命状态。程序流程图如图6所示。3.1.1主程序工作流程图按上述工作原理和硬件结构分析可知系统主程序工作流程图如下图10所示;系统初始化系统初始化声光报警结束检测外部有无信号输入声光报警是否持续10秒开始启动声光报警电路开始报警是否还有检测信号等待下次报警结束YNNYYN图10主程序工作流程图3.1.2本主程序实现的功能是:当单片机检测到外部热释电传感器送来的脉冲信号后,表示有人闯入监控区,从而经过单片机部程序处理后,驱动声光报警电路开始报警,报警持续10秒钟后自动停止报警,然后程序开始循环工作,检测是否还有下次触发信号,等待报警从而使报警器进入连续工作状态。同时,利用中断方式可以实现报警持续时间未到10秒时,用手工按键停止的声光报警的作用。手工按键停止报警中断服务程序工作流程图,如下图11所示;中断源发出中断申请中断源发出中断申请关中断、保护现场INTO端有输入信号关闭报警恢复现场、开中断中断返回图11中断服务程序工作流程图3.2软件仿真本设计通过利用Proteus仿真,将所编写的程序用Keil软件编译,所仿真原理图见附录C。本设计所要求达到的目标是在接收到红外传感器带来的低电平信号,可使图中的绿灯由暗变亮,红灯产生报警,可观察到红灯一闪一闪的。当报警结束后,绿灯亮起。4部分程序4.1温度传感器模块读取18B20的代码主要是遵循协议针对部寄存器进行操作,主要函数有1.DS18B20_init该函数在每次读取的时候使用,具体代码如下:/**///函数功能:初始化18B20//输入参数:无//输出参数:无//输入输出参数:无//返回值:无//创建日期:/**/voidDS18B20_init<void>{bitq;DS18B20_IO=1;//把总线拿高delay_uint<1>;//15usDS18B20_IO=0;//给复位脉冲delay_uint<80>;//750usDS18B20_IO=1;//把总线拿高等待delay_uint<10>;//110usq=DS18B20_IO;//读取18b20初始化信号delay_uint<20>;//200usDS18B20_IO=1;//把总线拿高释放总线}其中的延迟函数可以具体参考数据手册,满足一定围即可。2.DS18B20_write该函数往部寄存器写数据,当然写命令也是一样道理/**///函数功能:往18B20部写数据//输入参数:要写的数据//输出参数:无//输入输出参数:无//返回值:无//创建日期:/**/voidDS18B20_write<uchardat>{uchari;}for<i=0;i<8;i++>{//写数据是低位开始DS18B20_IO=0;//把总线拿低写时间隙开始DS18B20_IO=dat&0x01;//向18b20总线写数据了delay_uint<5>;//60usDS18B20_IO=1;//释放总线dat>>=1;}3.DS18B20_read/**///函数功能:从18B20读取一个字节数据//输入参数:无//输出参数:无//输入输出参数:无//返回值:读取到的一个字节//创建日期:/**/ucharDS18B20_read<void>{uchari,value;for<i=0;i<8;i++>{DS18B20_IO=0;//把总线拿低读时间隙开始value>>=1;//读数据是低位开始DS18B20_IO=1;//释放总线if<DS18B20_IO==1>//开始读写数据value|=0x80;delay_uint<5>;//60us读一个时间隙最少要保持60us的时间}returnvalue;}4.从18B20读取2个字节的温度数据/**///函数功能:从18B20读取两个字节的温度值//输入参数:无//输出参数:无//输入输出参数:无//返回值:读取到的温度数据//创建日期:/**/uintDS18B20_read_temperature<void>{uintvalue;ucharlow;DS18B20_init<>;//初始化18b20DS18B20_write<0xcc>;//跳过64位ROMDS18B20_write<0x44>;//启动一次温度转换命令delay_uint<50>;//500usDS18B20_init<>;//初始化18b20DS18B20_write<0xcc>;//跳过64位ROMDS18B20_write<0xbe>;//发出读取暂存器命令EA=0;low=DS18B20_read<>;//读温度低字节value=DS18B20_read<>;//读温度高字节EA=1;value<<=8;//把温度的高位左移8位value|=low;//把读出的温度低位放到value的低八位中value*=0.0625;//转换到温度值小数returnvalue;//返回读出的温度带小数}4.2烟雾浓度检测模块该模块的实际容就是读取ADC0832的数据unsignedcharADC0832_read<bitSGL,bitODD>{unsignedchari=0,value=0,value1=0;SCL=0;DO=1;CS=0;//开始SCL=1;//第一个上升沿SCL=0;DO=SGL;SCL=1;//第二个上升沿SCL=0;DO=ODD;SCL=1;//第三个上升沿SCL=0;//第三个下降沿DO=1;for<i=0;i<8;i++>{SCL=1;SCL=0;//开始从第四个下降沿接收数据value<<=1;if<DO>value++;}for<i=0;i<8;i++>{//接收校验数据value1>>=1;if<DO>value1+=0x80;SCL=1;SCL=0;}CS=1;SCL=1;if<value==value1>//与校验数据比较,正确就返回数据,否则返回0returnvalue;return0;}4.3红外热释电就是单个bit的读取,这个是单片机的基本操作,不再赘述4.4TC35短信模块操作就是针对串口的操作,具体参考TC35的使用手册,按照手册的要求发送数据到串口,就能实现。例如要求TC35模块发送报警信息到指定手机的程序如下:voidsend_alarm_msg<uchar*p>{chang_phone<TC_PUD_4,p>;//交换要是字符的TC_send<TC_MSXZ_0,sizeof<TC_MSXZ_0>-1>;delay_1ms<300>;send_uart0_dat<TC_CMGS,sizeof<TC_CMGS>-1>;TC_send<TC_CMGS_NUM_ydyz,sizeof<TC_CMGS_NUM_ydyz>-1>;//发总长度delay_1ms<300>;send_uart0_dat<"00",2>;//前面在加两个"00"send_uart0_dat<TC_PUD_3,sizeof<TC_PUD_3>-1>;send_uart0_dat<TC_PUD_4,sizeof<TC_PUD_4>-1>;//对方手机号send_uart0_dat<TC_PUD_5,sizeof<TC_PUD_5>-1>;send_uart0_dat<TC_PUD_6_long_ydyz,sizeof<TC_PUD_6_long_ydyz>-1>;//信息长度send_uart0_dat<TC_PUD_7_ydyz,sizeof<TC_PUD_7_ydyz>-1>;//信息容delay_1ms<300>;send_uart<0x1A>;send_uart<0x0D>;send_uart<0x0A>;flag_gsm_text=1;//设置为TEXT模式使能}4.5LCD1602该模块主要实现往1602液晶控制器发送命令和发送数据函数,代码如下:voidLCD1602write_<uchar>{e=0;rs=0;rw=0;P0=;delay_uint<3>;e=1;delay_uint<25>;e=0;}voidLCD1602write_data<uchardat>{e=0;rs=1;rw=0;P0=dat;delay_uint<3>;e=1;delay_uint<25>;e=0;}4.6EEPROM由于是置的EEPROM,操作上与外接的有很大不同,STC的操作如下:unsignedcharbyte_read<unsignedintbyte_addr>{EA=0;ISP_ADDRH=<unsignedchar><byte_addr>>8>;/*地址赋值*/ISP_ADDRL=<unsignedchar><byte_addr&0x00ff>;ISP_CMD=ISP_CMD&0xf8;/*清除低3位*/ISP_CMD=ISP_CMD|RdCommand;/*写入读命令*/ISPgoon<>;/*触发执行*/ISP_IAP_disable<>;/*关闭ISP,IAP功能*/EA=1;return<ISP_DATA>;/*返回读到的数据*/}voidbyte_write<unsignedintbyte_addr,unsignedcharoriginal_data>{EA=0;//SectorErase<byte_addr>;ISP_ADDRH=<unsignedchar><byte_addr>>8>;/*取地址*/ISP_ADDRL=<unsignedchar><byte_addr&0x00ff>;ISP_CMD=ISP_CMD&0xf8;/*清低3位*/ISP_CMD=ISP_CMD|PrgCommand;/*写命令2*/ISP_DATA=original_data;/*写入数据准备*/ISPgoon<>;/*触发执行*/ISP_IAP_disable<>;/*关闭IAP功能*/EA=1;}4.7矩阵键盘扫描voidkey_scan<void>{staticucharkey_new=0,key_l;key_can=20;//按键值还原P1=0x0f;if<<P1&0x0f>!=0x0f>//按键按下{delay_1ms<1>;//按键消抖动if<<<P1&0x0f>!=0x0f>&&<key_new==1>>{//确认是按键按下key_new=0;key_l=<P1|0xf0>;//矩阵键盘扫描P1=key_l;switch<P1>{case0xee:key_can=1;break;//得到按键值case0xde:key_can=4;break;//得到按键值case0xbe:key_can=7;break;//得到按键值case0x7e:key_can=10;break;//得到按键值case0xed:key_can=2;break;//得到按键值case0xdd:key_can=5;break;//得到按键值case0xbd:key_can=8;break;//得到按键值case0x7d:key_can=0;break;//得到按键值case0xeb:key_can=3;break;//得到按键值case0xdb:key_can=6;break;//得到按键值case0xbb:key_can=9;break;//得到按键值case0x7b:key_can=11;break;//得到按键值case0xe7:key_can=15;break;//得到按键值case0xd7:key_can=14;break;//得到按键值case0xb7:key_can=13;break;//得到按键值case0x77:key_can=12;break;//得到按键值}//write_sfm2<1,0,key_can>;}}elsekey_new=1;}主程序#include<STC15F104E.H>#include"intrins.h"voi

温馨提示

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

评论

0/150

提交评论