OLED 行列设置一篇搞懂
我们大家的目的就是想让我们的OLED显示出多彩的图案,但是我们该在去做呢,其实这些的是指都是去写寄存器来实现的(下图来源于网
络)
我相信,大家应该看了很多东西都没用懂,那些博客写了设置列地址的低四位,和设置列的高四位,页面地址,但你看完一定不太懂,这个效果是什么,有2个位,我该怎么设置呢,那接下来我就让大家高明白 😄
如上图的屏幕为 64 -128 (行-列) ,这个指的是屏幕上的像素点, 记住啦!!! 很关键
页地址和列地址: 页地址其实就是指,屏幕按行被分为了几份的序号罢了,可能有点绕,弄个图大家就懂了
看左边的按行分隔的表格,这就是页地址的真正含义,既然是叫页地址,那就说明这不是一行一行的,而是多行组合起来分成一组,而这里的一个页地址包含了8行,刚才说了屏幕的行的像素点有64个,那么就是说该OLED有8页,然后页地址的值按上图分布
再来说说列地址,列地址有2个,一个高四位,一个低四位,这个看起来会有点抽象,如果你每遇见过这种的话,看上图的右边部分,可以看出来,这个高四位(0x10 ~ 0x1f)和页地址一样吧列分区了,分成了16份,但是这个高四位只代表你在那个分区开始表示,如果不设置低四位,你永远只能设置列为一个分区的开端的开始位置,所以如果我要在一个分区随意设置列的位置,那么这个时候就要依靠低四位了(0x01 ~ 0x0f),不难看出 0x01 ~ 0x0f 长度为16,即一个分区中有16个像素点,那么这时候加上高低四位的配合,就能随便设置列的位置
细心的人会发现,那么高四位也有16,16*16 > 128 了,那么就说明是显示不完的,一般我们设高四位的范围在 0x00 ~ 0x07 ,7x16+16=128 ,就刚好是128个像素了
**显示: **这里还想再帮大家理清2个东西,一个是写命令,一个是写数据,我们设置行列就是通过写命令来实现的,那我们写数据的意义就是让已经初始化后了的OELD上的像素点亮起来,上面说过一页有8行,又因为只能一列一列的显示,一个数据的范围也就是(11111111~ 0)(8个1 ~ 0) ,也就是表现在列上的,且如果一次写数据的操作完了后,列数会自动加一(即,列往后移一列)
最后,如果你看了没懂的话,就再多看几次,如果看了几次了也还是有问题,那么打开你的 keil 拿上你的OELD开始干,动手吧,你会感悟的