基于 51 单片机室内灯光控制系统

news/2024/11/20 21:27:42/

目录

1. 功能介绍

2. 硬件介绍

3. 设计思路与相关硬件介绍

3.1 主程序设计

3.2 光敏传感器

3.3 声音检测、人体感应传感器

4. 项目代码

4.1 BH1750 传感器代码


1. 功能介绍

这是基于 STC89C52 单片机设计的灯光控制系统,实现对室内灯光的控制,采集光敏传感器,红外线热释电传感器,声音传感器,光照照度传感器等数据进行处理,完成室内灯光的智能控制。

支持的功能与设计要求:

1、室内光控系统的传感部分主要是对环境数据、室内光强、室内噪声、是否有物体接近等进行采集,需要使用单片机模块、人体红外传感器、光敏传感器和噪音传感器;

2、整个室内灯光控制系统的应用主要集中在灯具的控制上,主要是控制灯具的光强、开闭。系统采用智能传感器技术和单片机技术,有利于系统的智能化;

3、系统包括三个主要流程。感应器感应到人体点亮灯,感应器感应到光强改变灯的亮度,感应器感应到一定音量点亮灯。在控制系统中,各传感器设备和控制单元最终以指定方式与主控制器相连,实现各单元之间的通讯和控制;

声音传感器作用是采集当前环境的声音,传递给单片机进行处理,通过预设的阀值进行分析,判断是否有人过来,实现声控开灯的功能;

热释电人体采集传感器可以通过红外功能探测周围是否有发热的物体,正常人体会发出红外光的,当传感器检测到周围指定范围内有人活动时,会通过高点电平的方式通知单片机,单片机根据预先设置的逻辑完成开灯操作。

光敏传感器用于采集周边环境的光强度,通过光强区分白天黑夜,如果光的环境较暗,就需要开灯,如果较亮就需要关灯,单片机得到光强之后通过处理,配合其他传感器的数据,最终判断是否需要开灯关灯

2. 硬件介绍

3. 设计思路与相关硬件介绍

3.1 主程序设计

程序的主要功能: STC89C52 单片机作为核心器件,首先初始化 BH1750 光敏传感器,再初始化定时器,开始进行定时器扫描工作。在主函数循环里不断读取光敏、声音传感器、人体感应传感器的数据设置开关灯的状态,以便对采集到的数据作进一步处理。当定时器中断产生后,在定时器中断服务函数里进行处理 LED 的状态。

主程序框架图如下所示:

定时器的运行流程图:

3.2 光敏传感器

光敏传感器采用 BH1750,这是一个 IIC 总线接口的数字光敏传感器,需要封装 IIC 标准的函数接口,完成数据读取。

IIC 总线的通信过程分别由开始信号、结束信号、发送数据、响应信号、接收数据五个部分构成。当 SCL 时钟线为高电平的时候,SDA 数据线不允许变化,当 SCL 时钟线为低电平的时候,SDA 数据线可以在 0 和 1 之间任意变化。 只有当 SCL 时钟线为高电平的时候,IIC 总线电路才能对 SDA 数据线上的电平(0 或 1)进行读取,当 SCL 时钟线为低电平的时候,无论 SDA 数据是高还是低电平,IIC 总线都不对 SDA 数据线进行采样读取。

BH1750 光敏传感器流程图设计:

3.3 声音检测、人体感应传感器

声音检测和人体感应传感器输出的都是 0 和 1,所以代码比较简单,和按键原理一样,读取输入的电平即可,灵敏度可以调整模块上面的电位器。

下面是程序检测的流程图:

4. 项目代码

4.1 BH1750 传感器代码

