|
|
发表于 2026-5-21 11:51:05
void OLED_initX(void) { // STM32 战舰开发板
delay_ms(300); // very important delay
OLED_writeByte(0xAE, OLED_CMD); //关闭显示
OLED_writeByte(0xD5, OLED_CMD); //设置时钟分频因子,震荡频率
OLED_writeByte(80, OLED_CMD); //[3:0],分频因子;[7:4],震荡频率
OLED_writeByte(0xA8, OLED_CMD); //设置驱动路数
OLED_writeByte(0X3F, OLED_CMD); //默认0X3F(1/64)
//===================================
OLED_writeByte(0xD3, OLED_CMD); //设置显示偏移
OLED_writeByte(0X00, OLED_CMD); //默认为0
//===================================
OLED_writeByte(0x40, OLED_CMD); //设置显示开始行 [5:0],行数 40~7F = 3F = 63
OLED_writeByte(0x8D, OLED_CMD); //电荷泵设置
OLED_writeByte(0x14, OLED_CMD); //bit2,开启/关闭
//===================================
OLED_writeByte(0x20, OLED_CMD); //设置内存地址模式
OLED_writeByte(0x02, OLED_CMD); //[1:0], [00的话,即0,列地址模式;],[01的话,即1,行地址模式;], [10的话,即2,页地址模式;默认10;]
//===================================
OLED_writeByte(0xA1, OLED_CMD); //段重定义设置,bit0: [0的话,0->0;] [1的话,0->127;]
OLED_writeByte(0xC8, OLED_CMD); //设置COM扫描方向;bit3: [0的话,普通模式;] [1的话,重定义模式 COM[N-1]->COM0;N:驱动路数
// OLED_writeByte(0xC0, OLED_CMD); //设置COM扫描方向;bit3: [0的话,普通模式;] [1的话,重定义模式 COM[N-1]->COM0;N:驱动路数
OLED_writeByte(0xDA, OLED_CMD); //设置COM硬件引脚配置
OLED_writeByte(0x12, OLED_CMD); //[5:4]配置
// OLED_writeByte(0x22, OLED_CMD); // 或者试 0x22
OLED_writeByte(0x81, OLED_CMD); //对比度设置
OLED_writeByte(0xEF, OLED_CMD); //1~255;默认0X7F (亮度设置,越大越亮) 亮度设置
OLED_writeByte(0xD9, OLED_CMD); //设置预充电周期
OLED_writeByte(0xf1, OLED_CMD); //[3:0],PHASE1; [7:4],PHASE 2;
OLED_writeByte(0xDB, OLED_CMD); //设置VCOMH 电压倍率
OLED_writeByte(0x30, OLED_CMD); //[6:4] 000的话,0.65*vcc; [001的话,0.77*vcc;] 011的话,0.83*vcc;
OLED_writeByte(0xA4, OLED_CMD); //全局显示开启;bit0: [1的话,开启;] [0的话,关闭;(白屏/黑屏)]
OLED_writeByte(0xA6, OLED_CMD); //设置显示方式;bit0: [1的话,反相显示;] [0的话,正常显示]
// OLED_writeByte(0xA7, OLED_CMD); //设置显示方式;bit0: [1的话,反相显示;] [0的话,正常显示] very good!!!
OLED_writeByte(0xAF, OLED_CMD); //开启显示
delay_ms(100);
OLED_clear();
}
为什么我的黄蓝双色 0.96寸的 OLED也是这个问题, 隔行显示, 困扰我好几天了,我按你上述进行修改后,还是这个问题,大佬们,帮我看一下怎么解决?谢谢啦 |
|