OLED模块显示自己想要的字和图片


前言

这篇文章不记录有关OLED的初始化以及工作原理等概念,仅以实用性出发,如何在OLED上显示自己想要的字

一、汉字取模

我们需要先有一个取模软件,我这里演示的是PCtoLCD2002,实际为白嫖软件。

链接:PCtoLCD2002百度网盘
提取码:qc22

二、使用步骤

1.新建文档

在这里插入图片描述
点击文件→新建

在这里插入图片描述

之后会弹出这个窗口,输入你想要的尺寸。这里我采取12*12的格式。

在这里插入图片描述

之后在模式中选择字符模式
字宽字高调节为12*12 具体尺寸看最开始新建的尺寸
截图时我并没有修改

之后点击选项,弹出这个
在这里插入图片描述
在我画蓝线的位置进行修改,点阵索引根据刚才自己设置的规格设置
这是我设置好后的样子
在这里插入图片描述
之后就可以在中间的框里输入你想要显示的字

在这里插入图片描述
字模就已经取好了。

2.写入程序

找到程序的字符库数组

unsigned char Hzk5[16][12]={


{0x02,0x04,0x80,0x20,0x18,0x87,0x74,0x84,0x04,0x14,0x0C,0x00},
{0x02,0x01,0x08,0x04,0x02,0x01,0x00,0x01,0x02,0x04,0x08,0x00},

{0x48,0x2A,0x98,0x7F,0x28,0x4A,0x10,0xEF,0x08,0xF8,0x08,0x00},
{0x09,0x0B,0x05,0x05,0x0B,0x00,0x08,0x05,0x02,0x05,0x08,0x00},

{0xFE,0x22,0x22,0xFE,0x00,0x08,0x48,0x88,0x08,0xFF,0x08,0x00},
{0x07,0x02,0x02,0x07,0x00,0x00,0x00,0x09,0x08,0x0F,0x00,0x00},

{0x00,0xF9,0x02,0xF8,0x49,0x49,0x49,0x49,0xF9,0x01,0xFF,0x00},
{0x00,0x0F,0x00,0x03,0x02,0x02,0x02,0x02,0x0B,0x08,0x0F,0x00},

{0x20,0x10,0x2C,0x23,0xE0,0x20,0x20,0x23,0xEC,0x10,0x20,0x00},
{0x00,0x08,0x04,0x03,0x00,0x08,0x08,0x08,0x07,0x00,0x00,0x00},

{0x12,0xD2,0xFE,0x91,0x40,0x38,0x00,0xFF,0x00,0x04,0xB8,0x00},
{0x01,0x00,0x0F,0x00,0x08,0x08,0x04,0x04,0x02,0x01,0x00,0x00},

{0x62,0x22,0xBA,0xAA,0xAA,0xAB,0x6A,0x6A,0x3A,0x22,0x62,0x00},
{0x00,0x08,0x0A,0x0A,0x0A,0x07,0x0D,0x0D,0x09,0x08,0x0C,0x00},

{0x62,0x22,0xBA,0xAA,0xAA,0xAB,0x6A,0x6A,0x3A,0x22,0x62,0x00},
{0x00,0x08,0x0A,0x0A,0x0A,0x07,0x0D,0x0D,0x09,0x08,0x0C,0x00},


};

将转换好的字模数组替换到程序源码里的字符库内,一定注意不同尺寸的字符库不是一个数组。并且这里每一个字的数组被分为了两个,所以注意修改数组定义的第一个参数。

之后再在显示函数中使用就可以了,这里一定要注意字对应的x,y坐标,往往两个字之间取2个单位作为间隔。

下面给出我的效果
在这里插入图片描述

三、显示图片

照片格式转换

这里需要将我们想要转换的照片进行格式转化,并且转换成像素为128*64以内的大小。
这里我使用的是Img2lcd(提取码:rw4k)
如图在这里插入图片描述

点击左上角的 “打开”,选择我们想要进行转换的照片,将 **“最大宽度和高度”**设置为128和64来匹配我们的OLED屏幕,上面的扫描模式不需要我们进行设置,因为 **“输出数据类型”**我们设置的是BMP格式,不同的扫描模式没有区别。

我们还可以看到右侧的图片预览图,通过调整下方的亮度与对比度来调整线条。

最后我们点击上方的保存即可。

BMP图片转换为代码

这里我们还是使用PCtoLCD2002取模软件。
在这里插入图片描述
点击那个文件夹图标,选择上我们的BMP照片,之后点击选项,像汉字取模一样进行设置。

在这里插入图片描述
生成字模之后,我们需要注意字宽,字高旁边有个图像大小,这里的大小我们需要记住,后面写函数的时候需要用到。

代码

在代码中我们先定义一个数组保存我们的这个字模数据,之后调用库里的绘图函数。

void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
{
	unsigned int j=0;
	unsigned char x,y;

  if(y1%8==0)
		y = y1/8;
  else
		y = y1/8 + 1;
	for(y=y0;y<y1;y++)
	{
		OLED_SetPos(y,x0);
    for(x=x0;x<x1;x++)
		{
			WriteDat(BMP[j++]);
		}
	}
}

可以看到这个函数入口参数有五个,第一个和第二个为一对,代表图片左上角坐标,第三个和第二个为一对,代表右下角坐标,这里的y坐标代表的是第几页,所以参数范围为0-8,根据y在哪一页进行写函数,第五个参数为数组指针,将这些参数正确编写之后就可以让oled进行图片的显示。

下面是样例:
在这里插入图片描述
但是因为图片分辨率太小,导致显示效果不佳,但是还是大致能看出效果的。

根据两个图片的延迟、切换,就能够实现gif的显示,还需要大家自己进行尝试了。

总结

OLED显示可以很有趣味显示一些自己想要的东西,这篇文章仅供参考。

写在最后

本人小白一枚,这些仅仅是我个人的经验与认知,也许含有多处错误,希望读者给我指正。

  • 18
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值