单片机+人体红外感应的防盗系统设计(仿真+源码+PCB文件+报告)

发布于:2025-02-11 ⋅ 阅读:(87) ⋅ 点赞:(0)

资料下载地址:单片机+人体红外感应的防盗系统设计(仿真+源码+PCB文件+报告)

1、功能介绍

(1)该设计包括硬件和软件设计两个部分。 (2)本红外线防盗报警系统由热释电红外传感器、报警器、单片机控制电路、LED控制电路及相关的控制管理软件组成。用户终端完成信息采集、处理、数据传送、功能设定、本地报警等功能。 (3)系统可实现功能。探测器工作时,当有人闯入时,热释电红外传感器将探测到动作,设置在监测点上的红外探头将人体辐射的红外光谱变换成电信号,经放大电路、比较电路送至门限开关,打开门限阀门送出TTL 电平至STC89C52单片机,经单片机处理运算后驱动执行报警电路使警号发声。 (4)红外线具有隐蔽性,在露天防护的地方设计一束红外线可以方便地检测到是否有人出入。此类装置设计的要点:其一是能有效判断是否有人员进入;其二是尽可能大地增加防护范围。当然,系统工作的稳定性和可靠性也是追求的重要指标。至于报警可采蜂鸣器报警。

2、原理图 

3、实物图

 4、仿真图

5、程序

void main()//主函数
{      
                 huang=0;//初始黄灯亮
                 lv=0;//初始绿灯亮
                 hong=0;//初始红灯亮
                 timer1init();//初始化定时器
                 while(1)
                 {
                  
            if(!baojing)//如果直接报警键被按下
                                {
                                        delay(5);//延时消抖
                                        if(!baojing)//判断报警键是不是被按下
                                        {
                                          hong=1;//红灯亮
                                          lv=0;        //绿灯灭
                                          flag=7;//标志位等于7
                                          butter=0;//蜂鸣器响
                                          EA=0;//关中断
                                        }
                                        while(!baojing);//判断按键是不是弹开
                                        delay(5);//如果弹开延时消抖
                                        while(!baojing);//弹开后跳出程序
                                }            
             if((!bufang)&&(flag<4))//在初始状态和按下取消键后可以进去这个函数
                                {
                                        delay(5);//延时消抖
                                        if(!bufang)//如果布防被按下
                                        {
                                           EA=1;   //开定时器
                                           flag=2;//另=2
                                        }
                                        while(!bufang);//布防键是不是弹开
                                        delay(5);//延时
                                        while(!bufang);//布防键弹开
                                }
                        if(!quxiao)//如果取消键按下
                                {
                                        delay(5);//延时消抖
                                        if(!quxiao)//取消键是不是按下
                                        {   
                                          flag=3;//FLAG等于3
                                          butter=1;//蜂鸣器不响
                                          tt=0;//
                                          num=0;//定时初始0
                                          EA=0;//关中断
                                          lv=0;//绿灯灭
                                          hong=0;//红灯灭
                                        }
                                        while(!quxiao);//取消按键抬开
                                        delay(5);//延时消抖
                                        while(!quxiao);//如果弹开跳出

                                }
                    if(flag==4)//如果布防时间到
                          {
                           tt=0;//清计数为0
                           EA=0;//关中断
                           num=0;//记的秒数清零
                           lv=1;//关绿灯
                           flag=5;//flag等于5

                          }        
                        if(hongwai)//如果感应到人黄灯亮
                           huang=1;
                        else  huang=0;//感应不到人黄灯灭

                        if(flag==5)//如果flag等于5
                           {
                             if(hongwai)//如果感应到人
                                   {
                                    butter=0;//蜂鸣器响
                                    EA=1;//开中断
                                    }
                           }
                                 
                 }
}

void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        tt++;
        if(tt==10)
          {tt=0; num++;}
        if((flag==5)&&(num%2==0))//布防15秒后会让flag=5 ,num为偶数灯亮
            hong=1;
        if((flag==5)&&(num%2==1))//布防15秒后会让flag=5 ,num为奇数灯灭
            hong=0;
        if((flag==2)&&(num%2==0))//按键布防键后flag等于2,num为偶数灯亮
              lv=1;
        if((flag==2)&&(num%2==1)) // 按键布防键后flag等于2,num为奇数灯灭
              lv=0;
        if((flag==2)&&(num==30))//布防时间,num=30即15秒,可以更改此实现布防延迟时间
           flag=4;

           
}

6、资料清单


网站公告

今日签到

点亮在社区的每一天
去签到