找回密码
 立即注册
查看: 93|回复: 4

我这个oled两边都有花纹是咋回事,

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:463
  • 最近打卡:2025-08-23 00:00:07
已绑定手机

151

主题

1841

回帖

2162

积分

金牌会员

积分
2162
发表于 6 天前 来自手机 | 显示全部楼层 |阅读模式
类似于乱码一样,
不是用的硬件iic,用的软件iic

IMG_1303.jpeg
回复

使用道具 举报 送花

3

主题

2031

回帖

910

积分

等待验证会员

积分
910
发表于 6 天前 | 显示全部楼层
您提到的OLED屏幕两侧出现类似乱码的花纹,可能是由多种原因引起的。根据您的描述,您使用的是软件I2C而非硬件I2C,这可能对通信稳定性产生一定影响。以下是对该问题的专业分析与建议:

1. 软件I2C的时序问题  
   软件I2C是通过GPIO模拟I2C协议的时序,相比硬件I2C,其时序控制不够精确,容易受到系统任务调度、中断响应等因素的影响。若时序不准确,可能导致OLED在接收数据过程中出现错误,从而显示异常图案或乱码。

2. 电源和地线不稳定  
   OLED模块对电源波动较为敏感,尤其是高亮度显示时。如果电源设计不合理或地线连接不良,可能会导致信号干扰,造成显示异常。建议检查电源电压是否稳定,并确保地线连接良好。

3. OLED驱动程序配置问题  
   OLED驱动程序中的一些参数设置(如分辨率、刷新率、颜色模式等)如果不正确,也可能导致显示异常。请确认您使用的驱动程序是否适用于当前OLED型号,并检查相关配置是否符合规格书要求。

4. 通信线路干扰  
   软件I2C通常使用GPIO引脚进行通信,若布线不当或存在电磁干扰,可能导致信号传输不稳定,进而引发显示异常。建议优化PCB布局,减少信号线之间的耦合,并考虑增加滤波电容以提高抗干扰能力。

5. OLED模块自身故障  
   如果上述因素均排除后问题仍然存在,可能是OLED模块本身存在缺陷或损坏。建议更换同型号模块进行测试,以确认是否为硬件问题。

综上所述,建议您从以下几个方面入手排查:  
检查软件I2C的时序实现是否准确;  
确保电源和地线稳定可靠;  
核对OLED驱动程序配置;  
优化通信线路设计;  
测试其他OLED模块以排除硬件故障。

如需进一步协助,请提供具体的OLED型号、主控芯片型号以及相关代码片段,以便更精准地定位问题。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:536
  • 最近打卡:2025-08-23 05:54:51
已绑定手机

86

主题

5977

回帖

1万

积分

超级版主

积分
10824
发表于 5 天前 | 显示全部楼层
可能是显示区域或地址设置不正确,I2C速度过快也可能造成这个问题
I2C时钟不要超过400K,SSD1306初始化程序参考:
  1. void SSD1306_Init(void)
  2. {
  3.         SSD1306_Write_CMD(0xAE);        //Set Display OFF(设置显示关)
  4.         SSD1306_Write_CMD(0xA1);        //Set Segment Remap(设置列重映射)
  5.         SSD1306_Write_CMD(0xA8);        //Set Multiplex Ratio(设置行通道数)
  6.         SSD1306_Write_CMD(0x3F);        //63
  7.         SSD1306_Write_CMD(0xC8);        //Set COM Output Scan Direction(设置行重映射)
  8.         SSD1306_Write_CMD(0xD3);        //Set Display Offset(设置垂直偏移量)
  9.         SSD1306_Write_CMD(0x00);        //0
  10.         SSD1306_Write_CMD(0xD5);        //Set Display Clock Divide Ratio/Oscillator Frequency(设置显示时钟分频器、振荡器频率)
  11.         SSD1306_Write_CMD(0xF0);        //0xF0
  12.         SSD1306_Write_CMD(0x8D);        //Charge Pump Setting(设置电荷泵)
  13.         SSD1306_Write_CMD(0x14);        //0x14(启用电荷泵,设置为9V)
  14.         SSD1306_Write_CMD(0xDB);        //Set VCOMH Deselect Level(设置VCOMH电压)
  15.         SSD1306_Write_CMD(0x30);        //0x30(0.83*VCC)
  16.         SSD1306_Write_CMD(0x81);        //Set Contrast Control(设置对比度)
  17.         SSD1306_Write_CMD(0x7F);        //127
  18. //        SSD1306_Write_CMD(0xA7);        //Set Normal/Inverse Display(设置反相显示)
  19.         SSD1306_Clear();
  20.         SSD1306_Write_CMD(0xAF);        //Set Display ON(设置显示开)
  21. }
复制代码
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:463
  • 最近打卡:2025-08-23 00:00:07
已绑定手机

151

主题

1841

回帖

2162

积分

金牌会员

积分
2162
发表于 5 天前 | 显示全部楼层
Debu*** 发表于 2025-8-18 18:29
可能是显示区域或地址设置不正确,I2C速度过快也可能造成这个问题
I2C时钟不要超过400K,SSD1306初始化程序 ...

回头我试试,  因为我用的是 ssd1315  . 好像说1315的宽度要大点

点评

程序是通用的,显示区域尺寸一致,1315的边框窄了  详情 回复 发表于 5 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:536
  • 最近打卡:2025-08-23 05:54:51
已绑定手机

86

主题

5977

回帖

1万

积分

超级版主

积分
10824
发表于 5 天前 | 显示全部楼层
vb2*** 发表于 2025-8-18 19:39
回头我试试,  因为我用的是 ssd1315  . 好像说1315的宽度要大点

程序是通用的,显示区域尺寸一致,1315的边框窄了,OLED模块PCB尺寸也缩小了
绿色是大尺寸,红色是小尺寸:

截图202508182108291300.jpg


回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-23 22:34 , Processed in 0.130717 second(s), 77 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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