楼主

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

[复制链接]
英雄clouder
2020-7-25 22:24:59 只看该作者

马上注册,玩转Robomaster!

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

x
官方的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
 楼主| 2020-8-3 02:20:15 只看该作者
jasongag 发表于 2020-7-27 13:52
我也遇到过。。。膜拜下

都没好好应用,就已经停产了,大家可能都有替代方案,或是需求不大。官方代码bug可能也有一定原因吧,这bug说实话太隐蔽了,一个多月才找到,也可能是我太菜
地板

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

[复制链接]
步兵jasongag
2020-8-16 23:44:23 只看该作者
clouder 发表于 2020-8-3 02:20
都没好好应用,就已经停产了,大家可能都有替代方案,或是需求不大。官方代码bug可能也有一定原因吧,这b ...

这个应该只是作为产品技术储备吧,各个队伍在性价比和实用性上肯定有更好的选择。
5#

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

[复制链接]
正式队员jiangxiaoyu
2020-11-28 09:42:40 只看该作者
啊,这样的问题都能找到,果然还是我太菜了
6#

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

[复制链接]
梯队队员djiuser_vKykKPf
2021-1-17 10:40:26 只看该作者
可是改了之后还是有些许闪动,有方法吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2024 RoboMasters 版权所有 备案号 粤ICP备2022092332号

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