标准例程里面的画点函数如下:
void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
u8 pos,bx,temp=0;
if(x>127||y>63)return;//超出范围了.
pos=7-y/8;
bx=y%8;
temp=1<<(7-bx);
if(t)OLED_GRAM[x][pos]|=temp;
else OLED_GRAM[x][pos]&=~temp;
}
STM32F4开发指南-库函数版本的解释为
OLED_GRAM[128][8]中的 128 代表列数( x 坐标),而 8 代表的是页, 每页又包含 8 行,
总共 64 行( y 坐标)。从高到低对应行数从小到大。比如,我们要在 x=100, y=29 这个点写入
1,则可以用这个句子实现:
OLED_GRAM[100][4]|=1<<2;
一个通用的在点( x, y)置 1 表达式为:
OLED_GRAM[x][7-y/8]|=1<<(7-y%8);
其中 x 的范围为: 0~127; y 的范围为: 0~63。
我的问题是:假如x=100,y=8,t=1,按照上述描述,则该点将被画到第6页上面去;但正确的是应该在第1页上面啊?
求解?
一周热门 更多>