记: 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
2.使用函数
//参数: y1: 清除的第一页
// y2: 清除的最后一页(用第一行+字体大小确定)
最后,只能简单的解决页的清除,具体到行的清除,只有一点头绪,但好像也挺难实现的.
先就这样8,好好积累,慢慢成长!
如果有错,大佬轻点打. T.T
参考链接:https://blog.csdn.net/weixin_43872149/article/details/104712248?ops_request_misc=&request_id=&biz_id=102&utm_term=OLED%E5%B1%8F%E5%B9%95%E6%98%BE%E7%A4%BA%E5%8E%9F%E7%90%86%20&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-7-104712248.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187https://blog.csdn.net/weixin_43872149/article/details/104712248?ops_request_misc=&request_id=&biz_id=102&utm_term=OLED%E5%B1%8F%E5%B9%95%E6%98%BE%E7%A4%BA%E5%8E%9F%E7%90%86%20&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-7-104712248.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187