356 基于单片机公交站台智能照明 LED控制设计【毕设课设】

该LED 智能照明控制系统由光敏模块电路、MCU电路、DS1302时钟电路、1602液晶显示电路和LED灯显示电路等构成。可以实现万年历时间的调整,可以实现车站开关灯的时间,同时依据当前环境的亮度改变,调整车站灯光的亮度。

完整版 电路图和程序代码 下载地址

https://pan.baidu.com/s/1retxs684hCu60-zcnix5yA?pwd=8888

部分代码展示

#include <reg52.h>
#include <intrins.h> 
#include <1602.h>
#include <DS1302.h>
#include <Set_OnTime.h>
#include <KeyFunction.h>

uchar  timecount=0,pwmcount=0; //定时器用

sbit light = P3^7;	  //光敏

bit Timeflag = 0,pwm_flag = 0;  //进入开关时间段标志

void Light() //小灯程序
{
	if(Timeflag == 0)
	 {
		// if(light == 0)//光线亮
		 if(light == 1)	  //光线暗
		 {
			  LED1 = 0;   //亮
			  LED2 = 0;
			  LED3 = 0;
			  LED4 = 0;
			  LED5 = 0;
			  on_flag = 1;
		 }
     else
		 {
			  LED1 = 1;   //灭
			  LED2 = 1;
			  LED3 = 1;
			  LED4 = 1;
			  LED5 = 1;
			  on_flag = 0;		 
		 }
	 } 
}
/**********************************************************/ 
// 主函数的初始化
/**********************************************************/
void init_main() 
{
	TMOD=0x11; 		//定时器T0 T1 方式1
	TH0=(65536-50000)/256;	  //50ms定时  
	TL0=(65536-50000)%256;
	TH1=(65536-100)/256;	  //100us定时  
	TL1=(65536-100)%256;
	EA=1; 			 //开总中断
	ET0=1;ET1=1;   	//启动定时T0和T1
	TR0=1; TR1=1;
	init_lcd();                 //初始化LCD1602 
	init_ds1302();			   //初始化DS1302
}
/*********************************************************/ 
// 时间比较
/*********************************************************/ 

//init [] ={0x00,0x00,0x00,0x00,0x00,0x00,0x00};  
//当前时间缓存 bj_time[] ={0x00,0x30,0x18};  //ON
//             bj_time1[] ={0x00,0x00,0x05}; //OFF

void  Time_compare() 
{ 
   if(alarm_flag) 	  //alarm_flag=1,开定时
   { 
     if(init[2]==bj_time[2])   // 开灯小时
      { 
         if(init[1]==bj_time[1]) 	// 开灯分钟 
				 {
					  if(init[0]==bj_time[0]) //开灯秒
						{
							LED1 = 0;   //亮
							LED2 = 0;
							LED3 = 0;
							LED4 = 0;
							LED5 = 0;
							on_flag = 1;	//开
							Timeflag = 1;  //置1后 Light() //小灯程序 不会起作用
					  }
				 }
      } 
     if(init[2]==bj_time1[2]) 	 // 关灯小时
      { 
         if(init[1]==bj_time1[1]) 	 // 关灯分钟
				 {
					 if(init[0]==bj_time1[0])  // 关灯秒
					 {
						    pwm_flag = 0;
							LED1 = 1;   //灭
							LED2 = 1;
						    LED3 = 1;
						    LED4 = 1;
						    LED5 = 1;
							on_flag = 0;
						    Timeflag = 0;	  //置0后 Light() //小灯程序起作用
					 }
				 }
      }  
   } 
   if(init[2] == 0x22) 	  //到22点
      { 
          if(init[1] == 0x00) 
				 {
					  if(init[0] == 0x00)
						{
							LED1 = 0;   //亮
							LED2 = 1;
							LED3 = 0;
							LED4 = 1;
							LED5 = 0;
							//on_flag = 1;
							Timeflag = 1;	  //置1后 Light() //小灯程序 不会起作用
					  }
				 }
      }
	 if(init[2] == 0x22) 	 //12点00分01秒进入 亮的两个小灯亮度稍微降低节能模式
      { 
         if(init[1] == 0x00) 
				 {
					  if(init[0] == 0x01)
						{
							pwm_flag = 1;	//这个标志调用在Time1中断服务函数  
							Timeflag = 1;	//置1后 Light() //小灯程序 不会起作用
					  }
				 }
       }
			 
}

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值