打印
[技术讨论]

请教一下IIC通讯的OLED显示问题

[复制链接]
2039|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guyueKT|  楼主 | 2021-5-3 13:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
OLED是0.96寸,IIC通讯,128*64已经能正常显示了,但是刷屏速度奇慢,拿擦除数据举例刚开始用了示例程序,一次IIC通讯擦除一个字节,整个屏幕擦除要30秒。
        for(i=0;i<8;i++)  
        {  
                OLED_WR_Byte (0xb0+i,OLED_CMD);    //设置页地址(0~7)
                OLED_WR_Byte (0x00,OLED_CMD);      //设置显示位置—列低地址
                OLED_WR_Byte (0x10,OLED_CMD);      //设置显示位置—列高地址   
                for(n=0;n<128;n++) OLED_WR_Byte(0,OLED_DATA);    //写1个字节
        }

后来改为一次通讯擦除一行,共128个字节,整个屏幕擦除要7秒。
        for(i=0;i<8;i++)
        {
                OLED_Set_Pos(0, i);
                for(n=0;n<128;n++)          picture_tab[n]=0x00;  
                IIC_Write_Data_Page(picture_tab);
        }

但还是有点慢。
求指点一下更快的方法。

使用特权

评论回复
评论
zyj9490 2021-5-5 11:20 回复TA
应是模拟IO端口的问题,延时太多吧。非驱动问题。 
guyueKT 2021-5-3 15:12 回复TA
@tyw :还是感觉慢,以肉眼可见的速度在打点 
tyw 2021-5-3 13:32 回复TA
对有变化数据定点刷新 

相关帖子

沙发
PPDDPPDD1234| | 2021-5-3 19:27 | 只看该作者
人家的例程就有,速度很快的。

使用特权

评论回复
板凳
linxi6414| | 2021-5-4 09:07 | 只看该作者
这个屏我也在用,我这边用的是SPI模式,写整个屏的时间才7.1ms。

使用特权

评论回复
地板
guyueKT|  楼主 | 2021-5-4 11:12 | 只看该作者
linxi6414 发表于 2021-5-4 09:07
这个屏我也在用,我这边用的是SPI模式,写整个屏的时间才7.1ms。

我刚问过厂家了,7s算慢了,2-3s刷新才算正常速度

使用特权

评论回复
5
oufuqiang| | 2021-5-4 11:21 | 只看该作者
#include "REG51.h"
//本程序在标准8052单片机(STC89C52)以12MHz运行。底层已优化到最快。
//因为是追求速度,所以如果你的单片机IO速度太快,需要自己在Write_IIC_Byte加点延时进去。
几十帧还是有的,老的8052单片机都能刷这个速度
SSD1306驱动的128x32OLED模块I2C接口驱动.rar (3.63 KB)




使用特权

评论回复
6
lvyunhua| | 2021-5-4 12:03 | 只看该作者
修改程序吧,这么慢谁看啊

使用特权

评论回复
7
xouou_53320| | 2021-5-4 12:39 | 只看该作者
擦除不是有擦除指令吗,  你这一行行自己慢慢擦是咋回事

使用特权

评论回复
8
YDCMAN| | 2021-5-4 12:40 | 只看该作者
提高主频,12M低了,刷新时能清晰看到刷新过程,建议48m以上

使用特权

评论回复
9
guyueKT|  楼主 | 2021-5-4 14:47 | 只看该作者
xouou_53320 发表于 2021-5-4 12:39
擦除不是有擦除指令吗,  你这一行行自己慢慢擦是咋回事

我去看了一下SS1306的资料,擦除没有特殊指令

使用特权

评论回复
10
coody| | 2021-5-4 18:57 | 只看该作者
我用的I2C接口的0.96寸128*64 OLED屏控制器是SSD1306,一般测试我用2MHz的速度访问没问题,做产品就用1MHz。
按1MHz,刷新一屏要写入1024字节显示数据,还要写一二些控制、地址命令字节,一般在12ms就可以清屏(全写0x00)或全显(0xff)。

使用特权

评论回复
11
FYLZLXD| | 2021-5-4 22:52 | 只看该作者
我觉得是楼主得  OLED_WR_Byte 等I2C 得函数没写好, 应该是IO 模拟的I2C ,位延时太多了。

使用特权

评论回复
12
yauxiacao| | 2021-5-5 11:04 | 只看该作者
应该是你MCU主频本身就不高,然后还分频了吧,指令周期比较长,所以要相对减少子程序中nop的数量,以保证显示正常,刷新也达到平衡

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

34

帖子

1

粉丝