基于51单片机的红外人体感应报警器

基于51单片机的人体监测报警

(仿真+程序+原理图+PCB)

功能介绍

具体功能:

1.按下报警按钮会发生红LED+蜂鸣器声光报警;

2.若检测到人,黄LED打开;

3.按下布防按键,绿LED闪烁(大概30S后停止闪烁),进入布防状态;

4.布防后若检测到人,黄LED打开,同时发生声光报警;

5.报警后可按键取消报警;

​演示视频:

基于51单片机的红外人体感应报警器

程序

cs 复制代码
  #include <reg52.h>	         //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
#define uint  unsigned int	 //无符号整型 宏定义	变量范围0~65535
/***微信公众号:木子单片机****/
#define key_io P1  //定义按键P1口
uchar key_can;		//定义数据类型



sbit beep = P0^0;	   //蜂鸣器定义
sbit red  = P0^3;	   //红色发光二极管定义
sbit green = P0^5;	   //绿色发光二极管定义
sbit yellow = P2^5;	   //黄色发光二极管定义
//   红外热释电平时为0  有输出为1
sbit hw    = P2^0;	   //红外热释传感器定义
bit flag_300ms = 0;//延时标志位

/****************独立按键处理函数************************/	   
void key()
{
	static uchar key_new = 0,key_old = 0,key_value = 0;	//初始化
	if(key_new == 0)		 //按键松开
	{
		if((key_io & 0x07) == 0x07)	//选择扫描P1.0 P1.1 P1.2
			key_value ++;
		else 
			key_value = 0;
		if(key_value >= 5)	 //按键松开松手检测
		{
			key_value = 0;
			key_new = 1;	//按键松开后进入等待按键状态
		}
	}
	else 
	{
		if((key_io & 0x07) != 0x07)	 //按键按下
			key_value ++;
		else 
			key_value =0;
		if(key_value >= 5)	//按键按下消抖
		{
			key_value = 0;
			key_new = 0;	   //按键松开后进入等待松开按键状态
		}
	}
	key_can = 20;
	if((key_new == 0) && (key_old == 1))
	{
		switch(key_io & 0x07)
		{
			case 0x06: key_can = 1; break;	  //得到按键值 
			case 0x05: key_can = 2; break;	  //得到按键值 
			case 0x03: key_can = 3; break;	  //得到按键值 
		}
	}			 
	key_old = key_new;	 
}

/*************定时器0初始化程序***************/
void time_init()	  
{
	EA   = 1;	 	  //开总中断
	TMOD = 0X01;	  //定时器0工作方式1
	ET0  = 1;		  //开定时器0中断 
	TR0  = 1;		  //允许定时器0定时
}

uchar flag_alarm ;     //报警标志位
uchar flag_bufang ;    //布防标志位
uchar flag_bufang_en ; //布防标志位使能
uint  flag_value;      //用做定时器的变量

/******************红外报警处理**********************/	   
void hongwai_dis()
{
	if(flag_alarm == 1)	   //报警
	{
		red = ~red;		   //红灯报警
		beep = ~beep;	   //蜂鸣器报警
	}	
	if(flag_bufang_en == 1) //准备开始布防
	{
		green = ~green;	   //绿灯闪
			
	}  
	if(flag_bufang == 1)   //确认布防
	{
		green = 0;         //如果延时布防成功 绿灯长亮
		if(hw == 1)	       //红外有输出
		{
			flag_alarm = 1;	
		}
	}

}***//完整资料
**/***微信公众号:木子单片机****/
/******************对应不同按键处理**********************/	   
void key_with()
{
	if(key_can == 1)	 //按键紧急报警
	{
		flag_alarm = 1;  //报警标志位 ; 		
	}
	if(key_can == 2)     //布防按键
	{
		flag_bufang_en = 1;		
	}
	if(key_can == 3)	 //取消报警  把变量清零
	{
		flag_alarm = 0;   
		flag_bufang = 0; 
		flag_bufang_en = 0;	
		flag_value = 0;	
		beep=1;
		red=1;
		green=1;
		P2 = 0xff;      
	}			
}

硬件设计

使用元器件:

单片机:STC89C52;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

电容:10uF、30P;

3MM 发光二极管 红;

5MM 发光二极管 红、绿、黄;

红外热释电接口;DC电源座子;

9012三极管;微动开关;

电阻:1k、10K、2K;

有源蜂鸣器;电源开关;

晶振:12M;

导线:若干;

添加图片注释,不超过 140 字(可选)

结构框图:

设计资料

01仿真图

本设计使用proteus7.8和proteus8.9两个版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02原理图

本系统原理图采用Altium Designer19设计,具体如图!

添加图片注释,不超过 140 字(可选)

03程序

本设计使用软件keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

04设计报告

六千字参考报告,仅供参考,具体如下!

添加图片注释,不超过 140 字(可选)

05设计资料

资料获取请看前面演示视频,全部资料包括仿真源文件 、AD原理图、程序(含注释)、PCB、设计任务书、开题报告、实物图、元件清单、答辩PPT、讲解视频等。具体内容如下,全网最全! !

操作演示请观看前面演示视频!

点赞分享一起学习成长。

相关推荐
2401_872990532 小时前
stm32 hal库 SPI使用(二)硬件SPI的HAL库函数调用
stm32·单片机·嵌入式硬件
Sheep Shaun2 小时前
C++类与对象—下:夯实面向对象编程的阶梯
c语言·开发语言·数据结构·c++·算法
憧憬一下3 小时前
stm32之TIM定时中断详解
stm32·单片机·嵌入式·定时器
10000hours3 小时前
【C语言编译】编译原理和详细过程
linux·c语言·笔记
梁下轻语的秋缘6 小时前
每日c/c++题 备战蓝桥杯(P1886 滑动窗口 /【模板】单调队列)
c语言·c++·蓝桥杯
技术干货贩卖机7 小时前
0基础 | STM32 | STM32F103C8T6开发板 | 项目开发
stm32·单片机·嵌入式硬件·源代码·项目开发·0基础
JANYI20187 小时前
Linux 常用指令详解
linux·c语言·网络
Leon_George8 小时前
GPIO引脚的上拉下拉以及转换速度到底怎么选
单片机·嵌入式硬件·引脚配置·上拉下拉·引脚速度
2401_888859718 小时前
STM32 USART串口
stm32·嵌入式硬件