一列需要2个16进制数 ?
正确的说法是:一列是 1 个字节。(8个bit)
总共128列就需要128个字节
你定义的数组 uint8_t 是一个字节
const uint8_t BMP3[] 是 128 个字节
OLED的一个扇区可以理解为一块显示区域,其大小为128 x 64像素。每个像素只能为黑或白,因此每个像素点对应一个二进制位。
由于OLED屏幕采用的是列扫描式显示,一个扇区的一行数据需要通过有限状态机组成的控制电路,将其拆分为若干个组,每个组包含8列显示数据。因此,每组需要64个二进制位,也就是8个字节的数据。而每个扇区有8行数据,因此对应的数据字节数为:
8 * 8 = 64
也就是说,一个扇区需要64个字节或者512个二进制位来表示。如果采用16进制表示,则每个字节对应两个16进制数,因此一个扇区需要:
64 * 2 = 128
或者说,
512 * 2 = 1024
个16进制数来表示一个完整的扇区。
该电路适合把OLED驱动电路集成到自己的板子上,最终的原理图和PCB已经上传CSDN,可直接点击链接下载:
https://download.csdn.net/download/qq_31785559/59594346
因为自己要做一个小体积的控制电路需要用到OLED显示屏,但是传统的四针IIC通信的OLED屏体积太大,所以就想着把集成SSD1315的0.96OLED屏浓缩到电路上。传统的四针IIC通信OLED屏幕如下:
看了很多参考电路,包括一些模块的官方手册,最终的电路如下(7脚悬空不接):
但是板子收到后,无论怎么调试都不管用,屏幕测试点不亮,但是放在标准的OLED模块上显示却正常,说明是电路问题,屏幕没问题。查了很多资料,官方的datasheet里的电路也是这个,但是就是不管用。
后来看到一个电路,7脚并不是悬空不接,而是接了GND,抱着试一试的心态,从第七脚飞线到GND,最终屏幕成功点亮。
红色的线就是第七管脚飞线GND,最终的原理图如下,需要注意的是屏幕是3.3V供电:
我参考的电路PCB如下,原理图sch文件和和PCB文件我放在另一个链接中,可以自行下载: