简介:

BH1750FIV是一个采用标准IIC总线接口的环境光强传感器,此传感器适用于获得像键盘LCD和手机背光灯等光强。买的淘宝上贴好的模块,gy30。

指令码:

/*************************************************************/#define BHAddWrite     0x46      //从机地址+最后写方向位
#define BHAddRead      0x47      //从机地址+最后读方向位
#define BHPowDown      0x00      //关闭模块
#define BHPowOn        0x01      //打开模块等待测量指令
#define BHReset        0x07      //重置数据寄存器值在PowerOn模式下有效
#define BHModeH1       0x10      //高分辨率 单位1lx 测量时间120ms
#define BHModeH2       0x11      //高分辨率模式2 单位0.5lx 测量时间120ms
#define BHModeL        0x13      //低分辨率 单位4lx 测量时间16ms
#define BHSigModeH     0x20      //一次高分辨率 测量 测量后模块转到 PowerDown模式
#define BHSigModeH2    0x21      //同上类似
#define BHSigModeL     0x23      // 上类似
/*************************************************************/

BH1750FIV工六种模式分为连续型和一次型,连续型又分为高精度1、2和低精度模式,单次型同样分为高精度1、2和低精度模式。单次型与连续型的区别在于单次型读完一次数据就会自动转为PowerDown模式。

各模式测量所需时间

时序图

Bh1750采用标准的IIC总线结构,驱动程序也简单,从图可以看出设置高精度连续读模式先发送IIC起始信号再发送7位器件地址+1位写标志位也就是0X46,然后从机应答之后在发送模式指令等待ack应答后发送IIC停止信号这样一条模式就设置完毕。代码如下:

