0.96寸OLED屏幕_清行

记: OLED例程里面的函数库只有清屏的函数..

对于想实现只想清行的我.

首先记录一下相关的显示原理.

OLED控制器为SSD1306,也就是说:裸屏由SSD1306驱动.

OLED模块显存
OLED本身是没有显存的,它的显存是依赖于SSD1306提供的。

SSD1306的显存总共为128 * 64bit大小,SSD1306将这些显存分为了8页。

每页包含了128个字节,总共8页,这样刚好是128*64的点阵大小。 

0.96寸OLED屏幕_清行_第1张图片

其中显存第二页的显示 :

x: 0~127 y:2   其中包含8个bit

0.96寸OLED屏幕_清行_第2张图片

 了解完基本的显存,那么就要知道他在代码对应的是什么?

在所给的例程里面会存在一个    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.4187icon-default.png?t=M0H8https://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

你可能感兴趣的:(stm32,51单片机,单片机)