基于51单片机的智能路灯照明控制系统

发布者:SecretWhisper最新更新时间:2022-01-27 来源: eefocus关键字:51单片机  智能路灯  照明控制系统 手机看文章 扫描二维码
随时随地手机看文章

硬件设计


仿真文件1: 功能如下图所示
在这里插入图片描述
原理图
在这里插入图片描述

仿真文件2:
在这里插入图片描述

在这里插入图片描述

程序设计

   /******定义头文件**************/

#include 

#include  

#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(); //工作状态

}

}

void Timer0Interrupt(void) interrupt 1

{

static uchar count;

    TH0 = 0x0D8;

    TL0 = 0x0F0;

count ++;

if(count>=100)

{

time ++;

count = 0;

    }

//add your code here

}

/*******************************************************************************

* 函数名         : InitTimer0()

* 函数功能 : T0定时器初始化程序

* 输入           : 无

* 输出          : 无

*******************************************************************************/

void InitTimer0(void)

{

    TMOD = 0x01;

    TH0 = 0x0D8;

    TL0 = 0x0F0;

    EA = 0;

    ET0 = 1;

    TR0 = 1;

}

/*******************************************************************************

* 函数名         : work()

* 函数功能 : 工作状态

* 输入           : 无

* 输出          : 无

*******************************************************************************/

void work()

{

Read_time(); //转换时间

if(work_time_End!=0 && work_time_Start!=0) //工作时间已设置

{

if(hour >= work_time_Start) //当前时间大于起始时间,如起始时间为19:00,当前时间为21:00。

{

Data = AD(1);

led_1 = 1; //点亮LED

if(Data < 50) //未检测到LED点亮

Beep = 1; //声光报警

else //检测到Led点亮

Beep = 0; //停止报警

}

else if(hour < work_time_End) //当前时间小于结束时间,如结束时间为06:00,当前时间为04:00。

{

if(red_sr) //检测到人或车

{

time = 0;

light_flag = 1; //LED标志置1,开始T0定时器计时,点亮LED,10s后LED标志清零,LED熄灭

}

if(light_flag) //LED标志置1,检测到人或车

{

led_1 = 1; //点亮LED

EA = 1; //开启中断

if(time > 10) //10s后

{

light_flag = 0; //LED标志清零

EA = 0;     //关中断

time = 0; //计时清零

}

Data = AD(1);

if(Data < 50) //未检测到LED点亮

Beep = 1; //声光报警

else //检测到Led点亮

Beep = 0; //停止报警

    }

else

led_1 = 0;

}

else

{

if(light < light_limit)

{

led_1 = 1;

Data = AD(1);

if(Data < 50) //未检测到LED点亮

Beep = 1; //声光报警

else //检测到Led点亮

Beep = 0; //停止报警

}

else

led_1 = Beep = 0;

}

}

}

/*******************************************************************************

* 函数名         : set_work_time()

* 函数功能 : 设定工作时间

* 输入           : 无

* 输出          : 无

*******************************************************************************/


文件仅供参考


链接:https://pan.baidu.com/s/1Sl6u_BGjrjMKFC8JS90O-A

提取码:67xo

关键字:51单片机  智能路灯  照明控制系统 引用地址:基于51单片机的智能路灯照明控制系统

上一篇:基于51单片机的智能温控风扇
下一篇:基于51单片机的GSM智能快递柜设计

推荐帖子

D题自激振荡怎么消除啊!!!!!!!!!
D题自激振荡怎么消除啊!!!!!!!!!D题自激振荡怎么消除啊!!!!!!!!!哥哥啊,谁知道你说的D题题目是什么!回复楼主wsxph的帖子
wsxph 综合技术交流
基于DSP56F805的汽车防抱死制动(ABS)测试系统
基于DSP56F805的汽车防抱死制动(ABS)测试系统基于DSP56F805的汽车防抱死制动(ABS)测试系统
feifei 测试/测量
请教STM32视频显示
请教各位电工兄弟,有没有什么方案(外加芯片等等),STM32可以显示视频,并且能在上面叠加OSD?请教STM32视频显示怎么沉下去了请教各位电工兄弟,有没有什么方案(外加芯片等等),STM32可以显示视频,并且能在上面叠加OSD?这个要求不大清晰。STM32是MCU,作为主控芯片,可以接显示器,比如彩色液晶,来显示视频,叠加OSD通过一些软件方案(比如uCGUI)应该也可以实现。可以提一些具体的问题
mosquit stm32/stm8
一大波萌妹子正在接近!Java、C++、Python、Ruby、PHP、C#、JS
【工程师请注意】!一大波萌妹子正在接近!喂,别装作不认识好嘛!精彩的编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS,找找谁是你最熟悉的那个小女孩?Java犹如宫泽贤治的《不畏风雨》中出现的、性格木讷的女孩子。从小就由于迟钝和大食量等特征被别人当作笨蛋,从小学入学开始进入田径部、坚持跑步,在中长跑中经常取得好成绩,给人以活泼的印象。是十分努力的女孩子。她的家境并不算好。父亲Sun是有才能的艺术家,但不擅长理财,在她14岁的时候因为苦于借债积劳成疾而去世。
linjiang 下载中心专版
十万火急!!!请教各位大虾有关TLC2543 A/D转换的问题,望不吝赐教!!!~
TLC2543输出至MCU后,在HD7279控制下的数码管显示的数值不稳定,一直在变化!以下是小生写的程序:#includeabsacc.h#includereg51.h#includemath.h#includestdio.h#includereg51.h#includeintrins.hsbitcs=P1^4; //csatP1.4sbitclk=P1^5; //clk连接于P1.5sbitdat=P1^2; //dat连接于
xqw116 单片机
【STM32H7S78-DK】基于TouchGFX的可视测距仪
【硬件】1、STM32H7S78-DK2、X-NUCLEO-53L4A3TOF评估板【软件环境】1、STM32CubeMX6.122、X-CUBE-TOF3、X-CUBE_TOUCHGFX4、TouchGFX-Designer5、MDK5.38【实现步步骤】1、使用TouchGFX-Designer生成基于STM32H7S78L-DK的TouchGFX工程,设计界面如下:2、使用STM32CubeMX打开工程,配置X-CBUE-TOF如下:
lugl4313820 stm32/stm8
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved