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

devtools/2024/10/9 17:26:14/

目录

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、程序

//主程序
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、资料内容


http://www.ppmy.cn/devtools/38886.html

相关文章

【信息系统项目管理师】复习~第十三章

13. 资源管理 1.项目团队&#xff1a;是执行项目工作&#xff0c;以实现项目目标的一组人员&#xff0c;由为了完成项目而承担不同角色与职责的人员组成。 项目团队成员可能具备不同的技能&#xff0c;可能是全职的或兼职的&#xff0c;也可能随项目进展而增加或减少。尽管项…

SparkSQL概述

1.1. SparkSQL介绍 SparkSQL&#xff0c;就是Spark生态体系中的构建在SparkCore基础之上的一个基于SQL的计算模块。SparkSQL的前身不叫SparkSQL&#xff0c;而是叫做Shark。最开始的时候底层代码优化、SQL的解析、执行引擎等等完全基于Hive&#xff0c;总是Shark的执行速度要比…

从零开始学习C语言,常用语法一文打尽

C语言常用语法 前言hello world数据类型变量变量的命名规范变量的分类变量的作用域和生命周期 常量字面常量const修饰的常变量#define定义的标识符常量枚举常量 字符串转义字符注释选择语句if循环语句while函数数组 前言 这篇博客旨在帮助零基础的朋友们入门&#xff0c;我会尽…

【C语言项目】贪吃蛇(上)

个人主页 ~ gitee仓库~ 欢迎大家来到C语言系列的最后一个篇章–贪吃蛇游戏的实现&#xff0c;当我们实现了贪吃蛇之后&#xff0c;我们的C语言就算是登堂入室了&#xff0c;基本会使用了&#xff0c;当然&#xff0c;想要更加熟练地使用还需要多多练习 贪吃蛇 一、目标二、需要…

linux文本三剑客之sed

目录 1、sed特点 1&#xff09;sed命令格式 2&#xff09;sed命令核心功能"增删改查" 2、sed命令执行过程 3、sed核心应用 1&#xff09;sed-查找p 2&#xff09;sed-删除d 3&#xff09;sed-增加cai 4) sed-替换s 1、sed特点 sed stream editor 流编辑器…

接口防抖(重复点击)

一&#xff0c;概念 防抖技术指的是在一个事件被连续触发时&#xff0c;只执行最后一次操作&#xff0c;忽略中间的操作。通常我们会设置一个定时器&#xff0c;在规定的时间内如果发生多次事件&#xff0c;则只保留最后一次事件&#xff0c;确保请求只发送一次。在 Web 开发中…

【数据结构-二叉搜索树的增删查改】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a;基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 …

开源离线AI笔记应用

前言 Reor 是一款人工智能驱动的桌面笔记应用程序&#xff0c;它能自动链接相关笔记、回答笔记中的问题并提供语义搜索。所有内容都存储在本地&#xff0c;支持 Windows、Linux 和 MacOS。Reor 站在 Ollama、Transformers.js 和 LanceDB 等巨头的肩膀上&#xff0c;使 LLM 和嵌…