高级会员

- 积分
- 597
- 金钱
- 597
- 注册时间
- 2019-8-22
- 在线时间
- 173 小时
|
10金钱
本帖最后由 CKJJJJ 于 2020-8-27 11:15 编辑
/********************************************
** breif:局部刷新OLED
** para: x 横坐标 列地址
** y 纵坐标 页地址
** len x方向长度 以像素点为单位
** width y方向宽度 以像素点为单位
********************************************/
void OLED_Refresh_Gram_Part(u8 x,u8 y,u8 len, u8 width)
{
u8 i, n;
for(i = (y/8); i <= ((y+width)/8); i++)
{
OLED_WR_Byte(0xb0 + i,OLED_CMD); //设置页地址(0~7)
OLED_WR_Byte(0x00+(0x0f&x),OLED_CMD); //设置显示位置—列低地址
OLED_WR_Byte(0x10+(x>>4),OLED_CMD); //设置显示位置—列高地址
for(n = x; n < (x+len); n++)
{
OLED_WR_Byte(OLED_GRAM[n],OLED_DATA);
}
}
}
在网上找到一个关于局部刷新的例子,试着理解了下,它是将全屏刷新改了点内容,大概就是先确定占用哪些PAGE,然后再分别获取x的高低位来设置列高低位地址。但实际测试效果却没用,屏幕不能正常工作。有大佬调过么?求指导
|
最佳答案
查看完整内容[请看2#楼]
调用这个OLED_Clear(0);是清屏
那么对应的修改i,j的范围就可以擦除一行 或者其他的,局部清除就是往你指定的区域写0,根据清屏的进行修改就行了
|