在使用淘宝的OLED 128*32的液晶屏幕显示时,有时因为设计的原因需要反转屏幕180度,比较常见的作法
1. 使用128*4(*8)的字节的Buff来缓存,在Buff里面做翻转,然后按照正常的流程输出到屏幕
2. 直接输出到屏幕,需要相应的修改代码以适配,节省了内存,在STM8的小内存设备上比较友好
该屏幕有128列, 4行,一个行列对于一个Byte,8Bit,从左到右依次排列,序号为0-127, 0-3
在x,y坐标处开始绘制buf里的内容,共count个
void OLED_DRAW_SEQ(u8 x, u8 y, unsigned const char* buf, u8 count)
{
unsigned char i=0;
if (REVERSE) {
x = 127-x;
y = 3 - y;
OLED_Set_Pos(x - count,y);
for(i=0;i<count;i++){
OLED_WR_Byte(Reverse_Bit(buf[count -1 - i]),OLED_DATA);
}
} else {
OLED_Set_Pos(x,y);
for(i=0;i<count;i++){
OLED_WR_Byte(buf[i],OLED_DATA);
}
}
}
逐位翻转Bit
u8 Reverse_Bit(u8 x)
{
u8 i=0;
u8 r = 0;
for (i=0; i<8; i++){
r |= ((x >> i) & 1) << (7-i);
}
return r;
}