| 查找资料发现是OLED 128*32,建议统一用3.3V 
 128*32建议使用SSD1316的
 
 复制代码void SSD1316_Clear(void)  
{  
        unsigned char i,n;                    
        for(i=0;i<4;i++)  
        {  
                SSD1316_Write_CMD(0xb0+i);        //设置页地址(0~3)
                SSD1316_Write_CMD(0x00);        //设置显示位置—列低地址
                SSD1316_Write_CMD(0x10);        //设置显示位置—列高地址  
                SSD1316_Write_DATA_A();                
                for(n=0;n<128;n++)
                {
                        SSD1316_Write_DATA_B(0x00);
                }
                SSD1316_Write_DATA_C();
        }
}
void SSD1316_Display_16x32(unsigned char x,unsigned char dat)        //x=0~112,dat=0~17
{
        unsigned char i;
        SSD1316_Write_CMD(0x20);        //Set Memory Addressing Mode(设置内存寻址模式)
        SSD1316_Write_CMD(0x01);        //0x01(垂直寻址模式)
        SSD1316_Write_CMD(0x21);        //Set Column Address(设置列地址)
        SSD1316_Write_CMD(x);                //(列开始地址)
        SSD1316_Write_CMD(x+15);        //(列结束地址)
        SSD1316_Write_CMD(0x22);        //Set Page Address(设置页地址)
        SSD1316_Write_CMD(0x00);        //0
        SSD1316_Write_CMD(0x03);        //3
        SSD1316_Write_DATA_A();
        for(i=0;i<64;i++)
        {
                SSD1316_Write_DATA_B(ASCII[dat][i]);
        }
        SSD1316_Write_DATA_C();
        SSD1316_Write_CMD(0x20);        //Set Memory Addressing Mode(设置内存寻址模式)
        SSD1316_Write_CMD(0x02);        //0x02(页寻址模式)
}
void OLED_Set_Pos(unsigned char x,unsigned char y) 
{
        SSD1316_Write_CMD(0xb0+y);
        SSD1316_Write_CMD(((x&0xf0)>>4)|0x10);
        SSD1316_Write_CMD((x&0x0f));
}
void OLED_DrawBMP(unsigned char x,unsigned char y,unsigned char sizex, unsigned char sizey,unsigned char BMP[])
{         
        unsigned int j=0;
        unsigned char i,m;
        sizey=sizey/8+((sizey%8)?1:0);
        for(i=0;i<sizey;i++)
        {
                OLED_Set_Pos(x,i+y);
                SSD1316_Write_DATA_A();
                for(m=0;m<sizex;m++)
                {
                        SSD1316_Write_DATA_B(BMP[j++]);
                }
                SSD1316_Write_DATA_C();
        }
} 
void SSD1316_Init(void)
{
        SSD1316_Write_CMD(0xAE);        //Set Display OFF(设置显示关)
        SSD1316_Write_CMD(0xA1);        //Set Segment Remap(设置列重映射)
        SSD1316_Write_CMD(0xA8);        //Set Multiplex Ratio(设置行通道数)
        SSD1316_Write_CMD(0x1F);        //31
//        SSD1316_Write_CMD(0xC8);        //Set COM Output Scan Direction(设置行重映射)
        SSD1316_Write_CMD(0xD3);        //Set Display Offset(设置垂直偏移量)
        SSD1316_Write_CMD(0x00);        //0
        SSD1316_Write_CMD(0xD5);        //Set Display Clock Divide Ratio/Oscillator Frequency(设置显示时钟分频器、振荡器频率)
        SSD1316_Write_CMD(0xF0);        //0xF0
        SSD1316_Write_CMD(0x8D);        //Charge Pump Setting(设置电荷泵)
        SSD1316_Write_CMD(0x14);        //0x14
        SSD1316_Write_CMD(0xAF);        //Set Display ON(设置显示开)
        SSD1316_Clear();
//        SSD1316_Write_CMD(0x81);        //Set Contrast Control(设置对比度)
//        SSD1316_Write_CMD(0x7F);        //127
//        SSD1316_Write_CMD(0xA7);        //Set Normal/Inverse Display(设置反相显示)
//        OLED_DrawBMP(0,0,128,32,BMP1);
}
 
 |