标题: 单片机Led红外人体感应防盗报警程序 GSM 仿真C语言 [打印本页]

作者: wzfff    时间: 2024-4-22 22:53
标题: 单片机Led红外人体感应防盗报警程序 GSM 仿真C语言
程序
#include<reg51.h>        //加载头文件
#define uchar unsigned char //宏定义
#define uint  unsigned int
#define ulong unsigned long
sbit LED_BJ=P2^0;        //报警指示灯
sbit LED_PIR=P2^1;        //红外人体检测灯
sbit LED_BF=P2^2;        //布防指示灯
sbit PIR_IN=P2^7;        //热释电红外人体感应接口
sbit SPK=P1^7;                //蜂鸣器报警
sbit KEY_ALARM=P1^0;        //紧急报警按键
sbit KEY_BF=P1^1;                //布防按键
sbit KEY_QX=P1^2;                //取消报警/取消布防
bit alarm=1,kai=0;                //变量声明
uchar Mode=1,Mode1=0;
uchar code number[]="0123456789_";
uchar zh[]={1,3,4,1,1,1,1,1,1,1,1};        //设置缓冲
//uchar code at[]="AT\r";
uchar code TC_MSXZ[]={"AT+CMGF=1\r"};//        发送模式选择
uchar code TC_ZXH[]={"AT+CSCA=+8613801573500\r"};// 本地移动中心号
uchar code TC_FSNR[]={"danger\r"};
uchar code ath[]="ATH\r";//挂断电话
uchar code ata[]="ATA\r";//接听电话
uchar fa_flag=0;
void main()                //主函数
{
        P2=0xff;                                 //断开初始化
        Uart_Init();                        //串口初始化
        while(1)                                 //大循环
        {
                if(KEY_ALARM==0)        //紧急报警键
                {
                        Delay_MS(10);           //延时消抖
                        if(KEY_ALARM==0)        
                        {
                                while(!KEY_ALARM);         //等待按键松开
                                kai=0;
                                LED_BF=1;                //布防灯灭
                                alarm=0;                 //进入报警状态
                                Mode1=1;                 //Mode1置1:紧急报警过程中以防按了布防键取消紧急报警
                        }
                }
                if(Mode1==0)                         //未在紧急报警状态
                {
                        if(KEY_BF==0)                        //布防键
                        {
                                Delay_MS(10);           //延时消抖
                                if(KEY_BF==0)                //布防键
                                {
                                        while(!KEY_BF);        //等待按键松开
                                        LED_BJ=1;               
                                        LED_BF=0;        //布防灯亮
                                        Mode=0;                //布防状态标识
                                        kai=1;               
                                }
                        }
                        if(PIR_IN==0)          //检测红外模块有信号,绿灯亮,否则灭           
                                LED_PIR=0;
                        else                           //红外检测无人
                        {
                                LED_PIR=1;
                                fa_flag=0;
                        }
                }
                if(KEY_QX==0)                        //取消报警
                {                                
                        Delay_MS(10);                 //延时去抖动
                        if(KEY_QX==0)                                
                        {
                                while(!KEY_QX);        //等待按键松开
                                LED_BJ=1;
                                LED_BF=1;
                                Mode=1;
                                Mode1=0;
                                fa_flag=0;
                                alarm=1;
                                SPK=1;
                        }
                }               
                if((PIR_IN==0)&&(Mode==0))         //打开布防,且热释电人体感应到人
                        alarm=0;                                //开始进入报警
                else if(kai==1)                        //布防状态 未检测到人
                {
                        alarm=1;                                //非报警状态        
                        LED_BJ=1;                                  //报警灯不亮
                }
                if(alarm==0)                                //报警
                {
                        if(fa_flag==0)                        //未发送,变量为0
                        {
                                Send_Dat_Duoo();        //发送多数据        
                                Call_Phone();                 //打电话
                                fa_flag=1;                        //已发送,变量置1
                        }
                        Alarm_Spk_Led(50);                //蜂鸣器响
                        Delay_MS(100);                         //延时函数
                }
        }
}

51hei.png (90.27 KB, 下载次数: 46)

仿真图

仿真图





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1