单片机智能灯控制系统源程序仿真原理图与论文全套资料

目录

1、设计描述

2、仿真图

3、程序

4、资料内容

资料下载地址:单片机智能灯控制系统源程序仿真原理图与论文全套资料下载

1、设计描述

设计了一款智能控制系统。

AT89C51+LCD1602+DS1302+按键+LED组成了这样一个完整的设计。

P2.0-P2.3 4个LED等代表庭院内的4盏灯

P1.3-P1.7 5个开关,第一个代表光敏电阻传感器,后四个都是热释电红外传感器

P3.2、P3.4、P3.5、P3.6为四个按键开关,可设置万年历时间。

人性化地加入了时间和温度的LCD显示,并可以通过按键去设置时间日期等。

智能灯控制分为自动和手动控制。
逻辑功能:

当P3.0为0,也就是按下的时候为手动控制,反之则为自动控制。

手动:

按下开关P3.1,所有的灯都打开,按下开关P3.2,所有的灯都关闭。

自动:

一个光敏电阻传感器和四个红外热释电传感器,实现逻辑为:

当时间为晚上18点-早上6点之间或者光敏电阻传感器为0时,一旦有人,则点亮灯,一个灯附近安装一个红外热释电传感器,

当走进灯时,灯亮。

2、仿真图

3、程序

cpp 复制代码
//主程序
void main()
{
Init_LCD();//液晶初始化
IE=0X87;//允许INT0,T0中断
IP=0X05;
IT0=0X01;
IT1=0X01;
TMOD=0X01;
TH0=-50000/256;
TL0=-50000%256;
TR0=1;
while(1)
{  
  R_LED=Y_LED=G_LED=B_LED=1;
  if(key_1==0)	//手动模式
   {
   	 key_LED();	 //按键控制灯函数
   }
  else
   {
   	 if(DateTime[2]>18||DateTime[2]<6||guangmin==0)
      {
	    if(ren1==0)
		 {
		   R_LED=0;
	       Y_LED=1;
	       G_LED=1;
	       B_LED=1;
		 }
		if(ren2==0)
		 {
		   R_LED=0;
	       Y_LED=0;
	       G_LED=1;
	       B_LED=1; 
		 }
	    if(ren3==0)
		 {
		   R_LED=0;
	       Y_LED=0;
	       G_LED=0;
	       B_LED=1;
		 }
		if(ren4==0)
		 {
		   R_LED=0;
	       Y_LED=0;
	       G_LED=0;
	       B_LED=0;	 
		 }
	  }
   
   }
switch(Adjust_flag)
{
case 0:GetTime(); break;
case 1:
if(K3==0&&DateTime[6]<99)
{
while(K3==0);
DateTime[6]++;}

if(K4==0&&DateTime[6]>0) 
{
while(K4==0);
DateTime[6]--;
}
MonthsDays[2]=isLeapYear(2000+DateTime[6])?29:28;
//如果年份变化后当前月份的天数大于上限则设为上限
if(DateTime[3]>MonthsDays[DateTime[4]])
DateTime[3]=MonthsDays[DateTime[4]];
RefreshWeekDay();//刷新星期
 break;
       
case 2:
if(K3==0&&DateTime[4]<12)
{
while(K3==0);
DateTime[4]++;}

if(K4==0&&DateTime[4]>1)
{
while(K4==0);
DateTime[4]--;
}
//获取2月份天数
MonthsDays[2]=isLeapYear(2000+DateTime[6])?29:28;
//如果变化后当前月份的天数大于上限则设为上限
if(DateTime[3]>MonthsDays[DateTime[4]])
DateTime[3]=MonthsDays[DateTime[4]];
RefreshWeekDay();//刷新星期
 break;

case 3://日00-28/29/30/31,调节之前首先根据年份得出该年中2月的天数
MonthsDays[2]=isLeapYear(2000+DateTime[6])?29:28;
//根据当前的月份决定调节日期的上限
if(K3==0&&DateTime[3]<MonthsDays[DateTime[4]])
{
while(K3==0);
 DateTime[3]++;}
if(K4==0&&DateTime[3]>0) 
{
while(K4==0);
DateTime[3]--;
}
break;

case 4://时
if(K3==0&&DateTime[2]<23) 
{
while(K3==0);
DateTime[2]++;}
if(K4==0&&DateTime[2]>0)
{
while(K4==0);
 DateTime[2]--; }
break;
case 5://分
if(K3==0&&DateTime[1]<59)
{ while(K3==0);
DateTime[1]++;   }
if(K4==0&&DateTime[1]>0) 
{while(K4==0);
DateTime[1]--;	
 }
break;
}
}}

4、资料内容

相关推荐
CODECOLLECT1 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen2 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠5 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_5 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技7 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计7 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
小龙报8 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业8 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能9 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
czwxkn9 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件