一、系统功能
智能路灯系统主要能实现以下功能
1.能够按键设定系统时间、工作时间、光照阈值(默认开始时间为16点,结束时间为5点)
2.工作时间内路灯点亮,凌晨12点后路灯关闭,有人或车通过是,路灯点亮10s
3.非工作时间光照强度低于阈值,路灯点亮
4.能够检测系统工作状态,路灯应亮未亮,声光报警(原理是通过检测LED串联电阻的电压值,当有电压值时,证明线路正常,无电压值时,线路故障)
5.具有手动控制模式,手动和自动模式可通过按键自己手动切换,手动模式下由开关控制路灯亮灭。(自动模式不再执行)
二、硬件设计
系统主要由51单片机最小系统+1602显示模块+DS1302时钟模块+光强检测模块+按键输入模块+声光报警模块+LED照明模块+状态检测电路+人体车辆红外检测模块组成。
三、仿真
四、代码
/******定义头文件**************/
#include<reg52.h>
#include <INTRINS.H>
#include"lcd.h"
#include "ds1302.h"
/******类型重定义*************/
typedef unsigned char uchar;
typedef unsigned int uint;
/******引脚定义***************/
sbit key_1 = P1^0; //定义4个按键
sbit key_2 = P1^1;
sbit key_3 = P1^2;
sbit key_4 = P1^3;
sbit key_5=P3^0;//手动/自动模式切换
sbit key_6=P3^1;//手动模式路灯开关
sbit led_1 = P1^4;
sbit Beep = P2^3; //定义声光报警
sbit AD_clk = P3^4; //定义ADC0832
sbit AD_do = P3^5;
sbit AD_di = P3^5;
sbit AD_cs = P3^6;
sbit red_sr = P3^7; //红外检测
/******定义变量***************/
char hour,min,sec; //定义小时、分钟、秒变量
char time;
char work_time_Start = 16,work_time_End = 5; //设定起始、结束时间
bit light_flag;
uchar light; //定义光照强度
uchar light_limit; //定义光照阈值
uchar Data;
/******声明函数***************/
void delayms(unsigned int x); //延时函数
void display(); //显示
void Read_time();
void set_work_time(); //设定工作时间
void set_limit_light(); //设定光照阈值
void work(); //工作状态
void set_time(); //设定时间
void delay10ms(int d);
void InitTimer0(void); //T0定时器初始化程序
uchar AD(bit Channel); //ADC0832程序
void kongzhi()
{
if(key_6==0)
{
led_1=1;
}
else
{
led_1=0;
}
}
void qiehaun()
{
if(key_5==0)
{
kongzhi();
}
else
{
work();
// if(red_sr==1)
// {
// led_1=1;
// }
// if(red_sr==0)
// {
// led_1=0;
// }
}
}void main()
{
Beep = led_1 = 0; //声光报警,LED关闭
InitTimer0(); //T0定时器初始化程序
LcdInit(); //lcd1602初始化
while(1)
{
Ds1302ReadTime(); //读取时间
set_work_time(); //设定工作时间
set_limit_light(); //设定光照阈值
set_time();
light = AD(0); //读取ADC0832数值
display(); //显示
qiehaun();
// work(); //工作状态
}
}