IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 15.STC15W408AS单片机驱动BH1750FVI光强度传感器 -> 正文阅读

[嵌入式]15.STC15W408AS单片机驱动BH1750FVI光强度传感器

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

在上一篇中,我们介绍了IIC驱动OLED显示屏。这一篇是IIC驱动BH1750FVI光强度传感器。其实在之前的树莓派系列中也写过BH1750FVI光强度传感器的文章17.树莓派3B+ 驱动BH1750FVI光强度传感器

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

产品介绍

????BH1750FVI?是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。(1lx-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_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','6','7','8','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[result%10000/1000],1);       // 千
    OLED_ShowChar(20,0,num[result%10000%1000/100],1);    // 百
    OLED_ShowChar(30,0,num[result%10000%1000%100/10],1);// 十  
    OLED_ShowChar(40,0,num[result%10],1);                // 个
    delayms(2000);
  }
}


显示效果图

?

图片

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 12:01:45  更:2021-08-27 12:03:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 17:45:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计