• 模拟IIC总线多设备挂载(12864OLED屏幕+GY30光照传感器)


    最终效果展示

    OLED屏幕和GY30光照传感器(BH1750FVI)都连接在一个IIC(I2C)总线上,所以只需要接4根线即可。获取到的光照强度可以在OLED上实时显示并通过串口打印。IIC是IO模拟IIC,方便后续代码的移植到各个单片机平台。

    硬件汇总

    单片机:STM32F103C8T6

    OLED:0.96寸、128*64、驱动芯片是SSD1306(市场上常用)

    光照强度传感器:GY-30,BH1750FVI主控即可

    接线方法

    IIC总线:SCL--PA1  、 SDA--PA0

    串口:TX--PA9  、 RX--PA10

    GY30与OLED供电均为3.3V

     

              

    IIC总线的原理及特点

    总线结构

     

    l  总线只需要两个数据线,分别为:

    SCL:时钟线,维护传输时钟

    SDA:数据线,传输的数据位

    l  总线是板级总线,连接线一般不超过两米

    l  总线的数据线和时钟线均需要上拉电阻(1~10K,一般为2.2k)

    l  总线所有设备均需共地

    l  器件地址需要保证唯一性,不做任何设备屏蔽的情况下,总线可挂载设备为127个,因为器件地址默认为写地址,读地址需要将其最后一位变为1。

    l  IIC器件地址罗列:

    12864 OLED屏幕:0x78

    GY30光照传感器:0x46 或者 0xB8

     

    IIC总线的信号有以下类别:开始信号、数据信号、应答信号、停止信号

    空闲状态:

    当时钟线和数据线都为高电平是,IIC总线上的所有从设备都处于空闲状态。

    开始信号:

    当时钟线和数据线都为高电平是,数据线从高电平到低电平跳变,则为开始信号

     

    数据信号:

    时钟线高电平时,数据线持续为低电平,当时钟线降为低电平后,IIC设备将受到1位数据0;时钟线为高电平时,数据线持续为高电平,当时钟线降为低电平后,IIC设备将收到1位数据1。在时钟线高电平的过程中,数据线必须保持稳定,不能变化,否则的话将被误认为是控制信号。

    应答信号:

    应答信号一般是在8个数据位发送完成后就需要产生一个

     

    停止信号:

    当时钟线为高电平、数据线为低电平是,数据线从低到高的跳变,则为停止信号

     

     12864 OLED屏幕简介

     

    l  每个像素点自发光、较LCD屏幕去掉了高亮背光灯,达到了更加省电的效果。

    l  体积可更小,厚度可更薄

    l  驱动芯片为SSD1306

    l  分辨率:128*64

    l  电压:3.3V/5V

    l  通信方式:IIC

    驱动原理分析:

    OLED,又称为有机电激光显示、有机发光半导体,其是128*64=8192个像素点组成,每个像素点可以自发光,屏幕可以不能动态改变颜色和灰度值(透明度),所以可以认为只是控制了8192个像素点的亮和灭来显示各种图形或字符。

     

    这里两个是字库声明数组:

    const unsigned char F6x8[][6];
    const unsigned char F8X16[];

    可以看出字符ASCII码字符有大和小两个规格,分为:

    6*8:1个字符占用行6个像素,列8个像素

    8*16:1个字符占用行8个像素,列16个像素

    另外汉字字库太大的原因,所以汉字基本都是需要用到的自己再添加进去,通常为16*16像素。

    GY-30光强传感器

     

    l  其使用的主芯片为ROHM-BH1750FVI

    l  供电3-5V

    l  光强测量范围:1-65535勒克斯(Lux或lx)

    l  C传感器内置16bitAD转换器

    l  直接数字输出,输出带有单位值,无需复杂计算

    l  通讯方式IIC

     

    接线说明

     

    IIC地址引脚是确定确定模块地址的,模块有两个地址可选,如果ADDR引脚接VCC则模块IIC地址为0xB8,如果ADDR引脚接GND则模块IIC地址为0x46

    BH1750FVI手册重要提取

    通讯指令集合

    测量模式说明

     

    我们建议您使用H分辨率模式。,H分辨率模式下足够长的测量时间(积分时间)能够抑制一些噪声(包括 50Hz/60Hz)。同时, H分辨率模式的分辨率在 1x下,适用于黑暗场合下(少于 10 1x), H分辨率模式2同样适用于黑暗场合下的检测。

    异步复位和重置的命令"00000111"

    1、    异步重置电源供应时序基础上将所有寄存器复位序列。请参考本页的 "VCC和DVI电源供给时序图供电序列。在DVI="L"时是电源掉电模式。

    2、    重置命令重置命令仅对光强度数据寄存器起作用 (指令值为"0")。电源供应时序对其无影响。它的作用是原来清除之前的测量结果。这个命令不能在断电模式 ,所以在输入该指令前要设置为通电模式。

    程序编写,实战

    • IIC编程使用IO模拟IIC,方便后期代码移植到其它单片机平台

    • OLED屏幕与GY30光照传感器(BH1750FVI)都在一条IIC总线上,数据线占用IO资源只需要两条

    • OLED实时显示光强和串口实时输出光强

    • 光强携带标准单位Lux

    原文链接:https://www.cnblogs.com/dongxiaodong/p/13585644.html

     如需资料可加本人微信

     

    微信号:dongxiaodongwx

  • 相关阅读:
    shell75叠加
    shell73while ping测试脚本
    shell72while读文件创建用户
    shell70批量修改远程主机的ssh配置文件内容
    shell68批量创建用户(传多个参数)
    js限制input输入
    php获取textarea的值并处理回车换行的方法
    strtr对用户输入的敏感词汇进行过滤
    mysql执行语句汇总
    js倒计时防页面刷新
  • 原文地址:https://www.cnblogs.com/dongxiaodong/p/13585644.html
Copyright © 2020-2023  润新知