[开发工具]

【新定义MCU开发板测评】 + 光照强度检测与显示

[复制链接]
1148|53
手机看帖
扫描二维码
随时随地手机跟帖
jinglixixi|  楼主 | 2022-11-21 09:31 | 显示全部楼层 |阅读模式
前面介绍的温度大气压传感器相近,光照强度传感器BH1750也是一种I2C接口的器件。
除了具体的功能处理不同外,其它的基本差不多。
BH1750方式与接收字节数据的函数如下:
void BH1750_SendByte(char data1)
{
    char i;
    OUTPUT_MODE_SET();
    SCLK=0;
    Delay_us(2);
    for (i=0;i<8;i++)
    {
        if(data1&0x80) SDIN=1;  
        else SDIN=0;  
        data1 <<= 1;
        SCLK=1;
        Delay_us(2);
        SCLK=0;
        Delay_us(2);
    }
}

char BH1750_RecvByte()
{
    char i;
    char data1 = 0;
    INPUT_MODE_SET();
    for (i=0;i<8;i++)
    {
        SCLK=0;
        Delay_us(2);
        SCLK=1;
        data1 <<= 1;
        SCLK=1;
        if(SDA_IN ) data1|=0x01;
        Delay_us(2);
    }
    SCLK=0;
    return data1;
}


写入寄存器的函数为:
void Single_Write_BH1750(char REG_Address)
{
    BH1750_Start();
    BH1750_SendByte(SlaveAddress);
    BH1750_RecvACK();
    BH1750_SendByte(REG_Address);
    BH1750_RecvACK();
    BH1750_Stop();
}


读取BH1750数据的函数为:
void Multiple_Read_BH1750()
{
    BH1750_Start();
    BH1750_SendByte(SlaveAddress+1);
    BH1750_RecvACK();
    BUF[0] = BH1750_RecvByte();
    BH1750_SendACK(0);
    BUF[1] = BH1750_RecvByte();
    BH1750_SendACK(1);
    BH1750_Stop();
    Delay(5);
}


读取并显示光照强度的函数为:
void Get_Sunlight_Value()
{
    int dis_data=0;
    float temp;
    char i=0;
    unsigned int sd;
    Single_Write_BH1750(0x01);
    Single_Write_BH1750(0x10);
    Delay(180);
    Multiple_Read_BH1750();
    for(i=0;i<3;i++)    dis_data=BUF[0];
    dis_data=(dis_data<<8)+BUF[1];
    temp=(float)dis_data/1.2;
    sd=temp;
    LCD_ShowNum(120,50,sd,5,YELLOW);
}


显示光强检测与显示的主程序为:
void main(void)
{
        P0CON = 0xFF;
        P0PH  = 0x00;
        P1CON = 0x00;
        P1PH  = 0x00;
        P2CON = 0xFF;
        P2PH  = 0x00;
        P3CON = 0xFF;
        P3PH  = 0x00;
        P4CON = 0xFF;
        P4PH  = 0x01;
        P5CON = 0xFF;
        P5PH  = 0x00;
        GPIO_Init(GPIO0, GPIO_PIN_4 | GPIO_PIN_5 |GPIO_PIN_6, GPIO_MODE_OUT_PP);
        GPIO_Init(GPIO2, GPIO_PIN_2, GPIO_MODE_OUT_PP);
        GPIO_Init(GPIO5, GPIO_PIN_3, GPIO_MODE_OUT_PP);
    GPIO_Init(GPIO4, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5, GPIO_MODE_OUT_PP);
        Delay(100);
        Lcd_Init();
    LCD_Clear(RED);
        BACK_COLOR=RED;
        LCD_Picturea();
        LCD_ShowChinese(80,10,0,16,YELLOW);
        LCD_ShowChinese(96,10,1,16,YELLOW);
        LCD_ShowChar(112,10,':',0,YELLOW);
        LCD_ShowChinese(80,30,2,16,YELLOW);
        LCD_ShowChinese(96,30,3,16,YELLOW);
        LCD_ShowChar(112,30,':',0,YELLOW);
        LCD_ShowChinese(80,50,4,16,YELLOW);
        LCD_ShowChinese(96,50,5,16,YELLOW);
        LCD_ShowChar(112,50,':',0,YELLOW);
        while(1)
        {
                  Get_Sunlight_Value();
                  Delay(1000);
        }
}


经程序的编译与下载,其运行效果如下图所示。
1.jpg
光强检测效果


使用特权

评论回复
pl202| | 2023-3-10 16:33 | 显示全部楼层
BH1750的效果不错。              

使用特权

评论回复
dspmana| | 2023-3-10 17:12 | 显示全部楼层
光敏是怎么转换为数值的              

使用特权

评论回复
jinglixixi|  楼主 | 2023-3-10 22:02 | 显示全部楼层
dspmana 发表于 2023-3-10 17:12
光敏是怎么转换为数值的

数字式传感器无需模拟量那样的转换

使用特权

评论回复
wwppd| | 2023-3-11 20:44 | 显示全部楼层
BH1750测量的范围阈值是多少

使用特权

评论回复
dspmana| | 2023-3-11 21:27 | 显示全部楼层
利用BH1750光照传感器来调节LED灯的亮度

使用特权

评论回复
saservice| | 2023-3-11 21:48 | 显示全部楼层
这个是模拟量变化数值吗?              

使用特权

评论回复
uytyu| | 2023-3-11 22:19 | 显示全部楼层
BH1750的才几块钱,数字传感器。

使用特权

评论回复
pl202| | 2023-3-11 22:26 | 显示全部楼层
使用的是硬件iic配置的吗?              

使用特权

评论回复
jinglixixi|  楼主 | 2023-3-12 11:22 | 显示全部楼层
saservice 发表于 2023-3-11 21:48
这个是模拟量变化数值吗?

数字式传感器

使用特权

评论回复
jinglixixi|  楼主 | 2023-3-12 11:22 | 显示全部楼层
pl202 发表于 2023-3-11 22:26
使用的是硬件iic配置的吗?

GPIO模拟

使用特权

评论回复
tifmill| | 2023-4-4 14:32 | 显示全部楼层
如何用bh1750实现20万lux光照度测量  

使用特权

评论回复
rosemoore| | 2023-4-4 16:02 | 显示全部楼层
BH1750连单片机接上拉电阻吗  

使用特权

评论回复
i1mcu| | 2023-4-4 20:46 | 显示全部楼层
如何找bh1750的在iic总线中的地址  

使用特权

评论回复
claretttt| | 2023-4-4 21:09 | 显示全部楼层
BH1750连单片机接上拉电阻吗  

使用特权

评论回复
alvpeg| | 2023-4-4 21:49 | 显示全部楼层
如何用bh1750实现20万lux光照度测量  

使用特权

评论回复
jinglixixi|  楼主 | 2023-4-5 10:34 | 显示全部楼层
alvpeg 发表于 2023-4-4 21:49
如何用bh1750实现20万lux光照度测量

查资料看看它的最大测量范围到多大

使用特权

评论回复
jackcat| | 2023-4-6 17:18 | 显示全部楼层
如何找bh1750的在iic总线中的地址  

使用特权

评论回复
wwppd| | 2023-4-6 18:10 | 显示全部楼层
bh1750的输入输出关系是什么  

使用特权

评论回复
lihuami| | 2023-4-6 18:17 | 显示全部楼层
怎么利用BH1750光照传感器来调节LED灯的亮度

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

2678

帖子

37

粉丝