与 SSD1306 OLED 显示屏 进行通信时,主要操作包括发送命令和数据。显示内容通过 SPI 协议传输,命令与数据通常通过不同的控制字节标识。
初始化 OLED 显示屏
初始化 OLED 显示屏需要先发送一些控制命令来配置显示模式、对比度、启动显示等。
c
void OLED_Init(void)
{
uint8_t init_cmds[] = {
0xAE, // Display OFF
0xD5, 0x80, // Set display clock divide ratio/oscillator frequency
0xA8, 0x3F, // Set multiplex ratio (height of display - 1)
0xD3, 0x00, // Set display offset
0x40, // Set display start line
0xA1, // Set segment remap
0xC8, // Set COM output scan direction
0xDA, 0x12, // Set COM pins hardware configuration
0x81, 0x8F, // Set contrast control
0xA4, // Entire display ON (resume to RAM content display)
0xA6, // Normal display (not inverted)
0xAF // Display ON
};
for (int i = 0; i < sizeof(init_cmds); i++) {
SPI_Send(init_cmds[i]);
}
}
发送显示数据
OLED 屏幕的数据通过发送数据模式传输,通常数据传输方式为逐个像素发送,按照行列进行更新。
c
void OLED_WriteData(uint8_t *data, uint16_t length)
{
SPI_Send(0x40); // 数据模式指令
for (uint16_t i = 0; i < length; i++) {
SPI_Send(data[i]); // 发送像素数据
}
}
|