GSM模块的51单片机火灾烟雾报警器原理图与程序设计

目录

概要

原理图

部分代码

资料下载地址:GSM模块的51单片机火灾烟雾报警器原理图与程序设计

概要

本系统主要由单片机和GSM短信模块组成,借助最可靠、最成熟的GSM移动网络,
以最直观的中文短消息或电话形式,直接把报警地点的情况反映到您的手机屏幕上。   
  
(1)该设计包括硬件和软件设计两个部分。模块划分为数据采集、键盘控制、
报警等模块子函数。
  
(2)本震动防盗报警系统由震动传感器、报警器、单片机控制电路、LED控制
电路及相关的控制管理软件组成。用户终端完成信息采集、处理、数据传送、
功能设定、本地报警等功能。
  
(3)系统可实现功能。当人员外出时,可把报警系统设置在外出布防状态,探
测器工作起来,当有人闯入时,设置在监测点上的震动传感器变换成电信号,
经放大电路、比较电路送至门限开关,打开门限阀门送出TTL 电平至STC89C51
单片机,经单片机处理运算后驱动执行报警电路使警号发声。
  
(4)系统工作的稳定性和可靠性也是追求的重要指标。至于报警可采用声光信号。

原理图

GSM模块的51单片机火灾烟雾报警器原理图与程序设计_第1张图片

部分代码

void Uart_init()
{
        TMOD= 0X20;                //T1  方式2  ,8位   自动重装   
        TH1=0Xfd;
        TL1=0Xfd;            //9600
        TR1=1;                     // 定时器1启动  
        SM0=0;            // 设置串口的工作模式
        SM1=1;             //方式1

        REN=0;                  // 允许串口接收数据          

        ES=0;              // 串口中断应许
        EA=1;                 // 开启中断
}

void SendASC(uchar d)
{
       
        SBUF=d;
        while(!TI);

        TI=0;
}

void SendString(uchar *str)       
{
        while(*str)
        {
                SendASC(*str) ;
                str++;
                //delay_uart(1);
        }
}

void TIME()
{
        if(flag==0)
        {
                delay(50);
                TIME_50ms++;
                if(TIME_50ms%10==0)
                LED_B=!LED_B;
               
                if(TIME_50ms>=100)
                {
                        TIME_50ms=0;
                        flag_BF=1;
                        LED_B=0;
                        flag_time_start=0;
                        again=1;
                }       
        }
        else
        {
                delay(50);
                TIME_50ms++;
                if(TIME_50ms%10==0)
                {
                        LED_B=!LED_B;
                        if(flag_alam==1)
                        {
                               
                                if(flag_continue==0)
                                {
                                        flag_continue=1;
                                        time_continue=TIME_50ms;
                                }
                                BUZZ=!BUZZ;
                                LED_BJ=BUZZ;
                                if(TIME_50ms>=time_continue+100)
                                {
                                        BUZZ=1;
                                        LED_BJ=1;
                                        flag_continue=0;
                                        flag_alam=0;
                                        time_continue=0;
                                }       
                        }
                }
                if(TIME_50ms>=1200)
                {
                        LED_B=0;
                        TIME_50ms=0;
                        flag_time_start=0;
                        again=1;
                }
        }
}

//按键扫描函数
void keyscan()
{
        if(key1==0&&flag_BF==0)//布防
        {
                delay(5);//延时
                if(key1==0)
                {
                        LED_B=0;
                        flag=0;
                        flag_time_start=1;
                }
                while(key1==0);
        }
        if(flag_time_start==1)
        {
                TIME();
        }
        if(key2==0)
        {                          
                delay(5);//撤防
                if(key2==0)
                {
                        BUZZ=1;        //关闭蜂鸣器
                        LED_BJ=1;
                        flag_alam=0;
                        flag_BF=0;
                        flag=0;
                        flag_time_start=0;
                        LED_S=1;
                        LED_B=1;
                }
                while(key2==0);
        }
        if(key3==0)
        {
                delay(5);
                if(key3==0)
                {
                        SOS=1;
                        flag_alam=1;
                }
                while(key3==0);
        }
}

void GSM_work()
{
        if(rsd==0&&flag_BF==1)
        flag_alam=1;
/*        else
        BUZZ=1;         */
        if((rsd==0&&flag_BF==1&&again==1)||SOS==1)
        {
                LED_S=0;
                BUZZ=1;
                SendString("AT+CMGF=1\r\n");       
               
                delay(1000);
               
                SendString("AT+CSCS=\"UCS2\"\r\n");       
               
                delay(1000);
               
                SendString("AT+CSMP=17,0,2,25\r\n");       
               
                delay(1000);
               
                SendString("AT+CMGS=");        //信息发送指令 AT+CMGS=//
                SendASC('"');
                SendString(PhoneNO);   
                SendASC('"');
                SendASC('\r');                        //发送回车指令//
                SendASC('\n');                        //发送换行指令//
               
                delay(1000);

                SendString(somebody);
       
                delay(1000);
               
                SendASC(0x1a);
               
                if(SOS==0)
                {
                        again=0;
                        flag_time_start=1;
                        flag_alam=1;
                               
                }
                else if(SOS==1&&flag_time_start==1)
                {
                        TIME_50ms=0;
                        flag_BF=1;
                        LED_B=0;
                        flag_time_start=0;
                        again=1;
                }
               
                LED_S=1;
                SOS=0;
                flag=1;
        }
}       

你可能感兴趣的:(51单片机,51单片机,嵌入式硬件,单片机)