附帧驱动代码
花了几天时间去看驱动手册和IIC协议,终于把程序写出来了。到上手的时候,本以为128x32像素的是只接入了COM0~COM31,结果是接入了全部COM脚但只用一半(COM反置之后可以用另一半),一个PAGE的一列SEG里只显示4个像素(原本是8个),搞得我又去写了个程序转换数据格式。。。
不过这么搞也有个好处,一帧数据可以通过切换COM反置来达成显示两帧。通过COM反置命令可以在一帧里的两半数据里自由切换,达成“显示隐藏数据”的效果。
随后会发布介绍IIC和SSD1306的文章,后面打算买个128x64的7Pin SPI版,熟悉下STC12C5A的SPI模块,然后联合ESP8266来做一个WIFI无线显示。
点阵数据由PCtoLCD2002取模
帧驱动代码(C51)
void OLED_Frame(unsigned char P[8][128])
{
unsigned char i,j;
OLED_WriteCMD(0X20); // 设置GDDRAM寻址模式
OLED_WriteCMD(0X00); // 水平寻址模式
OLED_WriteCMD(0X21); // 设置列起始和结束地址
OLED_WriteCMD(0X00); // 列起始地址 0
OLED_WriteCMD(0X7F); // 列终止地址 127
OLED_WriteCMD(0X22); // 设置页起始和结束地址
OLED_WriteCMD(0X00); // 页起始地址 0
OLED_WriteCMD(0X07); // 页终止地址 7
for(i=0; i<8; i++) // 写入一帧数据
for(j=0; j<128; j++)
OLED_WriteData(P[i][j]);
}