STM32学习笔记---OLED页寻址方式

刚开始学习STM32,研究了一下OLED的访问方式,简单记录一下,另外也是方便自己以后查阅。
刚开始学习就是要简单、粗暴、有效,直接说到要点,才能有利于新人的快速认知。内容是SPI方式对OLED页寻址方式的方法。
OLED显示是点阵式显示,OLED显示是点阵式显示,最常见的规格有128*96,96*96等。OLED放大了看就如下图一样,每一个点就是一个像素,通过很多个点的点亮来组成字符。那么在STM32中在这么大片的点阵中是如何告诉哪些点阵点亮来实现字符的显示呢,今天就谈论下OLED的页寻址方式。
STM32学习笔记---OLED页寻址方式_第1张图片

通常3种寻址方式,我们只讨论最流行的页寻址,简单、有效,多了记不住。现在市面上流行OLED驱动芯片都是SSD系列芯片核心驱动,访问方式类似。它的页寻址方式如下图箭头所示,最大共11页,128列。一页是8行。
STM32学习笔记---OLED页寻址方式_第2张图片
我们先来看一段源程序,这段源程序(函数)就是定义OLED的页寻址:
void OLED_Set_Pos(unsigned char x, unsigned char y)
{ unsigned char x0;
x0=x;
OLED_WR_Byte(0xb0+y,OLED_CMD);
OLED_WR_Byte(((x0&0xf0)>>4)|0x10,OLED_CMD);
OLED_WR_Byte((x0&0x0f),OLED_CMD);
}

由于芯片定义了几种寻址方式,需要先把寻址方式发命令给芯片,在main的主函数中我们通常看到需要编写的定位的语句如下,即是调用定位程序:
void OLED_Set_Pos(unsigned char x, unsigned char y),
x,y代表坐标。

函数里编程的语句如下:
OLED_WR_Byte(0xb0+y,OLED_CMD);
OLED_WR_Byte是一个自己建立的函数,它主要功能是通过SPI总线方式来发送一个一个字符给OLED芯片,OLED_CMD是0,告诉OLED这个发送的是命令。具体细节可以先放在一边,可以暂时认为它就是一个功能函数,可以把字符数据发送给OLED。
SSD芯片的手册中命令解释如下:
STM32学习笔记---OLED页寻址方式_第3张图片
我们对应表格,B0~BB是代表页寻址方式,X3,X2,X1,X0就是需要访问的页码,所以我们看到程序中直接将0xb0加上y,主要功能就是说明页寻址,还有页码地址。对于现实世界y就是第几行字的意思。
接下来一句,
OLED_WR_Byte(((x0&0xf0)>>4)|0x10,OLED_CMD);
x0是等于x的,可以认为是x,我们看手册的定义如下图:
STM32学习笔记---OLED页寻址方式_第4张图片
我们对应表格,当发送十六进制数字00~0FH表示页寻址方式下低位的列开始地址。当发送十六进制数字10~17H代表在页寻址方式下发送高位的列开始地址,所以x坐标是被切割位地位和高位分别发送给OLED的,所以程序的语句就不难理解了,x0&0xf0)>>4就是保留高4位然后移位4位,地址数据已移到了低四位,再或上0x10,就是组成10~17命令码,告诉OLED芯片这是地址寻址,高位开始的数值。
地位地址的语句:
OLED_WR_Byte((x0&0x0f),OLED_CMD);
这个同高位时同样的道理,见上图发送地位地址是00~0F,高位一定是0,只要或上0x0f屏蔽掉高位,将低位地址x4,x3,x2,x1直接发给OLED即可。
高位的x2,x1,x0,加上地位的x3,x2,x1,x0一共7个位,7个位可以寻址2的7次方就是128个地址,看刚好同128列匹配了。
举一个具体实例:
OLED_WR_Byte (0xb2,0); // b2:b代表页寻址,2是第2页;
OLED_WR_Byte (0x10,0); // 10: 1代表是列高位,0代表高3位为0;
OLED_WR_Byte (0x03,0); // 03:0代表是列低位,3代表低4位为3;
连起来意思是0x03,就是第3列的意思,图面解释如下图:

再看一遍完整的程序如下:
void OLED_Set_Pos(unsigned char x, unsigned char y)
{ unsigned char x0;
x0=x;
OLED_WR_Byte(0xb0+y,OLED_CMD);
OLED_WR_Byte(((x0&0xf0)>>4)|0x10,OLED_CMD);
OLED_WR_Byte((x0&0x0f),OLED_CMD);
}
这样的硬件页寻址方式加上软件的语句解释,是不是关于OLED的页寻址方式就豁然开朗了。

——————-文档到此结束——————

你可能感兴趣的:(STM32学习笔记---OLED页寻址方式)