找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 110|回复: 0
打印 上一主题 下一主题
收起左侧

单片机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, 下载次数: 2)

仿真图

仿真图

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表