最终效果展示

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[][];
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

模拟IIC总线多设备挂载(12864OLED屏幕+GY30光照传感器)的更多相关文章

  1. C51—模拟IIC总线实现EEPROM存取数据

    a - 什么是IIC总线 -什么是EEPROM -IIC总线的通信格式 模块化设计注解 整体代码 - 什么是IIC总线 IIC总线是同步通信的一种特殊形式,具有接线口少.控制简单.器件封装形式小.通信 ...

  2. 用I/O口模拟IIC总线协议遇到的一些问题

    最近做的一个项目,是基于IIC总线通信的传感器系统.由于另外一个传感器使用的是类IIC协议,而不是标准IIC,所以MCU不能与其通信,最后没有办法,只有通过I/O口模拟的方式实现IIC的总线通信.具体 ...

  3. 模拟IIC总线汇编程序软件包

    一.概述 为了非常方便地对 I2C 从器件进行快速的.正确的读写操作,我们为此而设计出虚拟 I2C 总线操作平台软件包.本软件包是主方式下的虚拟 I2C 总线软件包,只要用户给子程序提供几个主要的参数 ...

  4. RT-thread 设备驱动组件之IIC总线设备

    本文主要介绍RT-thread中IIC总线设备驱动,涉及到的主要文件有:驱动框架文件(i2c_core.c,i2c_dev.c,i2c-bit-ops.c,i2c_dev.h,i2c.h):底层硬件驱 ...

  5. IIC总线学习

    IIC总线 IIC协议简要说明: 1.2条双向串行线,一条数据线称为SDA,一条时钟线SCL,双向半双工 2.传输的设备之间只是简单的主从关系,主机可以作为主机发送也可以作为主机接收,任何时候只能由一 ...

  6. IIC总线

    一. 概述 1. IIC总线是PHILIPS公司推出的一种串口总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串口总线. 2. IIC总线只有两根双向信号线.一根是数据线SDA,一 ...

  7. i2c总线,设备,驱动之间的关系

    ------ 总线上先添加好所有具体驱动,i2c.c遍历i2c_boardinfo链表,依次建立i2c_client, 并对每一个i2c_client与所有这个线上的驱动匹配,匹配上,就调用这个驱动的 ...

  8. linux设备驱动归纳总结(八):1.总线、设备和驱动【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-109733.html linux设备驱动归纳总结(八):1.总线.设备和驱动 xxxxxxxxxxxx ...

  9. 对 IIC 总线的理解、调用函数以及常见面试问题

    一.IIC 总线概述: IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线.一根是数据线SDA, ...

随机推荐

  1. AT5200 [AGC038C] LCMs 莫比乌斯反演

    LINK:LCMs 随便找了道题练习了一下莫比乌斯反演 式子有两个地方化简错误 导致查了1h的错. 讲一下大致思路 容易发现直接做事\(n^2logn\)的. 观察得到数字集合大小为1e6. 可以设\ ...

  2. 4.23 子串 AC自动机 概率期望 高斯消元

    考虑40分. 设出状态 f[i]表示匹配到了i位还有多少期望长度能停止.可以发现这个状态有环 需要高斯消元. 提供一种比较简单的方法:由于期望的线性可加性 可以设状态f[i]表示由匹配到i到匹配到i+ ...

  3. idea修改maven项目版本号

    1 先安装插件 2 控制台执行命令  mvn build-helper:parse-version versions:set -DnewVersion=1.1-SNAPSHOT versions:co ...

  4. .Net Core 实体生成器

    实体生成器是什么? 实体生成器的功能就是自动将数据库中的表以及字段 转化成我们 高级编程语言中的实体类. 我们为什么要用实体生成器 在.net core开发环境下,我们可以使用efcore这个orm来 ...

  5. Redis分布式限流器

    以下文章来源于微信公众号:程序员内点事 ,作者:程序员内点事 请大家关注原作者 1. 什么是限流?为什么要限流? 限流是保证系统高可用的重要手段!!!由于互联网公司的流量巨大,系统上线会做一个流量峰值 ...

  6. 深入理解mysql-进阶知识点,启动项、系统变量、字符集介绍!

    mysql数据库是当前应用最为的广泛的数据库,在实际工作中也经常接触到.真正用好mysql也不仅仅是会写sql就行,更重要的是真正理解其内部的工作原理.本文先从宏观角度介绍一些mysql相关的知识点, ...

  7. 【NOIP2016】组合数问题 题解(组合数学+递推)

    题目链接 题目大意:给定$n,m,k$,求满足$k|C_i^j$的$C_i^j$的个数.$(0\leq i\leq n,1\leq j\leq \min(i,m))$. --------------- ...

  8. TF签名为什么这么稳定?TF签名找微导流!

      TF签名作为目前最稳定的签名方式收到了业界开发者们的认可,而在如今鱼龙混杂的签名平台中,应该如何选择客厅的TF签名平台呢?下面就一起来看看TF签名为什么这么稳定?TF签名找微导流!   TF签名的 ...

  9. Nginx.conf参数配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx; #Nginx用户及组:用户 组.window下不指定 worker_processes 8; #工作进程:数 ...

  10. 17、Java 三大特性之 多态

    知识点:多态的概念.java中多态的使用(方法重载和重写.子类对象的多态性) .多态使用的好处 1.什么是多态? 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程 ...