资讯详情

基于51单片机的智能家居安防系统(程序+仿真+PCB)

@TOC在这里插入图片描述

一、基于51单片机的智能家居安全系统

1、主要功能

传感器蜂鸣器继电器模块模拟。

2、实验结果

3、实验仿真

4、程序源码

/** ************************************* Copyright ****************************** File name: // 文件名 Author£:Kevin Version: //1.0 Description: // 详细说明本文档完成的主要功能 Others: // Log: // 公众号:Kevin的学习站 ****************************************************************************** */  /** ************************************* Copyright ****************************** File name: // 文件名 Author:Kevin Version: //版本号:1.0 Description: // 详细说明程序文件完成的主要功能 Others: // 其它内容的说明 Log: // 公众号:Kevin的学习站 ****************************************************************************** */  #include<reg52.h> #include "adc0832.h" #include "delay.h" #include<intrins.h> #define uchar unsigned char #define uint unsigned int  sbit Inf=P2^0;  ///人体传感器 sbit relay=P2^1; //继电器 sbit beep=P2^2;  //蜂鸣器 bit fag=0; bit Light=0; uchar L,S; ///定义光强,烟雾 uint num,time;//定义计时参数   /****** ///系统初始化函数 **********/ void System_Init() { 
           Inf=0;   relay=1;   beep=1;   TMOD=0x10;////选择定时器1的方   TH1=(65536-45956)span class="token operator">/256;//11.030Mhz,定时大概50ms溢出,一个指令1.088us,需计数45956次
  TL1=(65536-45956)%256;
  EA=1;//中断申请
  TR1=0;//关闭定时器
  ET1=1;//打通中断
}

/****** //人体·感应控制 ******/
void Infare_RI()
{ 
        
  if((Inf==1)&&(Light==1))
  { 
        
   fag=1;
   TR1=1;//定时器
   time=20;//感应到人新时间,20s
  }
  if(Inf==1)
  { 
        
   time=20;//感应到人新时间,20s
  }
  if(fag==1)
  { 
        
    relay=0;
  }
  else
  { 
        

   TR1=0;
   relay=1;
  }
 
}
/*************** 光照强度和烟雾传感器数值读取 **************/
void light_S()
{ 
        
  //光照强度读取
  L=(ADC0832_read(0)*99)/255;
  // 烟雾数值读取
  S=(ADC0832_read(1)*99)/255;
  //光强小于35%进入等待人来开灯
  if(L<35)
  { 
        
   Light=1; 
  }
  if((L>60)&&(fag==0))//人不在光强大于60%就关灯
  { 
        
   Light=0;
   relay=1;
   fag=0;
   time=0;
   TR1=0;
  }
  //人在光强大于90%就关灯
   if((L>90)&&(fag==1))
  { 
        
   Light=0;
   relay=1;
   fag=0;
   time=0;
   TR1=0;
  }
  //烟雾浓度大于20%就报警
  if(S>20)
  { 
        
   beep=0;
   delay(500);
   beep=1;
   delay(500);
  }
  if(S<21)
  { 
        
   beep=1;
  }
}

//主函数
void main()
{ 
        
	//系统初始化
    System_Init();
   while(1)
   { 
         
     light_S();  //光强、烟雾
	 delay(100);  
     Infare_RI();//人体·感应
   }
}

//定时器50毫秒
void interr_zd1()interrupt 3
 { 
        
  TH1=(65536-45956)/256;
  TL1=(65536-45956)%256;
  num++;
  if((num==20)&&(time>0)){ 
        num=0;time--;}
  if(time==0){ 
        TR1=0;fag=0;}//感应人离开关闭继电器
 }

5、PCB工程

5、资源获取

标签: fag中轴力矩传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台