基于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、讲解视频等。具体内容如下,全网最全! !

操作演示请观看前面演示视频!
点赞分享一起学习成长。