void bh_data_send(u8 command)
{do{iic_start();                      //iic起始信号iic_byte_write(BHAddWrite);       //发送器件地址}while(iic_wait_ack());           //等待从机应答iic_byte_write(command);          //发送指令iic_wait_ack();                   //等待从机应答iic_stop();                       //iic停止信号
} 

读取数据参照时序图也比较简单,先发送IIC起始信号,在发送7位器件地址+一位读写标志位,等待从机ACK应答,这时主机开始读取IIC数据,再主机读取完8位数据,主机要向从机发送ack应答信号告诉从机接收数据完毕,然后再读取低八位数据,主机发送非应答信号然后结束IIC通信。代码如下:

u16 bh_data_read(void)
{u16 buf;iic_start();                       //iic起始信号iic_byte_write(BHAddRead);         //发送器件地址+读标志位iic_wait_ack();                     //等待从机应答buf=iic_byte_read(1);              //读取数据buf=buf<<8;                        //读取并保存高八位数据buf+=0x00ff&iic_byte_read(0);      //读取并保存第八位数据iic_stop();                        //发送停止信号 return buf;
}

这样基本驱动就写完整了下面写一下综合测试代码:

int main(void)
{float datalx;                 USART1_Config();delay_init();iic_init();bh_data_send(BHPowOn);    //发送启动命令bh_data_send(BHReset);    //清除寄存器内容bh_data_send(BHModeH2);   //设置高精度为模式2delay_ms(180);            //设置完成后要有一段延迟,手册上说最大180ms就可以了while(1){datalx =bh_data_read()/1.2; //根据手册读取的数据除以1.2就得到单位位lx的光强度检测值。printf ("%f",datalx);delay_ms(500);}
}

串口输出结果:不同光强如图所示。

工程下载:点击打开链接

BH1750 STM32 驱动程序相关推荐

  1. stm32 2.4寸 TFT 触摸屏STM32驱动程序 2.4inch Arduino Display

    stm32 2.4寸 TFT 触摸屏STM32驱动程序 2.4inch Arduino Display 今日为准备一项比赛,选购了一款2.4寸 8位并口通信的TFT触摸屏,此屏幕原本是专为arduin ...

  2. ADS1015使用指南及STM32驱动程序

    ADS1015使用指南及驱动程序 ADS1015使用指南 简介 ADS1015的引脚介绍 ADS1015的寄存器介绍 寄存器相关配置 驱动程序 ADS1015使用指南 由于网上关于TI公司的ADS10 ...

  3. (标准库)直流无刷电机驱动(1)——简介及STM32驱动程序

    有朋友想看部分讲解可以(标准库)直流无刷电机驱动(2)--霍尔传感器定时器初始化 (标准库)直流无刷电机驱动(3)--霍尔传感器状态获取 ------------------------------- ...

  4. ADS8685/ADS8681/ADS8689的stm32驱动程序

    我在做ad的八路采集模块,用的是多路复用器配合芯片ads8685实现的,但在驱动ads8685芯片的时候费了不少时间,我把自己研究的驱动代码分享给大家,希望能够帮助大家做开发!

  5. AM2302+STM32驱动程序

    AM2302是一款通过数字信号输出来测量空气温湿度的传感器,可测量0~99.9%RH范围内的湿度,精度为±2%RH,分辨度为0.1 RH:可测量-40℃~80℃范围内的温度,精度为±0.5℃,分辨度为 ...

  6. 基于STM32的GPS模块驱动(AIR530)

    一.概述 由于做项目要用到GPS定位,于是在某宝购买了这款GPS模块.项目采用的MCU是STM32.废话少说,进入正题. 二.GPS模块简介 Air530 模块是一款高性能.高集成度的多模卫星定位导航 ...

  7. STM32驱动4寸ST7796S LCD-TFT屏

    STM32驱动4寸ST7796S LCD-TFT屏 简介 屏幕与STM32F103RCT6开发板接线 屏幕原理图 STM32驱动程序 屏幕显示效果 简介 屏幕驱动芯片ST7796S最大支持320*48 ...

  8. 第1讲、Cadence Allergo绘制小马哥DragonFly四轴飞行器PCB四层板教程简介

    初学者在学习单片机的时候大多都没有很明确的学习目的,所以往往学了很多课程之后,还是不能独立开发一个比较简单的项目,甚至不能完成一个简单项目的单独软件或者硬件部分的开发.这是因为大多数人是被动的.没有目 ...

  9. 2020年TI杯大学生电子设计大赛 无线运动传感器节点 备赛、参赛实录(历时一个月)

    转载请标明转载自:https://blog.csdn.net/weixin_44578655/article/details/109020022 9.5 清单已经出了一段时间了.买的少部分元器件也到了 ...

  10. 玩转电机驱动——DRV8848驱动直流减速电机(STM32F103)

    文章目录 前言 一.硬件基础 二.DRV8848驱动 1. DDRV8848芯片特性 2. 引脚的功能及类型 3. DRV8848电路图 三.STM32驱动程序 1. 电路分析 2. 程序编写 2.1 ...

最新文章

  1. C++继承中构造函数、析构函数调用顺序及虚析构函数
  2. Python之字符处理方法大全
  3. saspython知乎_评分模型效用度量指标如何解析?(含Python、R、SAS代码)
  4. 数据中心分解实验四--PC和VPC
  5. 数据结构和算法分析: 第五章 散列
  6. docker安装的环境
  7. 命令行执行php脚本中的$argv和$argc配置方法
  8. python硬件交互_Python操作系统库说明,pythonos,笔记
  9. socket网络编程--epoll小结
  10. 音视频开发(11)---基于B/S模式的视频监控系统设计
  11. HDU1253 胜利大逃亡【BFS】
  12. 数据结构笔记(三十二)--二叉排序树的基本概念与查找
  13. Unity3D 太空射击游戏学习笔记
  14. html修改progress背景色,html_progress元素以及样式修改
  15. 最新雷速问卷调查系统V7.15+ASP内核开发
  16. 2013年MBA、MPA、MPAcc入学考试英语辅导教材
  17. 一位码农的憧憬与迷茫
  18. linux命令如何分类,Linux系统命令的两种分类
  19. Whale帷幄 - 门面的力量丨提升进店客流
  20. OSG计算并绘制模型中每一个三角面片的法向量

热门文章

  1. qt textbrowser的边界框怎样改变颜色_专访天使投资人续沛川:用深度思考打破人生边界,拥有张力一生...
  2. python中seaborn报错These `style` levels are missing dashes解决办法
  3. Matplotlib-自定义虚线样式
  4. Cesium资料大集合
  5. android flex 开发环境搭建,Android6.0 MTK6737 开发环境搭建 · Younix’s Studio
  6. 切西瓜法实现微信抢红包功能
  7. ESP8266学习笔记(3)——GPIO接口使用
  8. 爬取京东辣条商品详情
  9. 揭开python的神秘面纱
  10. Salesforce学习 丨3张图搞懂SFDC认证考试体系及费用,看看30多个证你要怎么考