基于单片机的红外报警系统设计
基本要求:通过红外传感器探测可疑入侵,通过声光报警。
创新:能够区分人和动物 。
任务区分:A——通过播放蜂鸣声音报警。
B——通过灯光闪烁报警。
程序代码
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Mode=1,Mode1=0;
uchar t;
sbit s1=P1^0;
sbit s2=P1^2;
sbit s3=P1^1;
bit alarm=1,kai=1;
sbit LR=P2^0;//ºìµÆ±¨¾¯µÆ
sbit LY=P2^2;//²¼·ÀµÆ
sbit LG=P2^1;//ºìÍâÐźżì²âµÆ
sbit Feng=P1^3;//·äÃùÆ÷±¨¾¯
sbit HR=P0^3;//ºìÍâÄ£¿é½ÓÈë¶Ë¿Ú
void delay(uint x) //ºÁÃ뼶ÑÓʱº¯Êý
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void di()
{
LR=0;//·äÃùÆ÷±¨¾¯£¬ºìµÆ¸úËæÉÁ˸
Feng=0;
delay(80);
LR=1;
Feng=1;
delay(200);
}
void main()
{
LR=1;//³õʼ»¯Èý¸öµÆ¶¼ÊÇÃð
LG=1;
LY=1;
delay(5);
while(1)
{
if(s1==0) //½ô¼±ÊÖ¶¯±¨¾¯
{
delay(5); //ÑÓʱÏû¶¶
if(s1==0)
{
delay(5);
while(!s1);
kai=0;
LY=1;
LG=1;
alarm=0; //½øÈ뱨¾¯×´Ì¬
Mode1=1; //Mode1ÖÃ1£º½ô¼±±¨¾¯¹ý³ÌÖÐÒÔ·À°´Á˲¼·À¼üÈ¡Ïû½ô¼±±¨¾¯
delay(5);
}
}
if(s3==0) //È¡Ïû±¨¾¯
{
delay(5);
if(s3==0)
{
delay(5);
while(!s3);
LR=1;
LY=1;
Mode=1;
Mode1=0;
alarm=1;
delay(5);
}
}
if(s2==0) //²¼·À
{
if(Mode1==1) //ÅжÏMode1µÄ״̬£¬Èç¹ûÊǽô¼±±¨¾¯×´Ì¬¾Í±£³Ö£¬·ñÔò½øÈë²¼·ÀÉèÖÃ
{
alarm=0;
}
else
{
for(t=0;t<200;t++)
{
LY=~LY;
delay(200);
}
LR=1;
LY=0;
Mode=0; //²¼·À״̬±êʶ
kai=1;
delay(5);
}
}
if(alarm==0)
{
di();
delay(100);
di();
delay(100);
}
if(HR==1&&Mode==0)
{
alarm=0;//¿ªÊ¼½øÈ뱨¾¯
}
else
{
if(kai)
{
alarm=1;
LR=1;
}
}
if(HR==1) //¼ì²âºìÍâÄ£¿éÓÐÐźţ¬Â̵ÆÁÁ,·ñÔòÃð
{
LG=0;
delay(200);
}
else
{
LG=1;
}
}
}
仿真程序图