一、资料内容
- (1)、基于51单片机的智能路灯系统proteus仿真设计一份;
- (2)、基于51单片机的智能路灯系统proteus仿真设计keli源代码一份;
- (3)、基于51单片机的智能路灯系统proteus仿真设计Altium designer原理图一份;
- (4)、基于51单片机的智能路灯系统proteus仿真设计Altium designer PCB一份;
- (5)、基于51单片机的智能路灯系统proteus仿真设计视频讲解一份;
二、设计要求
- (1)、要求以51系列单片机为核心,设计一智能路灯;
- (2)、系统可以根据时钟调整路灯的开与关;
- (3)、系统可以根据环境的明暗调整路灯的开与关;
- (4)、系统可以通过按键设置相关参数;
- (5)、系统具有手动模式和自动模式;
三、相关资料截图
图1. 系统proteus仿真图
图2. 系统keil源代码工程文件截图
图3. 系统原理图设计图
图4. 系统PCB
四、视频讲解
部分源代码:
#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(); //工作状态
}
}