找回密码
 立即注册
查看: 208|回复: 15

【视频】简单聊一聊OLED的取模顺序并且手搓一个显示函数

[复制链接]
  • TA的每日心情
    开心
    前天 12:01
  • 签到天数: 98 天

    [LV.6]常住居民II

    11

    主题

    133

    回帖

    1141

    积分

    荣誉版主

    积分
    1141
    发表于 2024-3-22 12:21:24 | 显示全部楼层 |阅读模式
    本帖最后由 大明狐 于 2024-4-12 17:39 编辑

    Part 1:简单聊一聊OLED的取模顺序,了解了取模顺序,就可以写出需要的显示函数了





    Part 2:手搓一个显示函数的过程记录







    2 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 天前
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    16

    主题

    711

    回帖

    2528

    积分

    超级版主

    积分
    2528
    发表于 2024-3-22 12:57:02 | 显示全部楼层
    膜拜大神
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:35
  • 签到天数: 61 天

    [LV.6]常住居民II

    3

    主题

    558

    回帖

    766

    积分

    高级会员

    积分
    766
    发表于 2024-3-22 13:19:05 来自手机 | 显示全部楼层
    学习了
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 61 天

    [LV.6]常住居民II

    0

    主题

    184

    回帖

    374

    积分

    中级会员

    积分
    374
    发表于 2024-3-24 00:17:05 | 显示全部楼层
    又碰到大明狐老大了,请教一下是不是sh1106不能采用水平地址扫描的方式啊,这两天一直没搞出来,不是说它和ssd1306是兼容的吗

    点评

    查看SH1106的数据手册发现确实没有关于寻址模式的指令 [attachimg]39457[/attachimg] 并且手册里也提到了当遇到需要换行的时候 需要自行给Column号置零和给Page号加一 [attachimg]39458[/attachimg] 试了一下  详情 回复 发表于 2024-3-24 11:00
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 12:01
  • 签到天数: 98 天

    [LV.6]常住居民II

    11

    主题

    133

    回帖

    1141

    积分

    荣誉版主

    积分
    1141
     楼主| 发表于 2024-3-24 11:00:30 | 显示全部楼层
    xxxevery 发表于 2024-3-24 00:17
    又碰到大明狐老大了,请教一下是不是sh1106不能采用水平地址扫描的方式啊,这两天一直没搞出来,不是说它和 ...

    查看SH1106的数据手册发现确实没有关于寻址模式的指令

    SH1106page2.jpg



    并且手册里也提到了当遇到需要换行的时候
    需要自行给Column号置零和给Page号加一
    SH1106page.jpg



    试了一下,SH1106默认只有页地址模式
    IMG_20240324_104830.jpg

    超过右边界之后会从同一行的左边第0列开始显示

    但是因为SH1106是132×64点阵的驱动芯片
    所以还有一部分数据会“显示”在屏幕外面。
    所以即便是兼容,也还是建议使用指定行列坐标的方式显示内容





    这些芯片型号的屏幕说的兼容
    说的是一些能保证基本显示功能的配置
    比如显示位置等等
    就像同样是128×64的SSD1306的滚屏和反色,在SSD1315上就是无效的


    能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:31
  • 签到天数: 48 天

    [LV.5]常住居民I

    0

    主题

    157

    回帖

    365

    积分

    中级会员

    积分
    365
    发表于 2024-3-24 11:06:46 | 显示全部楼层
    视频对屏幕的基本原理讲得通透,

    点评

    谢谢肯定^o^  发表于 2024-3-24 13:37
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 61 天

    [LV.6]常住居民II

    0

    主题

    184

    回帖

    374

    积分

    中级会员

    积分
    374
    发表于 2024-3-24 12:08:42 | 显示全部楼层
    谢谢大明狐老大的回复,就只能按着页面寻址模式来弄了,我是用缓存来刷新oled显存的,本来想着直接一个for循环就写完了,没想着居然不行啊,怪不得sh1106屏的价格比ssd1306屏便宜不老少呢

    点评

    用缓存数组的数据刷新oled显存,用一个for循环的方式,只适合SSD1306或者SSD1315之类驱动芯片的屏幕 因为这两种芯片都是128×64点阵的,所以在水平寻址模式下,显存可以用1024次循环直接填满 [attachimg]3948  详情 回复 发表于 2024-3-24 13:22
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 12:01
  • 签到天数: 98 天

    [LV.6]常住居民II

    11

    主题

    133

    回帖

    1141

    积分

    荣誉版主

    积分
    1141
     楼主| 发表于 2024-3-24 13:22:31 | 显示全部楼层
    xxxevery 发表于 2024-3-24 12:08
    谢谢大明狐老大的回复,就只能按着页面寻址模式来弄了,我是用缓存来刷新oled显存的,本来想着直接一个for ...





    用缓存数组的数据刷新oled显存,用一个for循环的方式,只适合SSD1306或者SSD1315之类驱动芯片的屏幕



    因为这两种芯片都是128×64点阵的,所以在水平寻址模式下,显存可以用1024次循环直接填满
    SSD1306.jpg SSD1315.jpg



    但是SH1106、SH1107之类驱动芯片,是132×64点阵的
    (我录视频用的1.3寸屏,就是SH1106驱动芯片的)
    SH1106.jpg


    而我们用的128×64的屏幕,出厂的时候,连接的都是中间的部分,两侧都有两列没有使用
    1.3cun12864.jpg

    这也是为什么在用SH1106的屏幕的时候,起始列坐标要右移2才能正常显示
    否则从第0列开始,图像就会有两列显示不全,并且右边会有两列花屏的原因


    所以假设SH1106也可以用水平寻址模式,那么要自动填满数据,需要的也不止是1024次循环。


    所以刚才说到一点,还是建议使用指定行列坐标的方式
    行和列分别两个循环,同时在定位函数里统一右移2,
    然后128个数据一组进行填充,
    这样就能保证填充的是能看到的128×64的区域了。
    (U8g2里SH1106屏幕的刷新屏幕函数,用的也是这个方式)
    如果用SSD1306的屏幕,还是用一个循环和自加的方式填充效率更高。

    能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:31
  • 签到天数: 48 天

    [LV.5]常住居民I

    0

    主题

    157

    回帖

    365

    积分

    中级会员

    积分
    365
    发表于 2024-3-24 15:37:09 | 显示全部楼层
    明白,原来有些屏需要移位是这样来的。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 12:01
  • 签到天数: 98 天

    [LV.6]常住居民II

    11

    主题

    133

    回帖

    1141

    积分

    荣誉版主

    积分
    1141
     楼主| 发表于 2024-4-12 17:39:19 | 显示全部楼层
    一楼更新一段手搓显示函数的过程记录
    能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-6 01:15 , Processed in 0.711530 second(s), 71 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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