单片机-STM32 IIC通信(OLED屏幕)(十一)
一、屏幕的分类
1、LED屏幕:
由无数个发光的LED灯珠按照一定的顺序排列而成,当需要显示内容的时候,点亮相关的LED灯即可,市场占有率很高,主要是用于户外,广告屏幕,成本低。
LED屏是一种用发光二极管按顺序排列而制成的新型成像电子设备。由于其亮度高、可视角度广、寿命长等特点,正被广泛应用于户外广告屏等产品中。
采用LED光源进行照明,首先取代耗电的白炽灯,然后逐步向整个照明市场进军,将会节约大量的电能。近期,白色LED已达到单颗用电超过1瓦,光输出 25流明,也增大了它的实用性。
2、LCD屏幕:
液晶显示器,或称LCD(Liquid Crystal Display),为平面超薄的显示设备,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。
液晶显示器:是一种借助于薄膜晶体管驱动的有源矩阵液晶显示器,它主要是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面,
LCD屏幕目前是市面消费类电子设备主流屏幕,主要在电脑 电视机,智能手表......
3、OLED屏:
OLED (Organic Light-Emitting Diode)即有机发光二极管,在手机OLED上属于新型产品,被称誉为“梦幻显示器”。
OLED显示技术与传统的LCD显示方式不同,无需背光灯,采用非常薄的有机材料涂层和玻璃基板(或柔性有机基板),当有电流通过时,这些有机材料就会发光。而且OLED显示屏幕可以做得更轻更薄,可视角度更大,并且能够显著的节省耗电量。
2023年5月,三星展示了一款具有革命性的 12.4 英寸可卷曲 OLED 面板。
OLED也被称之为第三代显示技术。OLED不仅更轻薄、能耗低、亮度高、发光率好、可以显示纯黑色,并且还可以做到弯曲,如当今的曲屏电视和手机等。当今国际各大厂商都争相恐后的加强了对OLED技术的研发投入,使得OLED技术在当今电视、电脑(显示器)、手机、平板等领域里应用愈加广泛。
4、数码管显示:
数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体,通常大部分为氖加上一些汞和/或氩。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定,一般都是橙色或绿色。
二、基本概念
像素点:在显示屏幕上成像的最小单位
像素:在拍照的过程中,一次曝光采集的像素点个数
分辨率:在屏幕中,固定的尺寸大小中,集成的像素点个数
我们目前使用的屏幕分辨率:128*64
一行:128像素点
一列:64像素点
三、屏幕接口
1. GND 电源地
2. VCC 电源正(3~5.5V)
3. SCL OLED 的 D0 脚,在 IIC 通信中为时钟管脚
4. SDA OLED 的 D1 脚,在 IIC 通信中为数据管脚
我们使用的屏幕接口是:IIC
IIC通信
IIC通信主要用于低速传输,速度没有SPI传输高
IIC全双工还是半双工??
IIC只有一条数据线,所以肯定是半双工
IIC和主机连接:
I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
SDA--数据线
SCK--时钟线
IIC通信原理
IIC收发过程
1.假设微控制器 A 要发送信息到微控制器 B
• 微控制器 A 主机 寻址微控制器 B 从机
• 微控制器 A 主机 发送器 发送数据到微控制器 B 从机 接收器
• 微控制器 A 终止传输
2.如果微控制器 A 想从微控制器 B 接收信息
• 微控制器 A 主机 寻址微控制器 B 从机
• 微控制器 A 主机 接收器 从微控制器 B 从机 发送器 接收数据
• 微控制器 A 终止传输
IIC中的几个要点
位传输
由于连接到 I2C 总线的器件有不同种类的工艺 CMOS NMOS 双极性 逻辑 0 低 和 1高 的电平不是固定的 它由 VDD 的相关电平决定 , 每传输一个数据位就产生一个时钟脉冲
时钟为高电平--数据保持稳定,只能传输
时钟为低电平--数据可以切换
0101 0101
数据的有效性
为了让数据传输的过程时序和起始信号终止信号不冲突,制定了以下规则
SDA 线上的数据必须在时钟的高电平周期保持稳定 数据线的高或低电平状态只有在 SCL 线的时钟
信号是低电平时才能改变。
起始和停止条件
应答信号
确保数据的正确性
IIC通信中,每发一个字节的数据,都需要接收设备给出应答,代表当前接收到了数据
数据传输必须带响应 相关的响应时钟脉冲由主机产生 在响应的时钟脉冲期间 发送器释放 SDA 线
有效响应:低电平
错误响应:高电平
IIC通信的要点
依发数据为例:
1.主机寻址 ---7bit
2.从机给出应答信号,
3.主机发送数据给从机,每一个字节都需要从机给出响应信号
4.当传输结束,主机发送停止信号。
7 位的地址格式
7Bit的地址+1bit的读写标志位
在起始条件 S 后 发送了一个从机地址 这个地址共有 7 位紧接着的第 8 位是数据方向位 R/ W 0 表示发送 写 1 表示请求数据 读 数据传输一般由主机产生的停止位 P 终止 但是 如果主机仍希望在总线上通讯 它可以产生重复起始条件 Sr和寻址另一个从机 而不是首先产生一个停止条件 在这种传输中 可能有不同的读 写格式结合。
0--写操作
1--读操作
驱动器
SSD1306B--用于接收MCU的数据和指令,控制OLED屏幕的显示,以及字符的位置。
SSD1306 的每页包含了128 个字节,总共 8 页,这样刚好是 128*64 的点阵大小
需要详细的去了解SSD1306B驱动器,需要查看以下手册:
驱动器介绍:
接口:
6800/8080--并行接口
SPI通信---串行接口,全双工
IIC通信--串行接口,半双工(我们使用的)
在驱动器中IIC应用:
SCL OLED 的 D0 脚,在 IIC 通信中为时钟管脚
SDA OLED 的 D1 脚,在 IIC 通信中为数据管脚
不同的通信接口引脚定义:
SPI通信可以通过片选选择从设备,那么我们的IIC可以通过什么选择从设备?---IIC可以通过地址(设备的地址)
驱动器中关于IIC的解释--SDA SCK 从机地址:
DC的设置:
co dc
0 0 000 000
命令指令:0x00
co dc
0 1 000 000
有效数据:0x40
4.指令
列地址设置:
将列地址分为高四位和低四位,分别存储
页地址设置:
OLED屏的SSD1306B中,8行为一个页
图像显示内存分布:
5.IIC配置
OLED的初始化
如何将MCU中的内容发送至OLED屏幕呢????
英文字符显示:
从空格到~,总共95个
将以上95个字符取模:
首先先配置:
{0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20},/"A",0/
图片的显示方式:
获取图片:
iconfont-阿里巴巴矢量图标库
打开图片取模工具:
设置:
将生成的.c文件中的内容复制到工程中:
去掉数组前面的const关键字