[嵌入式] 官方OLED模块_bug解决与额外功能函数开源

[复制链接]
上士clouder
2020-7-25 22:24:59 显示全部楼层

马上注册,玩转Robomaster!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 clouder 于 2020-7-25 22:24 编辑

官方的OLED使用的是SH1106G。在使用官方代码驱动时存在显示不稳定,抖动的情况。经过一段时间的分析发现原因出在官方代码设置低列地址时寄存器地址错误

SH1106-CN中文数据手册中:
设置低列地址:(00H-0FH)

官方代码
static void oled_set_pos(uint8_t x, uint8_t y)
{
    x += 2;
    oled_write_byte((0xb0 + y), OLED_CMD);              //set page address y
    oled_write_byte(((x&0xf0)>>4)|0x10, OLED_CMD);      //set column high address
    oled_write_byte((x&0xf0), OLED_CMD);                //set column low address
}

应修改为:
static void oled_set_pos(uint8_t x, uint8_t y)
{
    x += 2;
    oled_write_byte((0xb0 + y), OLED_CMD);              //set page address y
    oled_write_byte(((x&0xf0)>>4)|0x10, OLED_CMD);      //set column high address
    oled_write_byte((x&0x0f), OLED_CMD);                //set column low address
}

即可解决问题。

顺便开源几个函数:分别为调整对比度、取反色、屏幕全亮、图像沿X轴翻转。
/**
* @brief   set the OLED contrast
*
* @param   contrast 0-255
*/
void oled_contrast_set(uint8_t contrast)
{
    oled_write_byte(0x81, OLED_CMD);
    oled_write_byte(contrast, OLED_CMD);
}

/**
* @brief set the reverse mode
*
* @param on normal display(0) or reverse display(1)
*/
void oled_reverse_play(bool on)
{
    oled_write_byte(0xa6+on, OLED_CMD);
}

/**
* @brief all points turn on or normal display
*
* @param on normal display(0) or entire display on(1)
*/
void oled_entire_dispay(bool on)
{
    oled_write_byte(0xa4+on, OLED_CMD);
}
/**
* @brief Invert OLED on the X-axis  
*
* @param rollover: right(0) or left(1) display
*/
void oled_dispaly_rollover(bool rollover)
{
    if(rollover)oled_write_byte(0xa0, OLED_CMD);
    else oled_write_byte(0xa1, OLED_CMD);
}


注:bool类型调用<stdbool.h>。











跳转到指定楼层

[嵌入式] 官方OLED模块_bug解决与额外功能函数开源

[复制链接]
中士jasongag
2020-7-27 13:52:33 显示全部楼层
我也遇到过。。。膜拜下

[嵌入式] 官方OLED模块_bug解决与额外功能函数开源

[复制链接]
上士clouder
 楼主| 前天 02:20 显示全部楼层
jasongag 发表于 2020-7-27 13:52
我也遇到过。。。膜拜下

都没好好应用,就已经停产了,大家可能都有替代方案,或是需求不大。官方代码bug可能也有一定原因吧,这bug说实话太隐蔽了,一个多月才找到,也可能是我太菜
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2020 RoboMasters 版权所有 备案号 粤ICP备12022215号

快速回复 返回顶部 返回列表