目录
【功能介绍】
本系统建立了一个基于GSM网络及短信息平台上的安防系统,设计中采用了STC89C52单片机系统、无线GSM短信模块及传感器技术。通过对主控模块、通信网络、传感器模块、短信模块及接口电路的控制。实现了系统的远程报警及控制功能,可以实现如下功能。
(1)该设计包括硬件和软件设计两个部分。模块划分为数据采集、单片机控制、GSM短信报警等模块子函数。
(2)系统可实现功能。当人员外出时,可把报警系统设置在外出状态,探测器开始工作,当有人闯入时,热释电红外传感器将探测到动作,并短信报警,向用户发送短信息实现远程防盗报警功能。
【原理图】
【PCB】
【实物图】
【元器件清单】
21-GSM防火防盗系统 | ||
名称 | 型号 | 数量 |
单片机 | STC89C52 | 1 |
IC座 | DIP40 | 1 |
万能板 | 9*15cm | 1 |
晶振 | 11.0592M | 1 |
电解电容 | 10uF | 1 |
电解电容 | 1000uf | 1 |
瓷片电容 | 22pF | 2 |
电阻 | 10K | 3 |
电阻 | 1K | 4 |
电阻 | 2K | 1 |
LED红 | 5MM | 1 |
LED绿 | 5MM | 1 |
蜂鸣器 | 有源 | 1 |
三极管 | S9012 | 1 |
按键 | 5 | |
显示屏 | LCD1602 | 1 |
排针 | 16P | 1 |
排母 | 16P | 1 |
人体红外模块 | HC-SR501 | 1 |
排母 | 3P | 1 |
温度传感器 | DS18B20 | 1 |
烟雾传感器 | MQ-2 | 1 |
模数转换器 | ADC0832 | 1 |
IC座 | 8P | 1 |
GSM模块 | SIM800c | 1 |
电源座 | 5MM | 1 |
电源线 | 5V2A | 1 |
自锁开关 | 1 | |
继电器 | 1 | |
小水泵 | 1 | |
导线 | 若干 | |
焊锡丝 | 若干 |
【源程序】
#include<reg52.h>
#include<intrins.h>
#include "sim800.h"
#define uchar unsigned char
#define uint unsigned int
#define K_MG_MV 120/66
typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */
typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */
unsigned char aa,bb,cc;
/********测试GSM是否启动**********/
int test_boot;
/********测试GSM是否注册网络**********/
int test_net_register;
/********GSM串口接收数据缓存**********/
unsigned char idata GSM_receive[60];
/********GSM串口接收计数器**********/
unsigned char GSMDATA_count;
unsigned char *content_fire = "Please note that! There are fire,no thief!\r\n"; //请注意!无盗贼,有火灾!
unsigned char *content_thief = "Please note that! There are thieves, no fire!\r\n"; //请注意!有盗贼,无火灾!
unsigned char *content_fire_thief = "Please note that! There are thieves, there are fires!\r\n"; //请注意!有盗贼,有火灾!
unsigned char str_yw[12];//烟雾值
unsigned char T_baojing = 30; //温度报警值
unsigned int C_baojing = 200; //烟雾浓度报警值
unsigned char T_buff[3]; //温度报警值显示缓存
unsigned char C_buff[4]; //烟雾报警值显示缓存
bit sdbj_flag=0; //手动报警标志
bit sf_flag=0; //设防标志
bit sf_flag_buff=0; //布放开始计时标志
unsigned char moshi=0;//设置模式
unsigned char data1; //AD转换中间值
long Value;// AD转换结果值
/*******引脚定义********************/
sbit Infra = P3^2; // 人体红外模块
sbit bADcs=P3^4; // 模数转换器引脚定义
sbit bADda=P3^5; // 模数转换器引脚定义
sbit bADcl=P3^6; // 模数转换器引脚定义
sbit baojing=P3^7; //手动报警
sbit BUZZER = P2^0; // LED蜂鸣器
sbit shuibeng = P2^1; //水泵
sbit fengshan = P2^2; //风扇
sbit sf_led = P1^3;// 设防指示灯
sbit shefang= P1^4;// 设防按键
sbit shezhi = P1^5; // 设置
sbit jia = P1^6; // 加
sbit jian = P1^7; // 减
unsigned char IntToString(unsigned char *str, int dat);
extern bit Start18B20();
extern bit Get18B20Temp(int *temp); // ;;;;;、‘
extern void InitLcd1602();
extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
float intT, decT; //温度值的整数和小数部分
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=(65536-1000)/256; //重新赋值 1ms
TL0=(65536-1000)%256;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
PT0=1; //优先级打开
}
long kssj() //开始收集
{
unsigned char i;
bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
bADcl=0;
bADda=1;
bADcl=1;
bADcl=0;//i down
bADda=1;
bADcl=1;
bADcl=0; // 2 down
bADda=0;
bADcl=1;
bADcl=0; // 3 down
bADda=1;
bADcl=1;
bADcl=0; // 4 down
for(i=8;i>0;i--)
{
data1<<=1;
bADcl=0;
bADcl=1;
if(bADda==1) data1|=0x01;
bADda=1;
}
bADcs=1;
Value=data1*1.0/256*500;
Value=Value*K_MG_MV;
Value=Value-5;
if(Value<0)Value=0;
return Value;
}
void Key_set_scan()
{
if(baojing==0)
{
Delay_Ms(10);
if(baojing==0)
{
while(!baojing);
sdbj_flag =~sdbj_flag;
}
}
if(shezhi==0)
{
Delay_Ms(10);
if(shezhi==0)
{
while(!shezhi);
InitLcd1602(); //初始化液晶
moshi++;
if(moshi >= 3)moshi = 0;
if(moshi == 0)
{
/*1234567890123456*/
LcdShowStr(0,0,"T: C S: PPM");
LcdShowStr(0,1," ");
}
else if(moshi == 1)
{
LcdShowStr(0,0," ");
LcdShowStr(0, 1,"Set_T: C");
}
else if(moshi == 2)
{
LcdShowStr(0,0," ");
LcdShowStr(0, 1,"Set_C: PPM");
}
}
}
if(jia==0)
{
Delay_Ms(10);
if(jia==0)
{
while(!jia);
if(moshi==1)
{
T_baojing++ ;
if( T_baojing>=99 )T_baojing =99;
}
if(moshi==2)
{
C_baojing++ ;
if( C_baojing>=999 )C_baojing =999;
}
}
}
if(jian == 0)
{
Delay_Ms(10);
if(jian == 0)
{
while(!jian);
if(moshi==1)
{
T_baojing-- ;
if( T_baojing<=0 )T_baojing =0;
}
if(moshi==2)
{
C_baojing-- ;
if( C_baojing<=0 )C_baojing =0;
}
}
}
if(shefang == 0)
{
Delay_Ms(10);
if(shefang == 0)
{
while(!shefang);
if(sf_flag == 0)
{
sf_flag_buff = 1;
sf_led = 0;
}
else if(sf_flag == 1)
{
sf_flag = 0;
sf_led = 1;
BUZZER = 1;
}
}
}
}
本文介绍了在设计的过程的关键点,供大家参考学习,如果有错误或者不明白的可以直接私信作者,或者添加微信biyezhan007。
其他资料
【原理介绍】
MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。MQ-2气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。这种传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。基本电路如图。
【参考文献】
[1]唐文彦. 传感器. 哈尔滨工业大学出版社, 2007. 15~16
[2]伊念东. 单片机基础实用教程. 中国地质大学出版社, 2005
[3]赵茂泰. 智能仪器原理及应用. 电子工业出版社,1999. 43~46
[4]吴政江. 单片机控制红外线防盗报警器. 锦州师范学院学报, 2001, 27(12): 55~59
[5]宋文绪. 传感器与检测技术. 高等教育出版社, 2004
[6]李全利. 单片机原理及接口技术. 北京航空航天大学出版社, 2004. 75~78
[7]薛均义. 张彦斌. MCS-51系列单片微型计算机及其应用. 西安交通大学出版社, 2005
[8]康华光. 电子技术基础(模拟部分). 高等教育出版社, 2004
[10]徐爱钧, 彭秀华. 单片机高级语言C51应用程序设计. 北京: 北京航空航天大学出版社, 2006. 97~99
[11]邓凯. 智能化住宅安防系统的应用. 冶金矿山设计与建设, 2000. 98~99
[12]赵晶. Prote199高级应用.北京: 人民邮电出版社, 2000. 101~103
[13]王振红,李洋.基于DTMF信号收发芯片MT8880的直接接口设计[M],电子与自动化,1999,5(2):23-56.
[14]刘波,韩宪中.MT8880在机房监控系统中的应用[J],河北省科学院学报,1999, 16(4):53-56.
[15]辛德强.X25045与8051的接口技术[J],电子技术应用,2002,4(12):20-22.
[16]石波,陈子春.用单片机实现语音提示、报警系统[J],煤矿自动化,2001,6 (5):43-44.
[17]潘桂忠,丁逸,纪兰花.微电脑自动拨号防盗报警器的设计[J],现代电于技术,2003,8 ( 1 ):67-69.
[18]李桂桦.家庭保安报警系统的设计[J],计算机应用,2000,6 (9):31-33.