基于51单片机的光照强度测量与调节的照明系统

本文介绍了如何使用51单片机通过I2C总线连接并驱动GY-30光照强度模块,实现光照强度的测量和数码管显示。当接收到串口命令后,单片机会采集光照数据并转换为适合显示的值,同时控制P1口的LED灯亮度,以保持光照强度稳定。代码包括加载、读取数据的步骤,并提供了相关资源链接。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


概要

51单片机用用IO口模拟I2C总线驱动GY-30 光照强度模块测量周围的光照强度,给单片机串口发送一个任意字符串就可以触发单片机采集一个光照强度值,打印到电脑的串口调试助手,同时单片机的数码管也显示光照强度值,由于数码管显示是动态显示的,所以数据采集和显示必须分开,否则数码管是不能正常显示的。采集回来的光照强度根据程序设定的逻辑会适当点亮P1口的LED灯的数量以控制光照强度在一个稳定的范围。


提示:以下是本篇文章正文内容,下面案例可供参考

一、51单片机照明系统是什么?

![51单片机照明系统](https://img-blog.csdnimg.cn/2021070316555173.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25pcnV4aTA0MDE=,size_16,color_FFFFFF,t_70#pic_center)

51单片机串口输出打印
光照传感器型号

二、使用步骤

代码下载地址:https://www.cirmall.com/circuit/18423/
直接跳转

1.加载代码

代码如下(示例):

void main()
{
float temp;
delay_nms(200);
Init_BH1750();
init();

  P1=0xFF;

while(1)
{

Single_Write_BH1750(0x01);   // power on
Single_Write_BH1750(0x10);   // H- resolution mode

 delay_nms(180);            

Multiple_Read_BH1750();       

dis_data=BUF[0];
dis_data=(dis_data<<8)+BUF[1];

temp=(float)dis_data/1.2;

conversion(temp);    

2.读入数据

代码如下(示例):

void Multiple_read_BH1750(void)
{ uchar i;
BH1750_Start();
BH1750_SendByte(SlaveAddress+1);

 for (i=0; i<3; i++)                 
{
    BUF[i] = BH1750_RecvByte();         
    if (i == 3)
    {

       BH1750_SendACK(1);            
    }
    else
    {		
      BH1750_SendACK(0);             
   }

}

BH1750_Stop();                       
Delay5ms();

}


总结

由于数码管显示是动态显示的,所以数据采集和显示必须分开,否则数码管是不能正常显示的。采集回来的光照强度根据程序设定的逻辑会适当点亮P1口的LED灯的数量以控制光照强度在一个稳定的范围。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daodanjishui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值