初级会员

- 积分
- 152
- 金钱
- 152
- 注册时间
- 2012-9-29
- 在线时间
- 16 小时
|
发表于 2013-11-17 21:29:54
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{
u8 temp,t,t1;
u8 y0=y;
chr=chr-' ';//得到偏移后的值
for(t=0;t<size;t++)
{
if(size==12)temp=asc2_1206[chr][t]; //调用1206字体
else temp=asc2_1608[chr][t]; //调用1608字体
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)==size)
{
y=y0;
x++;
break;
}
}
}
}
如果字符取模是从上往下的话,这个跟void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
u8 pos,bx,temp=0;
if(x>127||y>63)return;//超出范围了.
pos=7-y/8; //y是从低到高,在一页内从上往下为低位到高位
bx=y%8;
temp=1<<(7-bx);
if(t)OLED_GRAM[x][pos]|=temp;
else OLED_GRAM[x][pos]&=~temp;
}不相符吧??因为void OLED_DrawPoint(u8 x,u8 y,u8 t)函数的Y方向是向上是增加的,而取模是向下的 |
|