资讯详情

15.STC15W408AS单片机驱动BH1750FVI光强度传感器

https://mp.weixin.qq.com/s/id9sVd_uRSxIEgwgwlw31A

在最后一篇文章中,我们介绍了它IIC驱动OLED显示屏。这篇文章是IIC驱动BH1750FVI光强传感器。事实上,它也写在以前的覆盆子系列中BH1750FVI17.树莓派3B 驱动BH1750FVI光强传感器

这里是一个IIC两个挂载在总线上IIC从设备。

产品介绍

BH1750FVI它是一种用于两线串行总线接口的数字光强度传感器集成电路。该集成电路可根据收集的光强数据调整液晶或键盘背景灯的亮度。利用其高分辨率,可以探测到大范围的光强度变化。lx-65535lx)

产品特点

1.支持I2C BUS接口(f/s Mode Support)。

2.光谱灵敏度特征(峰值灵敏度波长典型值:560nm)。

3.输出相应亮度的数字值。

4.相当于广泛的输入光范围(相当于1-65535lx)。

5.通过降低功率功能,实现低电流。

6.通过50Hz/60Hz实现除光噪声功能测定7.支持1.8V逻辑输入接口。

8.没有其他外部部件。

9.光源依赖性弱(白炽灯、荧光灯、卤素灯、白光LED,日光灯)。

10.有两种选择I2C slave地址。

11.影响可调测量结果的因素是光入口大小。

12.使用此功能计算1.1 lx到100000 lx马克斯/分钟范围。

13.最小误差变化在±20%。

14.红外线的影响很小。

产品应用

手机、液晶电视、笔记本电脑、便携式游戏机、数码相机、数码相机、汽车定位系统、液晶显示器

图片

描述:

?PD 光敏二极管接近人眼反应。(Photo diode with approximately human eye response.)

?AMP 集成操作放大器:将 PD 电流转换为 PD 电压。

?ADC 获取模数转换 16 位数数据。

?Logic IC Interface(逻辑 IC 光强度计算和界面) I2C 总线接口包括以下寄存器:数据寄存器→存储光强数据。初始值为:万万_0000_0000_一万。测量时间寄存器→存储时间测量数据。初始值为:0100_0101”。

?OSC 内部振荡器(典型时钟频率值:320kHz)。该时钟为内部逻辑时钟。

从这个框图也可以看出,芯片的内部模块相对简单,实际使用并不复杂。

测量程序步骤

指令集合结构

测量时序实例从写指示到读出测量结果

#define IIC_SCL P10 // 时钟 #define IIC_SDA P11 // 数据

这个是IIC和单片机IO口的连接。

驱动代码

#include "bh1750fvi.h" #include "iic.h"  #define  BH1750FVI_SlaveAddress 0x46 // 设备地址 #define  BH1750FVI_DOWN 0x00   // 断电指令 #define  BH1750FVI_ON 0x01     // 通电指令 #define  BH1750FVI_RESEET 0x07 // 复位  #define  BH1750FVI_CON_H 0x10   // 连续分辨率模式, 1lx, 120ms #define  BH1750FVI_CON_H2 0x11  // 连续分辨率模式, 0.5lx, 120ms #define  BH1750FVI_CON_L 0x13   // 连续低分辨率模式,4lx, 16ms #define  BH1750FVI_ONE_H 0x20   // 高分辨率模式,1lx, 120ms #define  BH1750FVI_ONE_H2 0x21  // 高分辨率模式,0.5lx, 120ms #define  BH1750FVI_ONE_L 0x23   // 低分辨率模式,4lx, 16ms   // 往BH1750FVI写数据 void BH1750FVI_Write_Reg(u8 reg) {   IIC_Start();   IIC_Write_Byte(BH1750FVI_SlaveAddress);   IIC_Write_Byte(reg);   IIC_Stop();  } // 读取1字节数据 u8 BH1750FVI_Read_Reg(u8 reg) {   u8 dat;   IIC_Start();   IIC_Write_Byte(BH1750FVI_SlaveAddress);   IIC_Write_Byte(reg);   IIC_Start();   IIC_Write_Byte(BH1750FVI_SlaveAddress   1);   dat = IIC_Read_Byte();   IIC_Stop();   return dat; } u16 BH1750FVI_Read_all() {   u8 i;   u8 BUF[8];   u16 dat;   IIC_Start();   IIC_Write_Byte(BH1750FVI_SlaveAddress   1);   for(i = 0; i < 2; i  )   {     BUF[i] = IIC_Read_Byte();     if(i == 2){       IIC_Send_Ack(1);     }else{       IIC_Send_Ack(0);     }   }   IIC_Stop();   dat = BUF[0]<<8   BUF[1];   return dat; }  u16 BH1750FVI_Measure() {   BH1750FVI_Write_Reg(BH1750FVI_ON);   BH1750FVI_Write_Reg(BH1750FVI_CON_H);   return BH1750FVI_Read_all(); }  void BH1750FVI_Init() {   BH1750FVI_Write_Reg(BH1750FVI_DOWN);   BH1750FVI_Write_Reg(BH1750FVI_ON); }

main.c

#include "stc15.h" #include "delay.h" #include "bh1750fvi.h" #include "oled.h"  u8 num[] = 0,1,2,3,4,5'9'};  void main() {   u16 result;   BH1750FVI_Init();   OLED_Init();      //初始化OLED     OLED_Clear()    ;    while (1)   {     result = BH1750FVI_Measure();     OLED_ShowChar(0,0,num[result/10000],1);             // 万     OLED_ShowChar(10,0,num[result000/1000],1);       // 千     OLED_ShowChar(20,0,num[result00000/100],1);    // 百     OLED_ShowChar(30,0,num[result000001);//// 十       OLED_ShowChar(40,0,num[result],1);                // 个     delayms(2000);   } }

显示效果图

标签: u型光式传感器系列con021传感器光强度传感器bh1750fvi

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台