金牌会员
 
- 积分
- 1332
- 金钱
- 1332
- 注册时间
- 2021-1-2
- 在线时间
- 121 小时
|
战舰V3,0.96OLED实验的画点函数,初看让人头痛。其原因是,0.96OLED屏的初始化程序,把屏的坐标原点设在了屏的左下角,但配套的资料及视频对此没有相关提示:如下示:
void OLED_Init(void)
{
-------
OLED_WR_Byte(0xC0,OLED_CMD); //屏的坐标原点设在了屏的左下角
-------
}
//画点
//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; //造成坐标转换
bx=y%8;
temp=1<<(7-bx); //造成坐标转换
if(t)OLED_GRAM[x][pos]|=temp;
else OLED_GRAM[x][pos]&=~temp;
}
其实,只要在0.96OLED屏的初始化程序中,把屏的坐标原点设在屏的左上角,就可避免在画点程序中的坐标转换,使程序清爽易读。如下示:
void OLED_Init(void)
{
-------
OLED_WR_Byte(0xC8,OLED_CMD); //左标原点设置为左上角-----这符合习惯
-------
}
//画点
//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=y/8; //当前页----省掉了坐标转换
bx=y%8; //当前页中的行
temp=1<<bx; //----省掉了坐标转换
if(t)OLED_GRAM[x][pos]|=temp;
else OLED_GRAM[x][pos]&=~temp;
}
|
|