目录

 家用安防系统


 

一、学习目的

1. 了解火焰传感器工作原理

2. 了解震动传感器工作原理

3. 了解人体红外传感器工作原理

4. 学会使用火焰传感器检测是否存在火焰

5. 学会使用震动传感器检测是否存在震动

6. 学会使用人体红外传感器检测人体活动

7. 会使用单片机通过串口与PC机通信

8. 会使用Java编程上位机串口通信程序

二、实验项目要求

请设计一个简易家庭安防系统,要求如下:

①将震动传感器安装在门上,检测是否有人敲门

②使用火焰传感器检测火焰

③使用人体红外传感器检测是否有人非法进入

④并将检测结果通过串口发送给上位机

⑤自己动手设计上位机串口通信程序,以图形化的方式展示上述检测参数。

请按要求设计一个可行方案,包括设备选型、系统连接图等,并编写程序实

 

 二、系统连接图要求

 

 基于51单片机的智能家用安防系统

 

代码实现;

//Main函数部分实现

#include <config.h>
#include <uart.h>
#include <1602.h>

sbit vibrate=P2^0; //震动传感器引脚
sbit vibrate1=P2^1; //震动传感器引脚
sbit vibrate2=P2^2; //震动传感器引脚
sbit beep=P2^3;	//蜂鸣器引脚
sbit flag=P3^3;
u8 print[20];
int num=0;
void delay_ms(u16 x)//毫秒延时函数
{u16 i;
 u8 j;
 for(i=0;i<x;i++)
    for(j=0;j<115;j++);
}

void delay_us(u8 t) //10倍微秒延时函数,延时10*t微秒
{u8 i;
 for(i=0;i<=t;i++);
}

void Alarm(float t) //蜂鸣器报警,持续t秒
{
 u8 i,j,k; 	
 for(j=0;j<t;j++)
 { for(i=0;i<200;i++)
      {beep=0;delay_us(50);beep=1;delay_us(50);}
   for(k=0;k<100;k++)
      {beep=0;delay_us(110);beep=1;delay_us(110);}
 }
}

void main()
{
			
			Init_COM();   //初始化
		EA=1;
		ET1=1;
		IT1=1;
			while(1)
			{
						 if(vibrate==1)
							{
								delay_ms(4000);	  //消抖动
								if(vibrate==1)	  //确认触发
								{
									delay_ms(2000);	  //消抖动
									if(vibrate==1)	  //确认触发
									{
										num++;
										sprintf(print,"hongwai: %d",num);Print_str_COM(print);delay_ms(800);//输出到串口
                    Alarm(5);//启动报警响5秒
									}
								}                 
						 }	
					 if(vibrate1==0)
							{
								delay_ms(5);	  //消抖动
								if(vibrate1==0)	  //确认触发
								{
									delay_ms(2);	  //消抖动
									if(vibrate1==0)	  //确认触发
									{
										 num++;
										 sprintf(print,"houyan: %d",num);Print_str_COM(print);delay_ms(800);//输出到串口
										 Alarm(5);//启动报警响5秒
										
									
									}
								}                 
						 }	
						 if(vibrate2==1)
							{
								delay_ms(15);	  //消抖动
								if(vibrate2==1)	  //确认触发
								{
									delay_ms(20);	  //消抖动
									if(vibrate2==1)	  //确认触发
									{
										 num++;
										 sprintf(print,"zhengdong: %d",num);Print_str_COM(print);delay_ms(800);//输出到串口
										 Alarm(5);//启动报警响5秒
										
									
									}
								}                 
						 }	
								
						 
			}
  }
void inter1() interrupt 2
{
 num++;
 sprintf(print,"hongwai: %d",num);Print_str_COM(print);delay_ms(800);//输出到串口
 Alarm(5);//启动报警响5秒
										
}
//串口实现代码模块:

#include <uart.h>

void Init_COM(void) //串口初始化 9600
{
	 TMOD = TMOD|0x20;
     PCON = 0x00;
     SCON = 0x50;
     TH1 = 0xFd;
     TL1 = 0xFd;
     TR1 = 1;
}

void Print_str_COM(u8 *str)//输出字符串到串口
{
	TI=1;
	printf("%s\n",str);
	while(!TI);
	TI=0;
}

 

相关文章:

  • 2021-04-03
  • 2021-12-12
  • 2021-06-04
  • 2022-01-19
  • 2021-04-18
  • 2021-07-05
  • 2021-09-27
  • 2021-04-11
猜你喜欢
  • 2021-09-17
  • 2021-08-05
  • 2021-07-06
  • 2021-10-03
  • 2021-05-27
  • 2021-11-10
  • 2021-08-28
相关资源
相似解决方案