显示有两种模式:
 1、MCU RAM 操作之后一起写入显示屏的RAM
 在MCU上分配一个成员大小为8位的数组 长度是像素点数的1/8(一位控制一个像素点)
 如图:数组是Image_BW
 之后是用 显示的操作算法将每个点由对应的数字或字母 汉字的字模写入数组中
 最后将数组一起写入显示屏的RAM
OLED_GUIInit();
Paint_NewImage(Image_BW,OLED_W,OLED_H,90,WHITE);
	OLED_Clear(WHITE);	//F7
	OLED_Display(Image_BW); //Clear
 
OLED_Clear实际就是 将Image数组中所有成员都变成对应的颜色对应字节
void OLED_Clear(u16 Color)
{
	u16 X,Y;
	u32 Addr;
    for (Y = 0; Y < Paint.HeightByte; Y++) 
	{
        for (X = 0; X < Paint.WidthByte; X++) 
		{//8 pixel =  1 byte
            Addr = X + Y*Paint.WidthByte;
            Paint.Image[Addr] = Color;
        }
    }
}
 
OLED_Display函数中的OLED_WR_DATA8 是将数据写入显示屏的RAM内
void OLED_Display(unsigned char *Image)
{
    unsigned int Width, Height,i,j;
	u32 k=0;
    Width = 250;
    Height = 16;
	OLED_WR_REG(0x24);
	for ( j = 0; j < Height; j++) 
	{
		for ( i = 0; i < Width; i++) 
		{
			OLED_WR_DATA8(Image[k]);
			k++;
		}
	}
    EPD_Update();		 
}
 
EPD_Update 函数是将显示屏内RAM空间的直接显示出来 显示效果由 寄存器0x22的值来控制,如下参考手册
void EPD_Update(void)
{   
	OLED_WR_REG(0x22); //Display Update Control
//	OLED_WR_DATA8(0xF7); //zhongjingyuan 
	OLED_WR_DATA8(0xFF);  //test  FF 91
				//F7 Mode1 
				//FF Mode2 不频闪 直接显示  刷新很快 咨询客服之后 说是局部刷新 但是测试之后显示效果不好,有些许残影,建议用算法操作一下  参考裸屏规格书P17
				//91 Mode1 不显示
				//C7 Mode1 不显示
				//B1 Mode1 不显示
				//CF Mode2 不显示
				//B9 Mode2 不显示
				//B1 Mode2 不显示
				//99	   不显示
				//04	   不显示
				//03	   不显示
				//C0	   不显示
	OLED_WR_REG(0x20);  //Activate Display Update Sequence
	Epaper_READBUSY();   
}
 
参考裸屏规格书P17
2、分字节先写入显示屏的 RAM 然后给指令显示
OLED_WR_REG(0x24);
	
	for ( j = 0; j < 251; j++) 		//写入白色
	{
		for ( i = 0; i <16;i++)
		{
			OLED_WR_DATA8(WHITE);
		}
	}
	EPD_Update();
 
以上两种 实际上是相同的显示原理
只是第二种将数据边操作边一位一位写入RAM
 最后发指令显示


















