智能灯光晚上有人+晚上有声音防盗报警
部分源程序如下:
*硬件平台:光敏电阻+热释电
*显示模块: 检测到信号时对应的灯亮
*输入模块:读取对应传感器的IO口
*实现的功能:当没有检测到光,且检测到有人,则继电器吸合
*操作描述:-----------------------------------------
*接口说明:-----------------------------------------
*/
LCD1602显示
DS1302系统时间
按键设定系统时间、工作时间、光照阈值(默认开始时间为16点,结束时间为5点)
工作时间内路灯点亮,凌晨12点后路灯关闭,有人或车通过是,路灯点亮10s
非工作时间光照强度低于阈值,路灯点亮
状态检测,路灯应亮未亮,声光报警(通过检测LED串联电阻的电压值,当有电压值时,证明线路正常,无电压值时,线路故障)
手动和自动模式可通过按键自己手动切换,手动模式下由开关控制路灯亮灭。(自动模式不再执行)
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
电路原理图如下:
单片机源程序如下:
#include "std_for_wym.h"
sbit Ji_D_Qi = P1^0; //继电器接口
sbit Rsd = P1^1; //红外热释电接口
sbit Led = P1^2; //红外热释电信号指示接口
sbit Light = P1^3; //光敏电阻接口
sbit shengyin= P1^4;
#define TIMEMIN 6 //检测到一次吸合2分钟
sbit bufang=P3^0; //布防按键
sbit beep = P3^1; //蜂鸣器定义
sbit green = P1^5; //绿色发光二极管定义
sbit yellow = P2^4; //黄色发光二极管定义
sbit hw = P1^6; //红外热释传感器定义
bit flag_300ms = 0;
uchar flag_alarm ; //报警标志位
uchar flag_bufang ; //布防标志位
uchar flag_bufang_en; //布防标志位使能
uint flag_value,flag_value2; //用做定时器的变量
uchar flag_deng_en ; //灯标志位使能
/*************定时器0初始化程序***************/
void time_init()
{
EA = 1; //开总中断
TMOD = 0X01; //定时器0工作方式1
ET0 = 1; //开定时器0中断
TR0 = 1; //允许定时器0定时
}
/******************红外报警处理**********************/
void hongwai_dis()
{
if(flag_alarm == 1) //报警
{
beep = ~beep; //蜂鸣器报警
}
if(flag_bufang_en == 1) //准备开始布防
{
green = ~green; //绿灯闪
}
if(flag_bufang == 1) //确认布防
{
green = 0; //如果延时布防成功 绿灯长亮
if(hw == 1) //红外有输出
{
flag_alarm = 1;
}
}
// if(flag_alarm == 1) //报警
// {
// beep = ~beep; //蜂鸣器报警
// }
}
void main(void)
{
time_init();
while(1)
{
yellow = ~hw; //红外热释电指示灯 有输出就亮黄灯
if(bufang==0) //判断按键减是否按下
{
DelayMs(50);//延时 防抖
if(bufang==0) flag_bufang_en = 1;
}
if(flag_300ms == 1)
{
flag_300ms = 0;
hongwai_dis(); //红外报警函数
}
if(Rsd == 1)Led = 0; //热释电指示灯
else Led = 1;
if((Rsd == 1 && Light == 0)||(Light == 0&&shengyin == 0))
// Light==0 光线暗 光线暗并且检测到人或者光线暗检测到声音
{
Ji_D_Qi = 0;
flag_deng_en=1;
}
}
}
全部资料51hei下载地址 仿真与代码与AD电路图:
智能路灯.7z
(202.86 KB, 下载次数: 273)
|