可能是显示区域或地址设置不正确,I2C速度过快也可能造成这个问题
I2C时钟不要超过400K,SSD1306初始化程序参考:
- void SSD1306_Init(void)
- {
- SSD1306_Write_CMD(0xAE); //Set Display OFF(设置显示关)
- SSD1306_Write_CMD(0xA1); //Set Segment Remap(设置列重映射)
- SSD1306_Write_CMD(0xA8); //Set Multiplex Ratio(设置行通道数)
- SSD1306_Write_CMD(0x3F); //63
- SSD1306_Write_CMD(0xC8); //Set COM Output Scan Direction(设置行重映射)
- SSD1306_Write_CMD(0xD3); //Set Display Offset(设置垂直偏移量)
- SSD1306_Write_CMD(0x00); //0
- SSD1306_Write_CMD(0xD5); //Set Display Clock Divide Ratio/Oscillator Frequency(设置显示时钟分频器、振荡器频率)
- SSD1306_Write_CMD(0xF0); //0xF0
- SSD1306_Write_CMD(0x8D); //Charge Pump Setting(设置电荷泵)
- SSD1306_Write_CMD(0x14); //0x14(启用电荷泵,设置为9V)
- SSD1306_Write_CMD(0xDB); //Set VCOMH Deselect Level(设置VCOMH电压)
- SSD1306_Write_CMD(0x30); //0x30(0.83*VCC)
- SSD1306_Write_CMD(0x81); //Set Contrast Control(设置对比度)
- SSD1306_Write_CMD(0x7F); //127
- // SSD1306_Write_CMD(0xA7); //Set Normal/Inverse Display(设置反相显示)
- SSD1306_Clear();
- SSD1306_Write_CMD(0xAF); //Set Display ON(设置显示开)
- }
复制代码
|