当前位置: 首页 > news >正文

嵌入式基础--第七周作业--OLED显示

一.I2C协议的基本原理和时序协议
一、I2C 协议的基本原理
I2C协议的核心设计思想是用最少的连线实现多个器件之间的通信。它只需要两根线:

  1. SDA:串行数据线,用于传输数据。

  2. SCL:串行时钟线,用于同步时钟。

  3. 核心特性
    半双工通信:数据可以在SDA线上双向流动,但同一时刻只能有一个方向。
    同步通信:所有通信都由主设备产生的SCL时钟信号同步。
    多主从结构:总线上可以连接多个主设备和多个从设备。
    地址寻址:每个从设备都有一个唯一的7位或10位地址,主设备通过地址来选择与哪个从设备通信。
    低速通信:标准模式速度为100kbps,快速模式为400kbps,高速模式可达3.4Mbps。
    线与逻辑:SDA和SCL线都是开源输出 或集电极开路结构。这意味着设备只能将总线拉低(输出0),而不能主动拉高(输出1)。总线通过上拉电阻被拉到高电平。这种设计实现了“线与”功能,避免了多个设备同时输出时的总线冲突。

  4. 总线上的角色

主设备:负责发起和终止一次传输,产生时钟信号SCL。
从设备:响应主设备的寻址,接收或发送数据。

二、I2C 时序协议详解

一次完整的I2C通信由起始条件、数据传输和停止条件组成。数据传输的基本单位是字节(8位),每个字节传输后都跟随一个应答位。

  1. 起始条件

当SCL线为高电平时,SDA线发生一个从高到低的跳变。
这个独特的边沿信号告诉总线上所有设备:一次传输开始了。

  1. 停止条件

当SCL线为高电平时,SDA线发生一个从低到高的跳变。
这个信号表示本次传输结束,总线将被释放。

  1. 数据传输与应答

数据传输以字节(8位) 为单位,从最高有效位 开始依次发送。每个字节后必须紧跟一个应答位。

数据有效性:在SCL为高电平期间,SDA线上的数据必须保持稳定。只有在SCL为低电平时,SDA线上的数据才允许变化。
应答:每传输完一个字节(8位数据),发送方(无论是主设备还是从设备)会释放SDA线。接收方需要在第9个时钟脉冲期间将SDA线拉低,表示已成功接收到数据。
非应答:如果接收方在第9个时钟脉冲期间没有将SDA线拉低(即SDA线因上拉电阻保持高电平),则表示非应答。这通常意味着:
接收方未准备好或无法接收。
主设备读取数据时,用它来告诉从设备“不要再发送数据了”。

三、完整的数据传输帧格式
一次完整的I2C通信包含以下几个部分:

  1. 主设备写数据到从设备

  2. 起始条件

  3. 从设备地址(7位) + 写标志位(0)

  4. 从设备应答

  5. 数据字节(8位)

  6. 从设备应答
    (可重复多个数据字节)

  7. 停止条件

  8. 主设备从从设备读取数据

  9. 起始条件

  10. 从设备地址(7位) + 读标志位(1)

  11. 从设备应答

  12. 从设备发送数据字节(8位)

  13. 主设备应答 (如果希望继续读)或 主设备非应答 (如果这是最后一个字节)
    (可重复多个数据字节,最后一个字节主设备发NACK)

  14. 停止条件

  15. 复合格式(在一次传输中改变方向)
    这种方式非常常见,例如先告诉从设备要读取哪个寄存器地址,然后再读取数据。

  16. 起始条件

  17. 从设备地址 + 写(0)

  18. ACK

  19. 寄存器地址(数据字节)

  20. ACK

  21. 重复起始条件 (注意,这里不是停止条件!)

  22. 从设备地址 + 读(1)

  23. ACK

  24. 从设备发送数据字节

  25. 主设备NACK (假设只读一个字节)

  26. 停止条件(P)
    重复起始条件(Repeated Start) 的波形与起始条件完全相同。它可以在不释放总线(不发送停止条件)的情况下开始一次新的通信,保证了操作的原子性。

二.0.96寸OLED屏的工作原理和汉字点阵的显示原理
一、 硬件结构和工作原理

  1. 像素结构

单个OLED像素:
┌─────────────────┐
│ 阴极(透明电极) │ ← 电子注入
│ 有机发光层 │ ← 电子空穴复合发光
│ 阳极 │ ← 空穴注入
└─────────────────┘

  1. 矩阵驱动原理

OLED屏采用被动矩阵(PMOLED) 驱动:

行扫描:逐行选通
列数据:同时提供该行所有列的数据
快速刷新:通过人眼视觉暂留效应形成完整图像

  1. SSD1306驱动芯片功能

显示数据RAM(GDDRAM):128×64位,直接映射到屏幕像素
命令解析器:接收并执行配置命令
时序控制:产生行、列扫描时序
DC/DC转换:产生OLED所需的高电压

  1. 通信接口

I2C接口接线(以Arduino为例):

Arduino OLED
GND --- GND
3.3V --- VCC
A4 --- SDA
A5 --- SCL

二、汉字点阵显示原理

  1. 点阵显示基本概念

