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);

oled局部刷新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俯仰一世_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值