注意,TB上卖的12864,商家会提供例程,最近发现其中一个版本的例程存在问题
显示16*16点阵的字符,一行128像素,正好显示8个。
但是使用商家提供的例程,当你设置从第0行0列显示,每行的字符却都是从第1列开始,而不是从第0列
问题出在下面的代码中
void OLED_Set_Pos(uint8_t Row,uint8_t Cal)
{
OLED_WR_Byte(0xB0+Row,OLED_CMD);//设置行
OLED_WR_Byte(((Cal&0xF0)>>4)|0x10,OLED_CMD);//设置列高字节
OLED_WR_Byte((Cal&0x0F)|0x01,OLED_CMD);//设置列低字节
}
设置列低字节这里 (Cal&0x0F)|0x01 中的|0x01是多余的,会导致你设置第0列时,写入的列低字节的数据最低位永远都是1
把这个|0x01删除即可