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

news2024/11/26 9:45:03

**功能:**基于51单片机的智能照明控制系统,以51系列单片机为核心,使用光敏传感模块(采用ADC0832对光敏电路进行AD转换)、红外传感模块与声敏传感模块组成检测装置,并采用PWM对照明灯的光强度进行控制。
1.本设计分为手动模式和自动模式,可通过模式切换键切换模式;自动模式下绿灯亮,手动模式下,绿灯灭;
2.在自动模式下,照明灯根据环境光照强度和是否区域内检测到人体、声音来智能开启和关闭照明器,并根据不同环境光照强度,自动调节灯泡的照明亮度。
3.当检测到光照强度大于300LX(人眼对可见光感觉最舒适的照明强度)或未检测到人体、声音时,照明器自动关闭。
4.只有在满足光亮强度低于300LX和红外检测区域被有人员活动或声敏模块检测有声音这两个条件时才自动开启照明器。
Protues仿真:
在这里插入图片描述
程序:

/*********************************************************/
// 主函数
/*********************************************************/
void main()
{
	uchar ret;
	
	TimerInit(); 					// 定时器初始化
	LED=0;								// 指示灯点亮(自动模式指示灯)
	ret=Get_ADC0832();		// 获取AD采集结果(环境光照强度)
	AutoControl(ret);			// 上电先进行一次自动亮度控制	
	AutoControl(ret+7);
	
	while(1)
	{
		/* 模式切换控制 */
		if(Key1==0)					// 如果按键1被按下去
		{
			LED=~LED;					// 切换LED灯状态
			DelayMs(10);			// 延时消除按键按下的抖动
			while(!Key1);			// 等待按键释放
			DelayMs(10);			// 延时消除按键松开的抖动
		}
			
		/* 亮度控制 */
		if(LED==1)							// 如果LED是灭的
		{
			ManualControl();			// 则进行手动控制
		}
		else										// 如果LED是亮的
		{
			if(gTime<60000)
			{
				ret=Get_ADC0832();		// 获取AD采集结果(环境光照强度)
				AutoControl(ret);			// 进行自动控制	
				DelayMs(200);
			}
		}
		
		/*检测是否有人*/
		if(Module==1||Sound==1)
		{
			gTime=0;										// 检测到有人,则把60秒计时清零
		}
		if(gTime>60000)								// 如果gTime的值超过了60000
		{
			gTime=60000;								// 则把gTime的值重新赋值为60000,避免过大溢出
			gIndex=0;										// 如果1分钟检测不到有人,则把台灯熄灭
		}
	}
}


/*********************************************************/
// 定时器0服务程序,1毫秒
/*********************************************************/
void Timer0(void) interrupt 1
{
	TH0  = 252;						// 给定时器0的TH0装初值
	TL0  = 24;						// 给定时器0的TL0装初值	
	
	gTime++;							// 每1毫秒,gTime变量加1
	gCount++;							// 每1毫秒,gCount变量加1
	
	if(gCount==10)				// 如果gCount加到10了
	{
		gCount=0;						// 则将gCount清零,进入新一轮的计数
		if(gIndex!=0)				// 如果说台灯不是最暗的(熄灭)
		{
			Lamp=0;						// 则把台灯点亮
		}
	}
	if(gCount==gIndex)		// 如果gCount计数到和gIndex一样了
	{
		if(gIndex!=9)				// 如果说台灯不是最亮的
		{
			Lamp=1;						// 则把台灯熄灭
		}
	}
}


关注公众号-电子应用学习馆,首页回复智能照明获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/746445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python入门自学进阶-Web框架——37、异步IO与scrapy

异步IO&#xff1a; 一个请求多个网址并获取返回值的程序&#xff1a; import requestsurl_list [https://www.baidu.com,https://www.google.com,https://www.bing.com,https://www.sohu.com, ] for url in url_list:print(开始请求&#xff1a;,url)response requests.ge…

B068-项目实战-技术准备-Nosql-redis

目录 概述Redis简介&#xff1a;NoSql分类&#xff1a;Redis是什么特点&#xff08;优势&#xff09;Mysql、Memcached和Redis的比较使用场景 应用安装使用默认客户端redis-cli/命令行操作对value为string类型的常用操作对key的常用操作对list集合的常用操作其他命令行操作 jav…

JavaWeb(1)——HTML、CSS、JS 快速入门

JavaWeb 是使用 Java 技术来构建 Web 应用程序的一种方法。 HTML&#xff08;超文本标记语言&#xff0c;负责网页的结构&#xff09;是一种用于创建网页结构和内容的标记语言。它由一系列标签组成&#xff0c;每个标签都有特定的功能。开发人员可以使用 HTML 来定义页面的结构…

工作学习笔记

文章目录 一、java基础1、Hashcode的作用2、String、String StringBuffer 和 StringBuilder 的区别是什么?3、 Java的四种引用&#xff0c;强弱软虚4、3*0.1 0.3返回值是什么5、final修饰引用数据类型 二、jvm1、内存模型2、如何判断对象可以被回收3、Minor GC与Full GC分别在…

泊松比、泊松比范围、广义胡克定律、体积应变方程

泊松比&#xff08;Poisson’s ratio&#xff09;提供了有关不同材料在负载下如何变形的关键信息&#xff0c;将施加载荷的方向称为纵向&#xff08;longitudinal direction&#xff09;&#xff0c;将垂直方向称为横向&#xff08;lateral directions&#xff09; 当在一个方…

