金牌会员
 
- 积分
- 1073
- 金钱
- 1073
- 注册时间
- 2017-6-10
- 在线时间
- 279 小时
|
1金钱
本帖最后由 rjx007 于 2017-12-31 14:10 编辑
我碰到一个很费解的问题,请教原子老板和各位,请不吝指教,先谢谢啦。
原子提供的OLED显示函数里有下面的这个“更新显存到LCD”函数://更新显存到LCD
void OLED_Refresh_Gram(void)
{
u8 i,n;
for(i=0;i<8;i++)
{
OLED_WR_Byte (0xb0+i,OLED_CMD); //设置页地址(0~7)
OLED_WR_Byte (0x00,OLED_CMD); //设置显示位置—列低地址
OLED_WR_Byte (0x10,OLED_CMD); //设置显示位置—列高地址
for(n=0;n<128;n++)OLED_WR_Byte(OLED_GRAM[n],OLED_DATA);
}
}
我的问题是:这个函数的作用是什么?什么时候需要使用这个函数?
之所以提出这个问题,是我发现在一般显示字符,字符串,数字时并不需要使用这个函数,可以正常显示。但我尝试有人提供的显示48的大字符时,如果不用这个函数,就会要很长时间字符才会出现,这是为什么?
还有,就是这个显示48大字符的字符出现后,用清屏函数是清不掉的,这又是为什么?
显示48大字符的函数叶贴出来:
//显示48号字体
void OLED_ShowFont48(u8 x,u8 y,u8 fno,u8 mode)
{
u8 temp,t,t1;
u8 y0=y;
for(t=0;t<144;t++)//144的由来,48*24/8
{
if(t<48) temp=asc[fno*3][t];
else if(t<96) temp=asc[fno*3+1][t-48];
else temp=asc[fno*3+2][t-96];
for(t1=0;t1<8;t1++)
{
if(temp&0x80) OLED_DrawPoint(x,y,mode);
else OLED_DrawPoint(x,y,!mode);
temp <<=1;
y++;
if((y-y0)==48)
{
y=y0;
x++;
break;
}
}
}
}
|
|