【新提醒】HC32L072开发板驱动 I2C接口光照传感器

单有了显示单元还只是解决了人机交互的部分问题,要让机器具备感知能力就离不开传感器。传感器的种类有许多种,BH1750光照传感器就是其中的一种,它是一种基于I2C接口的数字式传感器,因此无需对获取的数据进行标度处理。
该传感器与MCU的连接关系如下:
SCL ---PB6
SDA---PB7
为使该传感器工作,其相应引脚输出高低电平的语句为:
#define SCL_Set()        Gpio_SetIO(GpioPortB, GpioPin6)
#define SCL_Clr()        Gpio_ClrIO(GpioPortB, GpioPin6)
#define SDA_Set()        Gpio_SetIO(GpioPortB, GpioPin7)
#define SDA_Clr()        Gpio_ClrIO(GpioPortB, GpioPin7)
定义数据引脚为输入、输出功能的函数为:
  1. void IIC_INPUT_MODE_SET()

  2. {

  3. stc_gpio_cfg_t stcGpioCfg;

  4. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);

  5. stcGpioCfg.enDir = GpioDirIn;

  6. stcGpioCfg.enDrv = GpioDrvL;

  7. stcGpioCfg.enPu = GpioPuDisable;

  8. stcGpioCfg.enPd = GpioPdDisable;

  9. stcGpioCfg.enOD = GpioOdDisable;

  10. stcGpioCfg.enCtrlMode = GpioAHB;

  11. Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);

  12. }

  13. void IIC_OUTPUT_MODE_SET()

  14. {

  15. stc_gpio_cfg_t stcGpioCfg;

  16. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);

  17. stcGpioCfg.enDir = GpioDirOut;

  18. stcGpioCfg.enPu = GpioPuDisable;

  19. stcGpioCfg.enPd = GpioPdEnable;

  20. Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);

  21. }

复制代码

BH1750的初始化函数为:
  1. void BH1750_Init(void)

  2. {

  3. stc_gpio_cfg_t stcGpioCfg;

  4. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);

  5. stcGpioCfg.enDir = GpioDirOut;

  6. stcGpioCfg.enPu = GpioPuDisable;

  7. stcGpioCfg.enPd = GpioPdEnable;

  8. Gpio_Init(GpioPortB, GpioPin6, &stcGpioCfg);

  9. Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);

  10. }

复制代码

获取光照值得函数为:
  1. void Get_Sunlight_Value()

  2. {

  3. int dis_data=0;

  4. float temp;

  5. char i=0;

  6. unsigned int sd;

  7. Single_Write_BH1750(0x01);

  8. Single_Write_BH1750(0x10);

  9. delay1ms(180);

  10. Multiple_Read_BH1750();

  11. for(i=0;i<3;i++)

  12. dis_data=BUF[0];

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

  14. temp=(float)dis_data/1.2;

  15. sd=temp;

  16. OLED_ShowNum(0,2,sd,5,16);

  17. }

复制代码

显示演示效果的主函数为:
  1. int32_t main(void)

  2. {

  3. App_OLEDInit();

  4. OLED_Init();

  5. OLED_Clear();

  6. OLED_ShowString(0,0,"HC32l072_BH1750",16);

  7. OLED_ShowString(48,2,"lx",16);

  8. BH1750_Init();

  9. while (1)

  10. {

  11. Get_Sunlight_Value();

  12. delay1ms(1000);

  13. }

  14. }

复制代码

经程序的编译和下载,其运行效果如下图所示。

光照度测量效果图

演示代码:

(0)

相关推荐

  • 【RT-Thread笔记】BH1750软件包的使用

    BH1750简介 BH1750是一种用于两线制串行总线接口的16位数字型光强度传感器集成电路.利用它的高分辨率可以探测较大范围的光强度变化.(1lx~65535lx). 创建工程.验证 在RT-Thr ...

  • VL53L0X激光测距传感器.介绍篇

    http://wiki.dfrobot.com.cn/_SKU_SEN0245_VL53L0_Distance_Ranging_Sensor 本文的主角 就是这个核心,别看这么大.其实特别小一点点 V ...

  • 干货|手把手教你写单片机的结构体

    摘要:听说还有好多学单片机的小伙伴不会用结构体?指针和结构体是学单片机必须要掌握的,如果你C语言掌握的不牢,单片机根本学不到精髓,只能完成一些低级的项目.看得懂结构体并且能够灵活运用结构体才能说你入门 ...

  • 在SensorTile上使用MicroPython

    前几天终于将SensorTile传感器部分的MicroPython驱动移植成功,因此就想将传感器的基本使用方法和大家讨论一下,顺便也写写MicroPython的移植方法.去年就有网友希望介绍移植方面的 ...

  • 【新提醒】HC32L072开发板之 KEY控制LED

    开发板上LED与KEY的原理图如图1所示,可以用SW1和SW2分别控制DS1和DS2.其程序如下: 图1  LED与KEY原理图 实现控制功能的程序如下: /********************* ...

  • 【新提醒】初识HC32L072开发板

     本帖最后由 jinglixixi 于 2020-9-12 21:11 编辑 HC32L072开发板是一款新投入市场的开发板,有多新在我接到时连出厂DEMO都没装,下面看看主角的真容吧,如图1所示. ...

  • 树莓派Pico开发板硬件扩展接口及电源模块解析

    本博文根据树莓派基金会2021年1月21日公开的两部最新官方英文技术文献[1].[2]以及博主最近使用树莓派Pico开发板的一些思考与应用实践整理. 一.树莓派Pico开发板硬件扩展接口解析 树莓派P ...

  • 香橙派Orange Pi Zero2开发板26pin I2C测试

    香橙派Zero2开发板采用全志H616 四核 64位处理器,512MB/1GB 内存可选,集成千兆以太网.蓝牙5.0+双频WiFi.USB2.0.Micro-HDMI等端口,还可通过板上的13pin接 ...

  • A40i T3开发板外扩接口的功能测试

    A40i T3 开发板功能测试 硬件平台:飞凌嵌入式OKA40i-C/OKT3-C开发板, 基于国产芯片 A40i(工业级)  T3(车规级)设计研发. 此章节主要说明A40i T3开发板外扩接口的使 ...

  • 3-1-1安装ESP8266-NodeMCU开发板驱动

    NodeMCU开发板不是即插即用的设备,因此我们先要为它在电脑上安装驱动程序以后才能使用. 如果您还没有安装好NodeMCU驱动,那么请继续我们后面的学习.在本节课程里,我们将一步步引领着您安装Nod ...

  • 【新提醒】基于STM32F0驱动BQ40Z50电源管理芯片

     本帖最后由 yaosongjin 于 2020-9-4 12:01 编辑 最近用到BQ40Z50芯片,这个片子是走的SMBUS协议,与IIC协议类似,本以为很容易,把平台搭好后,发送命令没有响应,然 ...

  • 【新提醒】盘点智能家居中常用的传感器运用

    智能家居是个系统的产品概念,而传感器是把传统家居设备如门窗.灯光等连接起来的"桥梁".通过各式各样的传感器设备,实现了智能家居的场景化,也让用户真正享受到智能家居带来的乐趣.那智能 ...

  • 【新提醒】高新技术:物联网时代的智能传感器

    近年来,产品/技术的突破性进展,应用场景的持续深入,行业标准的陆续出台,上下游市场需求的不断提升,都推动着传感器产业日益走向成熟.如今,"没有传感器就没有现代科学技术"已然成为全世 ...