记: OLED例程里面的函数库只有清屏的函数..
对于想实现只想清行的我.
首先记录一下相关的显示原理.
OLED控制器为SSD1306,也就是说:裸屏由SSD1306驱动.
OLED模块显存
OLED本身是没有显存的,它的显存是依赖于SSD1306提供的。
SSD1306的显存总共为128 * 64bit大小,SSD1306将这些显存分为了8页。
每页包含了128个字节,总共8页,这样刚好是128*64的点阵大小。
其中显存第二页的显示 :
x: 0~127 y:2 其中包含8个bit
了解完基本的显存,那么就要知道他在代码对应的是什么?
在所给的例程里面会存在一个 u8 OLED_GRAM[128][8] 这个数据就是对应显存的的位置.
其中 128 为每一行的坐标x(0~127) ,8 为页数(0~7), 而这个数组的值就是具体某一页中的8位的值.
了解完这些开始构建代码.
因为根据里面的库函数,字体的大小为 12 ,16 ,24 .
所以,我们只需要每次显示都严格根据字体大小分配,就可以使用一下函数,对具体的函数进行清除.
具体步骤:
1.添加函数
在OLED.c文件中添加函数,并且在OELD.h文件中声明.
void OLED_Cls(u8 y1,u8 y2)
{
u8 i,j,m,n;
i=y1/8; //确定第一页是某一页
j=y2/8; //确定最后一页是某一页
for(m=i;m<j;m++)
{
for(n=0;n<128;n++) //将x(0~127)清零
{
OLED_GRAM[n][m]=0;
}
}
}
2.使用函数
//参数: y1: 清除的第一页
// y2: 清除的最后一页(用第一行+字体大小确定)
最后,只能简单的解决页的清除,具体到行的清除,只有一点头绪,但好像也挺难实现的.
先就这样8,好好积累,慢慢成长!
如果有错,大佬轻点打. T.T