oled清屏函数记录

一、清屏函数      

  根据ssd1306手册可以写出以下清屏函数,这个是清除整个屏幕。

void oled_clear() {
	int i, j;
	//选择页模式
	iic_write_cmd(0x20);
	iic_write_cmd(0x02);
    // 清除整个屏幕,8页 * 128列
	for(i = 0; i < 8; i ++) {
        //选择操作的页
		iic_write_cmd(0xB0+i);
        //下面两个命令设置从页的起始位置开始写入
		iic_write_cmd(0x00);
		iic_write_cmd(0x10);
		for(j = 0; j < 128; j ++) { 
			iic_write_data(0);
		}
	}
}

如果想清除屏幕的一部分,那该如何操作?答案也简单,就是选择页,然后选择列即可。完整代码展示如下:

void oled_clear(uint8_t x0, uint8_t x1, uint8_t y0, uint8_t y1) {
	assert_param(x0 <= 8);
	assert_param(x1 <= 8);
	assert_param(x1 >= x0);
	
	assert_param(y0 <= 128);
	assert_param(y1 <= 128);
	assert_param(y1 >= y0);
	
	int i, j;
	//选择页模式
	iic_write_cmd(0x20);
	iic_write_cmd(0x02);
	for(i = x0; i < x1; i ++) {
        //选择操作的页
		iic_write_cmd(0xB0+i);
        //下面两个命令设置从页的起始位置开始写入
		iic_write_cmd(0x00 + y0 % 16);
		iic_write_cmd(0x10 + y0 / 16);
		for(j = y0; j < y1; j ++) { 
			iic_write_data(0);
		}
	}
}

列的处理如下,具体如何计算的看 51单片机之手撸IIC协议,并点亮oled-CSDN博客

文章里所有的函数也都在文章内

iic_write_cmd(0x00 + y0 % 16);
iic_write_cmd(0x10 + y0 / 16);

二、常用清屏函数

下面常用的局部清屏代码如下,包括清除某一行,或上半部分、下半部分。

void oled_clear_1_line() {
	oled_clear(0, 2, 0, 128);
}

void oled_clear_2_line() {
	oled_clear(2, 4, 0, 128);
}

void oled_clear_3_line() {
	oled_clear(4, 6, 0, 128);
}

void oled_clear_4_line() {
	oled_clear(6, 8, 0, 128);
}

void oled_clear_all() {
	oled_clear(0, 8, 0, 128);
}

void old__clear_top_half() {
	oled_clear(1, 4, 0, 128);
}

void old__clear_bottom_half() {
	oled_clear(4, 8, 0, 128);
}

三、效果演示

刷新右下角1/4区域视频效果:

 oled_clear(4, 8, 64, 128);

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