全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等
资料下载:
通过网盘分享的文件:资料分享 链接: 百度网盘 请输入提取码 提取码: tgnu
目录
资料下载:
Proteus仿真功能
项目文件资料:
一、Proteus仿真源文件
二、AD原理图文件
二、报告说明书
三、系统流程图
四、Keil c语言程序源代码
项目功能:
基于51单片机红外热释电人体感应报警器操作说明 本设计系统是红外热释电人体感应报警器,当按下布防键30秒钟后(这30s是让人离开感应距离的)系统会进入布防状态,只要一有人进入传感器的范围系统会马上报警蜂鸣器会叫、红色发光二极管会闪烁。 报警方式:声光报警 红色发光二极管闪烁,蜂鸣器报警。 操作说明: 手动报警键:按下手动报警键,系统会马上报警。 布防键:按下布防键绿色发光二极管会闪烁,说明系统准备开始布防,30秒钟后绿色发光二管会长亮,说明系统进入布防状态了,只要一有人进入传感器的范围内系统马上就会报警。 取消键:按下取消键可取消当前报警。 红色发光二极管:当有报警时此发光二极管闪烁,否则熄灭。 绿色发光二极管:用做布防状态指示灯。 黄色发光二极管:用做传感器指示,当传感器有信号输出,此灯会亮,否则熄灭。
项目文件:
一、Proteus仿真源文件
二、AD原理图文件
二、报告说明书
三、系统流程图
四、器件清单
名称 | 型号 | 数量 |
单片机 | STC89C52 | 1 |
单片机座 | DIP_40 | 1 |
蜂鸣器 | 有源 | 1 |
三极管 | S9012 | 1 |
红色发光二极管 | Ф5mm | 1 |
绿色发光二极管 | Ф5mm | 1 |
黄色发光二极管 | Ф5mm | 1 |
晶振 | 12M | 1 |
瓷片电容 | 20P | 2 |
红色发光二极管 | Ф3mm | 1 |
自锁开关 | 1 | |
按键 | 4 | |
电阻 | 2k | 5 |
电阻 | 10k | 1 |
红外热电释传感器 | 人体感应 | 1 |
万能板 | 7cm*9cm | 1 |
五、Keil c语言程序源代码(部分)
#include <reg52.h> //调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义变量范围0~255
#define uint unsigned int //无符号整型 宏定义变量范围0~65535
//红外热释电传感器 平时为0 有输出为1
sbit beep = P2^3; //蜂鸣器定义
sbit red = P2^2; //红色发光二极管定义
sbit green = P2^1; //绿色发光二极管定义
sbit yellow = P2^0; //黄色发光二极管定义
sbit hw = P1^3; //红外热释传感器定义
uchar flag_alarm ; //报警标志位
uchar flag_bufang ; //布防标志位
uchar flag_bufang_en ; //布防标志位使能
uint flag_value; //用做定时器的变量
/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(j=0;j<120;j++);
}
/********************独立按键程序*****************/
uchar key_can; //按键值
void key() //独立按键程序
{
static uchar key_new;
key_can = 20; //按键值还原
P1 |= 0x07;
if((P1 & 0x07) != 0x07)//按键按下
{
delay_1ms(1); //按键消抖动
if(((P1 & 0x07) != 0x07) && (key_new == 1))
{//确认是按键按下
key_new = 0;
switch(P1 & 0x07)
{
case 0x06: key_can = 1; break; //得到按键值
case 0x05: key_can = 2; break; //得到按键值
case 0x03: key_can = 3; break; //得到按键值
}
}
}
else //按键松开
key_new = 1;
}
/******************对应不同按键处理**********************/
void key_with()
{
if(key_can == 1) //按键紧急报警
{
flag_alarm = 1; //报警标志位 ;
}
if(key_can == 2) //布防按键
{
flag_bufang_en = 1;
}
if(key_can == 3) //取消报警 把变量清零
{
flag_value = 0;
beep = 1;
red = 1; //关闭红灯
green = 1; //关闭绿灯
yellow = 1; //关闭黄灯
}
}
/*************定时器0初始化程序***************/
void time_init()
{
EA = 1; //开总中断
TMOD = 0X01; //定时器0工作方式1
ET0 = 1; //开定时器0中断
TR0 = 1; //允许定时器0定时
}
/******************红外报警处理**********************/
void hongwai_dis()
{
if(flag_bufang_en == 1) //准备开始布防
{
green = ~green; //绿灯闪
}
if(flag_bufang == 1) //确认布防
{
green = 0; //如果延时布防成功 绿灯长亮
if(hw == 1) //红外有输出
{
}
}
if(flag_alarm == 1) //报警
{
red = ~red; //红灯报警
beep = ~beep; //蜂鸣器报警
}
}
/******************主程序**********************/
void main()
{
time_init(); //定时器初始化程序
beep = 0; //开机叫一声
delay_1ms(200);
P0 = P1 = P2 = P3 = 0xff; //初始化单片机IO口为高电平
while(1)
{
key();
yellow = ~hw; //红外热释电指示灯 有输出就亮黄灯
if(key_can < 10)
{
key_with(); //按键设置函数
}
if(flag_300ms == 1)
{
flag_300ms = 0;
hongwai_dis(); //红外报警函数
}
}
}
/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{
static uint value;
TH0 = 0x3c;
TL0 = 0xb0; // 50ms
value ++;
if(value % 6 == 0)
{
flag_300ms = 1;
}
if(flag_bufang_en == 1)
{
flag_value ++; // 400 * 50ms = 20000ms = 20秒
if(flag_value >= 400) //20秒
{
flag_bufang = 1;
}
}
}
六、全套资料包含
七:项目资源获取
需要完整的资料可以点击下面的名片关注,回复“资料”!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
评论前必须登录!
注册