STM32驱动0.96寸OLED显示图片

STM32驱动0.96寸OLED显示图片

  1. 将需要显示的图片(以jpeg格式为例)通过 convertio 转换为 bmp 格式;
  2. 打开 Windows 画图编辑图片,将图片缩放为 128x64 分辨率大小;
  3. 打开 搞定设计在线PS(photopea 中国版),点击菜单栏 图像->调整->阈值 可以在二值化过程中顺便去除噪点,保存成 bmp 格式;
  4. 打开取模工具 PCDtoLCD2002,导入第三步保存的 bmp 图片后预览效果。打开字模选项,按下图红圈方式设置后点击确定按钮保存设置,最后点击生成生成一个长度为 1024 的一维数组,复制备用;

  1. 粘贴下面代码到源文件中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const unsigned char images[1][1024] = {
{...你的图片...},
};

// 显示图片(通过改变索引值和图片对应的像素可以显示不同像素的图片)
// x,y: 图片的起点坐标
// px,py: 图片的像素(与实际取模的图片像素一致)
// index: 图片索引
void OLED_ShowBMP(u8 x, u8 y, u8 px, u8 py, u8 index, u8 mode)
{
u8 temp,t1;
u16 j,i;
u8 y0=y;

i = (px/2)*(py/4);

for(j = 0; j < i;j++)
{
temp = images[index][j]; //调用图片
for(t1=0;t1<8;t1++)
{
if(temp&0x80)OLED_DrawPoint(x,y,mode);
else OLED_DrawPoint(x,y,!mode);
temp<<= 1;
y++;
if((y-y0) == py)
{
y=y0;
x++;
break;
}
}
}
}
  1. 调用方法显示图片
1
2
OLED_ShowBMP(0, 0, 128, 64, 0, 1);
OLED_Refresh_Gram(); //更新显示到OLED
NOTES

如果你需要显示多张图片,可以把其它图片加到 images 数组中,然后在调用 OLED_ShowBMP 函数时注意指定 index 为相应的值即可。

参考资料

  1. 0.96寸OLED显示图片
  2. 怎样在Photoshop中二值化