SSD1306驱动的0.91寸OLED屏上手(128*32)

附帧驱动代码

    • 帧驱动代码(C51)

  花了几天时间去看驱动手册和IIC协议,终于把程序写出来了。到上手的时候,本以为128x32像素的是只接入了COM0~COM31,结果是接入了全部COM脚但只用一半(COM反置之后可以用另一半),一个PAGE的一列SEG里只显示4个像素(原本是8个),搞得我又去写了个程序转换数据格式。。。
  不过这么搞也有个好处,一帧数据可以通过切换COM反置来达成显示两帧。通过COM反置命令可以在一帧里的两半数据里自由切换,达成“显示隐藏数据”的效果。
  随后会发布介绍IIC和SSD1306的文章,后面打算买个128x64的7Pin SPI版,熟悉下STC12C5A的SPI模块,然后联合ESP8266来做一个WIFI无线显示。

SSD1306驱动的0.91寸OLED屏上手(128*32)_第1张图片
  点阵数据由PCtoLCD2002取模
SSD1306驱动的0.91寸OLED屏上手(128*32)_第2张图片

帧驱动代码(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]);
}

你可能感兴趣的:(日常,单片机,嵌入式)