fuzidage
专注嵌入式、linux驱动 、arm裸机研究

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

1.OLED显示面板介绍

以QG-2864TMBEG01这款OLED为例,可见它支持Parallel/i2c/SPI这3种方式对它进行控制,这里仅对它进行SPI控制。它的product Specification见附件。

并行接口时序:

 

SPI串行接口时序

 

Tr/Tf: 表示spi clk上升/下降延不能超过40ns

Tclkl/Tclkh: 表示spi clk低/高电平持续至少20ns

Tcycle: 表示spi clk一个时钟周期至少100ns

Tdsw/Tdhw: 表示spi data的建立/持续时间至少15ms

Tcss:片选建立时间至少20ns

Tcsh:片选持续时间至少10ns

Tas/Tah:地址建立/持续时间至少15ns

上电序列:

 

掉电序列:

 

进入/退出睡眠模式:

 

2.OLED显示原理

QG-2864TMBEG01这款为例,OLED长有128个像素,宽有64个像素,共128*64=8,192 像素。每个像素用1bit来表示,为1则亮,为0则灭。所以每一个字节数据Data表示8个像素,Data0~Data1023,如上图。 那要怎么在显存里面存放Data数据。

①怎么发地址和数据

2.1页地址模式

QG-2864TMBEG01 OLED主控有三种地址模式,我们常用的是页地址模式,发送0x20命令,再发送0x02命令,进入页地址模式,如下图:

 

它把显存的64行分为8页,每页对应8行;选中某页后,再选择某列。因此共用页地址,也就是8行都共用同一个页地址,列地址独立,所以page0~page7,col0~col127。然后就可以往里面写数据了,每写一个数据,列地址就会加1,一直写到最右端的位置,页地址加1,会自动跳到最左端。通过命令来实现发送页地址和列地址,其中列地址分为两次发送,先发送低字节,再发送高字节。如下图,假设每个字符数据大小为8x16像素,假如第一个字符位置为(page,col),相邻的右边就是(page,col+8),写一个字符需要先发8字节,然后跳到下一页坐标就是(page+2,col),发送8字节数据。一个字符需要2个page*8个col,由于一个像素占1个bit, 所以一个Data占1byte, 一个字符占16 byte。

 

2.1.1 设置page addr

 

一共就8页,因此X2~X0,有3bit足够了。比如选中page0,则x2~x0 = 000.

2.1.2 设置col addr:

 

分两次发送, 先发送列地址低4位,再发送列地址高4位;

如何发送一个字符‘A’,显示到OLED.

1.取得字模

2.发送页/列地址

3.发送数据

 

posted on   fuzidage  阅读(411)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2020-12-09 mipi-rx之软件篇
2019-12-09 s3c2440裸机-内存控制器(一、内存控制器的原理)
 
点击右上角即可分享
微信分享提示