//------------------------------------
void Delay5us();
void Delay5ms();
void BH1750_Start();                    //起始信号
void BH1750_Stop();                     //停止信号
void BH1750_SendACK(bit ack);           //应答ACK
bit  BH1750_RecvACK();                  //读ack
void BH1750_SendByte(BYTE dat);         //IIC单个字节写
BYTE BH1750_RecvByte();                 //IIC单个字节读/**************************************
延时5微秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数,注意时钟过快时需要修改
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5us()
{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}/**************************************
延时5毫秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5ms()
{WORD n = 560;while (n--);
}/**************************************
起始信号
**************************************/
void BH1750_Start()
{SDA = 1;                    //拉高数据线SCL = 1;                    //拉高时钟线Delay5us();                 //延时SDA = 0;                    //产生下降沿Delay5us();                 //延时SCL = 0;                    //拉低时钟线
}/**************************************
停止信号
**************************************/
void BH1750_Stop()
{SDA = 0;                    //拉低数据线SCL = 1;                    //拉高时钟线Delay5us();                 //延时SDA = 1;                    //产生上升沿Delay5us();                 //延时
}/**************************************      
发送应答信号
入口参数:ack (0:ACK 1:NAK)
**************************************/
void BH1750_SendACK(bit ack)
{SDA = ack;                  //写应答信号SCL = 1;                    //拉高时钟线Delay5us();                 //延时SCL = 0;                    //拉低时钟线Delay5us();                 //延时
}/**************************************
接收应答信号
**************************************/
bit BH1750_RecvACK()
{SCL = 1;                    //拉高时钟线Delay5us();                 //延时CY = SDA;                   //读应答信号SCL = 0;                    //拉低时钟线Delay5us();                 //延时return CY;
}/**************************************
向IIC总线发送一个字节数据
**************************************/
void BH1750_SendByte(BYTE dat)
{BYTE i;for (i=0; i<8; i++)         //8位计数器{dat <<= 1;              //移出数据的最高位SDA = CY;               //送数据口SCL = 1;                //拉高时钟线Delay5us();             //延时SCL = 0;                //拉低时钟线Delay5us();             //延时}BH1750_RecvACK();
}/**************************************
从IIC总线接收一个字节数据
**************************************/
BYTE BH1750_RecvByte()
{BYTE i;BYTE dat = 0;SDA = 1;                    //使能内部上拉,准备读取数据,for (i=0; i<8; i++)         //8位计数器{dat <<= 1;SCL = 1;                //拉高时钟线Delay5us();             //延时dat |= SDA;             //读数据               SCL = 0;                //拉低时钟线Delay5us();             //延时}return dat;
}//*********************************void Single_Write_BH1750(uchar REG_Address)
{BH1750_Start();                  //起始信号BH1750_SendByte(SlaveAddress);   //发送设备地址+写信号BH1750_SendByte(REG_Address);    //内部寄存器地址,//  BH1750_SendByte(REG_data);       //内部寄存器数据,BH1750_Stop();                   //发送停止信号
}//*********************************************************
//
//连续读出BH1750内部数据
//
//*********************************************************
void Multiple_read_BH1750(void)
{   uchar i;  BH1750_Start();                          //起始信号BH1750_SendByte(SlaveAddress+1);         //发送设备地址+读信号for (i=0; i<3; i++)                      //连续读取2个地址数据,存储中BUF{BUF[i] = BH1750_RecvByte();          //BUF[0]存储0x32地址中的数据if (i == 3){BH1750_SendACK(1);                //最后一个数据需要回NOACK}else{    BH1750_SendACK(0);                //回应ACK}}BH1750_Stop();                          //停止信号Delay5ms();
}//初始化BH1750,根据需要请参考pdf进行修改****
void Init_BH1750()
{Single_Write_BH1750(0x01);  }

http://www.ppmy.cn/news/356286.html

相关文章

让灯光拥有超强感知力,智能感应灯方案全新升级

人与人之间有一种奇异的“心灵感应”&#xff0c;而灯与人之间亦有奇妙的“人灯感应”。 夜晚回家途中&#xff0c;黑漆漆的走廊往往让你望而却步。 起夜时&#xff0c;开灯会担心刺眼的光亮扰乱自己的睡意&#xff0c;反之摸黑极易发生磕碰摔倒的意外。 而有了感应灯&…

智能照明系统

智能照明系统是利用先进电磁调压及电子感应技术&#xff0c;改善照明电路中不平衡负荷所带来的额外功耗&#xff0c;提高功率因数&#xff0c;降低灯具和线路的工作温度&#xff0c;达到优化供电目的照明控制系统。 一、基础介绍 智能照明系统是利用先进电磁调压及电子感应技术…

基于51单片机汽车智能灯光控制系统设计

汽车智能灯光控制系统设计 基于51单片机汽车智能灯光控制系统仿真设计功能介绍硬件设计仿真图原理图源程序&#xff1a;显示函数光照处理 器件清单&#xff1a;设计说明书&#xff1a;设计背景目标、研究内容和技术要求 设计资料清单 基于51单片机汽车智能灯光控制系统仿真设计…

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

全套资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86772153 全套资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86772153 目 录 摘 要 II 1 绪论 1 2 系统总体设计 3 2.1设计内容 3 2.2主要工作 3 3 硬件设计 4 3.1 电路…

智能灯光怎么做,智能照明要如何实现?

相信大家家中都应该装有照明灯&#xff0c;如何让我们的智能灯光系统熟悉于我们手&#xff0c;我们就要了解一下它的一些基础知识。 介绍之前&#xff0c;先了解一下什么是智能灯光系统&#xff1f; 智能灯光系统就是&#xff1a;可以远程遥控&#xff0c;灯光开关&#xff0…

毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)

文章首先介绍本系统所包含的功能&#xff0c;主要包含六方面功能&#xff0c;之后逐步分享开发过程&#xff0c;其流程如下&#xff1a;点亮灯带&#xff08;三极管&#xff09;→调节灯光亮度&#xff08;PWM&#xff09;→为系统添加远程控制功能→为系统添加语音识别功能→添…

Oracle的学习心得和知识总结(二十六)|Oracle数据库Real Application Testing测试指南(数据库回放)

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

【智慧照明】智能家居灯光控制系统

科技越来越发达&#xff0c;智能环保的理念也逐渐形成&#xff0c;应运而生了智能家居系统&#xff0c;其中智慧灯光控制系统是重要组成部分。照明&#xff0c;本就是整个家庭中不可缺少的部分&#xff0c;往往是实现家居智能化的第一步&#xff0c;方便家人的操作控制。 由于国…