以0.96寸128*96 oled屏,
应为横向有96行,将其分成8份,则每份是8行,此时,有128列,
以第一列为例,此时第一列就可以是12个字节组成
OLED屏就是这样分屏,来操作。 这就是OLED_GRAM[128][8]的来历
先对 OLED_GRAM[128][8]操作玩后 ,再将 OLED_GRAM[128][8]中数据写入OLED中
OLED_ShowString(0,0,"ALIENTEK",24);
void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size)
{
while((*p<='~')&&(*p>=' '))//判断是不是非法字符!
{
if(x>(128-(size/2))){x=0;y+=size;}
if(y>(64-size)){y=x=0;OLED_Clear();}
OLED_ShowChar(x,y,*p,size,1);
x+=size/2;
p++;
}
}
每次对一个字符操作,*p指的是字符在ASCII中大小,' '为32,'~'忘了,这样就可以确定字符是不是正确的, OLED_ShowChar(x,y,*p,size,1);
中chr=chr-' ';//得到偏移后的值 就是这样
因为取模软件取模时,ASCII前32个不会取模,所以是在ASCII中数字大小减去32,就是取模时,得到的数字是第几行
接下来就是一个点一个点的画,没有什么难点了
if((y-y0)==size)
{
y=y0;
x++;
break;这个部分是为了字体大小为12*12时,最后一个字节只能用到高4位设置的。