RK3568平台开发系列讲解(编解码篇)编解码功能介绍及体验

🚀返回专栏总目录 文章目录 一、编解码功能简介二、音频和视频播放的操作2.1、使用 gplay 播放器播放视频和音频2.2、使用 gst-launch 播放视频2.3、使用 gst-launch 播放音频2.4、使用 gst-launch 播放视频和音频沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇…

优化SQL查询实现高效数据检索(二)

大家好&#xff0c;本文将接着上文&#xff0c;继续介绍SQL查询优化的重要性以及如何优化SQL查询以实现更快的数据检索。 适当使用通配符 适当使用通配符对于优化SQL查询尤为重要&#xff0c;特别是在匹配字符串和模式方面。通配符是用于SQL查询中查找特定模式的特殊字符&…

【学生系统】基于结构体的一个训练小项目

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

Go []uint8和string的爱恨情仇

先上代码&#xff1a; package mainimport "fmt"func main() {byteSlice : []uint8{52, 44, 51} // 示例字节切片str : string(byteSlice)fmt.Printf("byteSlice:%v\r\n", str) }// 执行-输出 byteSlice:4,3 干货&#xff1a; 在Go语言中&#xff0c;[]u…

TiDB-学习笔记02

编写这个笔记&#xff0c;希望能记录下学习TiDB时候的知识点。 参考文章 目的链接&详细TiDB中文手册 Overview 面板重要监控指标详解 | PingCAP 文档中心 第二章 章节Overview 面板重要监控指标详解 | PingCAP 文档中心 认识Grafana Grafana监控TiDB 对应中文手册的【14…

如何使用 Java 代理插件在不更改应用程序代码的情况下捕获自定义指标

作者&#xff1a;Jack Shirazi Elastic APM Java 代理会自动跟踪许多指标&#xff0c;包括通过 Micrometer 或 OpenTelemetry Metrics API 生成的指标。 因此&#xff0c;如果你的应用程序&#xff08;或其包含的库&#xff09;已公开来自这些 API 之一的指标&#xff0c;则安装…

3Ds max无需插件创建逼真的草地

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 最终图像&#xff1a; 步骤-1 创建一个宽度 x 高度为 100100&#xff08;我使用厘米&#xff09;和 100100 段的平面。 步骤-2 将平面转换为“编辑多边形”并选择所有顶点&#xff08;Ctrl A&#xff09…

AI Chat 设计模式:6. 装饰模式

本文是该系列的第六篇&#xff0c;内容采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的旁白。 问题列表 Q.1 你知道装饰模式吗A.1Q.2 详细说说装饰模式的组成角色A.2Q.3 举一个装饰模式的例子吧&#xf…

Threejs加载倾斜摄影OSGB数据

个人主页&#xff1a; 左本Web3D&#xff0c;更多案例预览请点击》 在线案例 个人简介&#xff1a;专注Web3D使用ThreeJS实现3D效果技巧和学习案例 &#x1f495; &#x1f495;积跬步以至千里&#xff0c;致敬每个爱学习的你。获取模型或源码请点赞收藏加留言&#xff0c;有问…

数据库锁的12连问,抗住!

前言 金三银四很快就要来啦&#xff0c;准备了数据库锁的12连问&#xff0c;相信大家看完肯定会有帮助的。 1. 为什么需要加锁 在日常生活中&#xff0c;如果你心情不好想静静&#xff0c;不想被比别人打扰&#xff0c;你就可以把自己关进房间里&#xff0c;并且反锁。这就是生…

git基础教程(linux)

1.git简介 git 分布式版本控制 git两大特点&#xff1a; 版本控制&#xff1a;支持多人同时开发 分布式&#xff1a; 2.安装与配置 安装 sudo apt-get install git安装成功&#xff0c;运行如下命令&#xff1a; git3.创建一个版本库 (1)新建一个目录git_test&#xff0c…

网络编程7——IP协议(子网掩码,NAT机制,IPv6协议) + 以太网

文章目录 前言一、IP协议协议头格式认识IP地址格式组成子网掩码 地址管理1.动态分配2.NAT机制3.IPv6协议 路由选择 二、以太网以太网帧格式认识MTU 总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话&#x…

第十六章 原理篇:DETR

脑子不好使啊&#xff01;复习过的东西过几天就忘记了&#xff01; 参考教程&#xff1a; 论文地址&#xff1a;[pdf]End-to-End Object Detection with Transformer 源码地址&#xff1a;https://github.com/facebookresearch/detr 文章目录 概述the DETR modelDETR architect…

springboot篮球论坛系统

篮球论坛管理方面的任务繁琐,以至于每年都在篮球论坛管理这方面投入较多的精力却效果甚微,篮球论坛系统的目标就是为了能够缓解篮球论坛管理工作方面面临的压力,让篮球论坛管理方面的工作变得更加高效准确。 本项目在开发和设计过程中涉及到原理和技术有: B/S、java技术和MySQL…

Git❀详细使用教程

Git❀详细使用教程 一、Git简介1.1 什么是Git&#xff1f;1.2 Git的特点1.3 集中式与分布式的区别&#xff1f;1.4 Git工作流程图 二、Git安装与常用命令2.1 Git环境配置2.1.1 下载与安装2.1.2 基本配置2.1.3 为常用指令设置别名&#xff08;可选&#xff09;2.1.4 解决GitBash…