找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机+oled显示程序问题

查看数: 2958 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-1-28 16:54

正文摘要:

楼主用的i2c oled,也就是四脚oled,原来一直用的128x64图片显示来做东西玩,最近想做的东西用到的图片是85x64格式,结果发现oled显示出现问题,自己改了很多地方都没法解决 右边出现了乱码,程序如下,是商家给的 ...

回复

ID:362076 发表于 2020-1-31 12:25
callmesbplease 发表于 2020-1-30 18:27
我试了一下改代码,也是图像能正常显示,但是列地址没有填充的空间发生了乱码,请问是缺少什么其他该有的 ...

首先确定你的图片取模方式和存放方式,确保它是完全适配图片绘制函数的,其次,1306写入数据的时候只修改被写入的部分,所以在全部开始之前要进行至少一次清屏,以保证每个像素的值是确定的状态。
ID:608920 发表于 2020-1-30 18:27
凌净清河 发表于 2020-1-30 08:56
你琢磨琢磨,你图片是85*64的,OLED是128*64的,在绘制的时候应该怎么选择范围?
OLED12864一共8个行寄 ...

我试了一下改代码,也是图像能正常显示,但是列地址没有填充的空间发生了乱码,请问是缺少什么其他该有的东西吗?
  1. void Picture()
  2. {
  3.   unsigned char x,y;
  4.   unsigned int i=0;
  5.   for(y=0;y<8;y++)
  6.     {
  7.       Write_IIC_Command(0xb0+y);
  8.       Write_IIC_Command(0x0);
  9.       Write_IIC_Command(0x10);
  10.       for(x=0;x<84;x++)
  11.         {
  12.           Write_IIC_Data(show[i++]);
  13.         }
  14.     }
  15. }
复制代码
ID:362076 发表于 2020-1-30 08:56
callmesbplease 发表于 2020-1-29 20:08
所以是我用页寻址方式不恰当,导致列上面128个点超出图片的取模范围了?

你琢磨琢磨,你图片是85*64的,OLED是128*64的,在绘制的时候应该怎么选择范围?
OLED12864一共8个行寄存器(0~7),每个行寄存器有128列(0~127),按照你图中表现的那样进行填充,那么应该是行寄存器0~7循环,列寄存器0~84循环填充。
ID:608920 发表于 2020-1-29 20:08
凌净清河 发表于 2020-1-29 15:37
你的图片绘制函数在做行填充的时候超界了。

所以是我用页寻址方式不恰当,导致列上面128个点超出图片的取模范围了?
ID:362076 发表于 2020-1-29 15:37
你的图片绘制函数在做行填充的时候超界了。

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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