0.96 oled显示图片

oled显示图片

之前用oled显示了汉字,字符和数字,此篇简单介绍如何用oled显示图片
0.96寸OLED
0.96寸的oled只能显示单色,并且像素不大于12864的图片,因此适合自己需求的图片不好找。所以我们需要借助其他软件制作符合要求的图片。这里我用到了Image2Lcd和PCtoLCD2002两款软件。
1.Image2Lcd
打开软件,点击打开选择图片
在这里插入图片描述
输出数据类型:BMP格式(
.bmp)
扫描方式:水平扫描
输出灰度:单色
在左下角可以看到图片的输入宽、高是1024,所以要修改宽高到128x64范围内
点击保存
2.PCtoLCD2002
打开软件,模式选择为图形模式,打开刚刚从Image2Lcd导出的BMP图片
在这里插入图片描述
点开设置,设置格式。此处设置格式时要根据自己的oled进行设置,不同厂家生产的oled会略有差异
最后点击生成字模即可
在这里插入图片描述
取模成功后就要程序代码的编写
(本人使用的oled是用iic通信的)
1.在工程中添加一个bmp.h文件
创建一个数组,把图片的取模数据放到数组中
2.主函数的编写
这是oled.c文件中显示图片的函数(买oled时,从售后那里白嫖来的程序)

//x0,y0:起点坐标
//x1,y1:终点坐标
//BMP[]:要写入的图片数组
void OLED_ShowPicture(u8 x0,u8 y0,u8 x1,u8 y1,u8 BMP[])
{
	u32 j=0;
	u8 x=0,y=0;
	if(y%8==0)y=0;
	else y+=1;
	for(y=y0;y<y1;y++)
	 {
		 OLED_WR_BP(x0,y);
		 for(x=x0;x<x1;x++)
		 {
			 OLED_WR_Byte(BMP[j],OLED_DATA);
			 j++;
     }
	 }
	 
}

有了图片显示的函数,在主函数中直接调用即可,最后更新显示到oled
具体的过程就是如此,但是我遇到了几个问题还没有解决
1.keil5软件报错
引进数组调用函数后,编译工程出现报错:expected a “;”,定位到报错出发现也并没有缺少“;”。后来以为是中英输入法错了,删掉重新写一次,还是报错。网上各种搜也没有结果。最后在同伴的帮助下,发现在函数定义前加上“;”就解决了,应该是一个bug,总之是很奇怪。
2.图像显示闪烁
下载程序后,发现oled上的图像总是在很窄的范围内不停的闪烁。我的第一反应是图像的宽度设置不对,回到程序中增加了图像显示的终点坐标。重新下载后又出现了新问题,图像显示一下就消失了。当给板子断电再重新上电后,图像仍然是闪一下就显示,然后不显示了。目前这个问题我还没有弄明白是什么原因,也没找到解决方法。只能接下来继续找找了。

本人小白一个,文中如有错误还请见谅。

猜你喜欢

转载自blog.csdn.net/m0_46507918/article/details/109139058