画点函数是最重要也最难理解(对于新手),实际上硬件原点是在P点,沿X轴向上翻转180度,得到右图,是与datasheet一致的.真正意义上页分布
例如要在屏幕A(100,13)画点,实际对应的是A‘,值得注意的是因为要上下颠倒,所以本来是00001000,翻转后变00010000
//画点
//x:0~127
//y:0~63
//t:1 填充 0,清空
void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
u8 pos,bx,temp=0;
if(x>127||y>63)return;//超出范围了.
pos=7-y/8; //当正常面对屏幕,由上至下是页7~0,左下角才是原点,就是为了纠正到实际页号
bx=y%8; //这里是为了要移位,因为沿x轴翻转,自然上下要调换,你可以在坐标系上画个q,沿x轴翻转后得到的d
temp=1<<(7-bx); //"1"左移(7-bx)个位 ,这里易错,误以为(7-bx)左移1个位
if(t)OLED_GRAM[x][pos]|=temp;
else OLED_GRAM[x][pos]&=~temp;
}
我下面写的回复就不看了,看了会蒙