汉字在数码显示设备中都是以点阵形式存储和显示的。

  1. 汉字编码体系

2.1 字符编码

ASCII码:英文字符,1字节表示
GB2312:简体中文,2字节表示
Unicode:全球统一字符集

2.2 GB2312编码结构

第一个字节:0xA1-0xFE(区码)
第二个字节:0xA1-0xFE(位码)
区码 = 第一个字节 - 0xA0
位码 = 第二个字节 - 0xA0

  1. 汉字点阵数据存储

3.1 常见点阵规格

16×16点阵:适合小字号显示,32字节/汉字
24×24点阵:中等字号,72字节/汉字
32×32点阵:大字号,128字节/汉字

3.2 16×16点阵数据结构(最常用)

每个16×16点阵汉字需要32字节存储:

前16字节:显示上半部分(0-7行)
后16字节:显示下半部分(8-15行)

字节内位顺序:通常高位在上,低位在下

字节数据:0x08 (二进制 00001000)
像素映射:□ □ □ ■ □ □ □ □ (0=灭,1=亮)
7 6 5 4 3 2 1 0 (位序号)

  1. 字库寻址计算

4.1 区位码计算

// 假设汉字"中"的GB2312编码为:0xD6, 0xD0
unsigned char code_h = 0xD6; // 高字节
unsigned char code_l = 0xD0; // 低字节

// 计算区位码
unsigned char qu_ma = code_h - 0xA0; // 区码 = 54
unsigned char wei_ma = code_l - 0xA0; // 位码 = 48

4.2 点阵数据偏移量计算

// 16×16点阵,每个汉字32字节
unsigned long offset = ((qu_ma - 1) * 94 + (wei_ma - 1)) * 32;

  1. OLED显示汉字的具体实现

5.1 显示内存映射

SSD1306的GDDRAM结构:

8页(Page):每页8行,共64行
128列:每列对应1个像素宽度
字节组织:每列的1个字节代表垂直的8个像素

Page0: 第0-7行
Page1: 第8-15行
Page2: 第16-23行
...
Page7: 第56-63行

5.2 16×16汉字显示过程

显示位置计算:
// 在(x,y)位置显示16×16汉字
page = y / 8; // 计算页地址
page_offset = y % 8; // 计算页内偏移

数据写入流程:

  1. 设置起始地址:指定显示起始页和列

  2. 写入上半部分:前16字节数据

  3. 切换到下一页:设置下一页地址

  4. 写入下半部分:后16字节数据

  5. 实际开发中的字库处理

6.1 字库存储方式

外部Flash:存储完整字库
内部Flash:存储常用汉字
SD卡:动态加载字库
在线字库:通过网络获取

6.2 常用取模方式

逐列式:按列顺序取模(最常用)
逐行式:按行顺序取模
逆向取模:字节内位顺序反转

6.3 取模软件设置示例

点阵格式:阴码(1亮0灭)
取模方式:逐列式
取模走向:逆向(低位在前)
输出格式:C51格式


http://icebutterfly214.com/news/268/

相关文章:

  • TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南 - 指南
  • Navicat 17 超详细保姆级下载安装教程:附激活工具使用步骤​
  • el-date-picker样式修改
  • 浅谈 Agent 开发工具链演进历程
  • 电梯调度算法结对编程作业
  • 2025质量可靠的义乌刺绣工厂推荐榜
  • DP1312多协议高性能读卡芯片支持A/B/Felaca/18092智能门锁读卡器模拟卡兼容PN512 - 动能世纪
  • 2025年10月兰花油品牌推荐榜单:多维度深度对比与选择指南
  • 2025 年1KV 冷缩硅橡胶电缆附件,冷热缩电缆附件,绕包电缆附件,熔接电缆附件厂家最新推荐,产能、专利、环保三维数据透视
  • 低代码开发便捷的技术深度解析
  • 2025年浅拾兰花双萃致臻精华油:从成分与科技维度解析其护肤功效
  • 销售公司绩效考核全攻略:维度、原则与数字化赋能方案
  • 题解:P4434 [COCI 2017/2018 #2] ​​Usmjeri
  • 小程序-跳转到公众号
  • 如何解决一堆向量的问题?10、Self-attention - -一叶知秋
  • 洞悉过往,一目了然:浅述视频融合平台EasyCVR如何实现海量视频录像的智能检索与高效回看
  • 2025年国内外五款AI编程工具深入对比与推荐排行
  • CSPS 前后的话
  • 2025 年 10 月云仓 ERP,云仓 saas 系统,云仓代发系统公司最新推荐,技术实力与市场口碑深度解析
  • iOS混淆实战用多工具组合把IPA加固做成可复用的工程能力(iOS混淆 IPA加固 无源码混淆
  • cyclonessd ROS2 lidar topic 数据丢帧 系统配置
  • 2025 年 10 月 WMS 系统,WMS 软件,wms 仓储管理系统公司最新推荐,聚焦资质、案例、售后的优质机构深度解读
  • Go语言测试全攻略:从单元测试到模糊测试
  • 2025 年 10 月进销存 erp,供应链 erp,零售 ERP 公司最新推荐,聚焦资质、案例、售后的五家机构深度解读!