当前位置: 首页 > 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://www.hn-smt.com/news/268/

相关文章:

  • 【IEEE出版 | 重庆邮电大学主办 | 多届次、高层次】第六届人工智能与计算机工程国际学术会议(ICAICE 2025)
  • Docker容器里面部署的Jenkins的Java17升级到21版本(无需删除之前容器,内部在线升级) - 攻城狮
  • 报表知识
  • 渐进过程中大O与小o混用
  • 消息队列的有序性
  • 【LTDC】DMA2D —— 嵌入式系统的 GPU
  • unity管理器设计:Manager of Managers
  • iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。
  • 本地运行nginx服务,模拟线上环境访问项目
  • git提交远程项目步骤
  • 2025 年搅拌器搅拌设备,侧入式搅拌设备,斜插式揽拌设备,卧式搅拌设备厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 2025 年环保搅拌设备,搅拌装置设备,框式搅拌设备厂家最新推荐,实力品牌深度解析采购无忧之选!
  • CorelDRAW的shell扩展ShellXP.dll导致资源管理器explorer.exe卡死/冻结/无响应/挂起
  • 2025 年定制矿车,大型矿车,固定式矿车厂家最新推荐,产能、专利、环保三维数据透视
  • 醒图电脑版下载与安装教程(2025最新版)
  • 2025 年江苏电缆附件,热缩电缆附件,冷缩电缆附件,预制电缆附件厂家最新推荐,产能、专利、环保三维数据透视
  • Android Studio 使用glibc2.28的版本
  • 2025年10月兰花油品牌推荐榜:五款精华油深度对比与选购指南
  • 2025年浅拾兰花双萃致臻精华油:从成分与技术维度解析其护肤功效
  • 2025 年进口螺杆泵,萨伯特螺杆泵,污泥螺杆泵厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 为什么 AI 模型的最小理解单位是「特征」?
  • 2025年移动车载变电站厂家最新推荐榜:陕西四方华能凭硬实力成优选
  • XiaoQuQu 的 2025 CSP-S 第二轮模拟 ROUND2
  • 2025年硬密封闸阀厂家权威推荐榜单:手动闸阀/明杆闸阀/法兰闸阀源头厂家精选
  • 深入解析:ArcGIS Manager Server Add Host页面报错 HTTP Status 500
  • 2025修护洗/二硫化硒去屑/香氛/控油蓬松/洗发水品牌推荐:MASIL玛丝兰引领功效细分赛道,哪个牌子好?看实测口碑榜
  • AOP面向切面编程思想
  • 如何找到心仪的 ChatBI 智能体?Aloudata Agent 推荐给你
  • 10月第二篇
  • 天翼云智慧上云月特惠来袭,智算上云正当时!