如何开启LCD1306的显示与控制,根据手册找到开启的顺序如下图所示:
根据官方手册给定的步骤开启LCD1306显示
cpp
// OLED显示初始化
void OLED_Init(void)
{
// 初始化OLED
MyI2C_Init();
OLED_WriteCommand(0xAE); // 设置显示开启/关闭,0xAE关闭,0xAF开启
OLED_WriteCommand(0xD5); // 设置显示时钟分频比/振荡器频率
OLED_WriteCommand(0x80); // 0x00~0xFF
OLED_WriteCommand(0xA8); // 设置多路复用率
OLED_WriteCommand(0x3F); // 0x0E~0x3F
OLED_WriteCommand(0xD3); // 设置显示偏移
OLED_WriteCommand(0x00); // 0x00~0x7F
OLED_WriteCommand(0x40); // 设置显示开始行,0x40~0x7F
OLED_WriteCommand(0xA1); // 设置左右方向,0xA1正常,0xA0左右反置
OLED_WriteCommand(0xC8); // 设置上下方向,0xC8正常,0xC0上下反置
OLED_WriteCommand(0xDA); // 设置COM引脚硬件配置
OLED_WriteCommand(0x12);
OLED_WriteCommand(0x81); // 设置对比度
OLED_WriteCommand(0xCF); // 0x00~0xFF
OLED_WriteCommand(0xD9); // 设置预充电周期
OLED_WriteCommand(0xF1);
OLED_WriteCommand(0xDB); // 设置VCOMH取消选择级别
OLED_WriteCommand(0x30);
OLED_WriteCommand(0xA4); // 设置整个显示打开/关闭
OLED_WriteCommand(0xA6); // 设置正常/反色显示,0xA6正常,0xA7反色
OLED_WriteCommand(0x8D); // 设置充电泵
OLED_WriteCommand(0x14);
OLED_WriteCommand(0xAF); // 开启显示
}
IIC 初始化显示
cpp
/**
* 函 数:I2C初始化
* 参 数:无
* 返 回 值:无
* 注意事项:此函数需要用户实现内容,实现SCL和SDA引脚的初始化
*/
void MyI2C_Init(void)
{
/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB的时钟
/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure); //将PB10和PB11引脚初始化为开漏输出
/*设置默认电平*/
GPIO_SetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9); //设置PB10和PB11引脚初始化后默认为高电平(释放总线状态)
}
....