本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602显示模块、人体红外传感器、光线检测模块、路灯继电器控制等。
主要功能:
系统运行后,LCD1602显示时间、工作模式,光线强度及路灯工作状态。
如果晚上11点到凌晨4点,通过红外感应方式控制路灯;
当感应有人,路灯开启;当感应没人,延迟一会儿关闭路灯;
如果在时间之外则通过光线强弱方式控制路灯;
当光线较暗,路灯开启;当光线较亮,延迟一会儿关闭路灯;
/*
作者:嗨小易(技术QQ交流群:570487280)
*/
//系统数据获取
void sys_data_get(void)
{
while(1)
{
//读取光线值
sys_ctrl.light=pcf8591_read_adcvalue(0);
sys_ctrl.light=cal_map(sys_ctrl.light,0,255,0,100);
//检测是否有人
if(IRED==0)sys_ctrl.man=1;
else sys_ctrl.man=0;
//根据时间选择光控还是红外控
if(sys_ctrl.hour>=23 || sys_ctrl.hour<=3)sys_ctrl.mode=1;
else sys_ctrl.mode=0;
break;
}
}
//系统数据显示
void sys_data_show(void)
{
while(1)
{
//时间显示
lcd1602_show_nums(0,0,sys_ctrl.hour,2,0x80);
lcd1602_show_nums(3,0,sys_ctrl.min,2,0x80);
lcd1602_show_nums(6,0,sys_ctrl.sec,2,0x80);
//控制模式显示
if(sys_ctrl.mode==1)lcd1602_show_string(11,0,"Ired ");
else lcd1602_show_string(11,0,"Light");
//显示光线强度
lcd1602_show_nums(2,1,sys_ctrl.light,3,0);
//是否有人显示
if(sys_ctrl.man==1)lcd1602_show_string(8,1,"Y");
else lcd1602_show_string(8,1,"N");
break;
}
}
//系统数据设置
void sys_data_set(void)
{
}
//系统功能控制
void sys_fun_ctrl(void)
{
//如果是光控
if(sys_ctrl.mode==0)
{
//光线很强,路灯关闭
if(sys_ctrl.light>LIGHT_MAX)sys_ctrl.sta=0;
//如果光线暗,路灯打开
else if(sys_ctrl.light<LIGHT_MIN)sys_ctrl.sta=1;
// //中间强度,路灯关闭
// else sys_ctrl.sta=0;
}
//如果是红外控制
else
{
//如果感应到有人,路灯打开
if(sys_ctrl.man==1)sys_ctrl.sta=1;
else
{
delay_ms(1000);
sys_ctrl.sta=0;
}
}
//路灯关闭
if(sys_ctrl.sta==0)
{
LED=1;
lcd1602_show_string(11,1,"Close");
}
else
{
LED=0;
lcd1602_show_string(11,1,"Open ");
}
}
//应用控制系统
void appdemo_show(void)
{
u8 i=2;
sys_parm_init();//系统参数初始化
ctrl_pin_init();
pcf8591_init();
lcd1602_init();//LCD1602初始化
//读取数据,等待稳定
while(i--)
{
//读取光线值
sys_ctrl.light=pcf8591_read_adcvalue(0);
sys_ctrl.light=cal_map(sys_ctrl.light,0,255,0,100);
delay_ms(100);
}
TIM2_Init(400-1,70);//定时10ms
TIM_Cmd(TIM2,ENABLE);//打开定时器
sys_open_show();//系统初始界面显示
while(1)
{
sys_data_get();//系统数据获取
sys_data_show();//系统数据显示
sys_data_set();//系统数据设置
sys_fun_ctrl();//系统功能控制
}
}
B站演示视频:https://space.bilibili.com/444388619
视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。