U8G2 显示位图

任务目标:

在SSD1306显示一张16x16像素的图标,如下图:
在这里插入图片描述
图片明显大于16x16,需要将图片缩放到16x16并显示在LCD屏幕上。
目标屏幕参数如下:
在这里插入图片描述
width:128pix
height:32pix

需要两个工具:

1.Image2LCD
2.PctoLCD

PctoLCD可以编辑一张位图的每个像素点,如果手绘能力够强,可以自己用PctoLCD画像素画来制作位图。也可以打开一张现有的位图,编辑它的每个像素点,让最后的显示效果更接近自己的要求。
在这里插入图片描述

Image2LCD可以直接把一张图转换成适合LCD显示的图片或者C语言数组。
在这里插入图片描述
因为Image2LCD可以直接将图片缩放并转成C语言数组,所以一开始就用它直接转成数组放进程序来显示,结果发现显示出来的图片出现很多脏点。同时还伴随一些像素点的缺失。如下图所示:
在这里插入图片描述

在这里插入图片描述

所以需要用image2LCD将图片存为BMP图片文件。再用PctoLCD编辑这张BMP图片。为什么不用Photoshop直接保存成BMP图片?因为用ps缩放保存后的位图是这样的。。。
在这里插入图片描述
已经完全看不出来图片原有的样子了。

继续说正确的方法。

在这里插入图片描述
用Image2LCD打开图片后修改参数,参数值参考红圈内的数据。最后保存成一张位图文件。

再用PctoLCD打开上一步保存的位图文件。如图:
在这里插入图片描述
这时看到的像素点仍有位置不对的。需要手动调整一下。
鼠标左键点一下对应像素点可以增加一个显示点。
右键点击可以去除一个像素点。
根据原图对这个图片手动做些调整如下:
在这里插入图片描述
然后生成字模:
生成字模参数如下:
在这里插入图片描述
确定之后会下下方显示字节数组:
在这里插入图片描述
将这些数值复制下来,粘贴到自己的程序里。刷机运行即可得到显示效果。

在这里插入图片描述

生成的数组里最后的这截不能要!
在这里插入图片描述
程序中和显示位图相关的代码:
u8g2.drawXBMP(2, 2, 16, 16, gImage_123);
gImage_123是生成的图片数组名。

最后放上最终显示效果:
在这里插入图片描述

附上两个软件的下载地址:

pctolcd:
链接:https://pan.baidu.com/s/13toXSYkKidi86hpd8ttQ1A
提取码:1234

image2lcd:
链接:https://pan.baidu.com/s/15g40kGk7YG3hOJ0kSDTyIQ
提取码:1234

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于STM32微控制器使用U8g2显示中文,需要进行以下步骤: 1. 下载U8g2库:前往GitHub上的U8g2仓库(https://github.com/olikraus/u8g2),下载最新版本的U8g2库。 2. 将U8g2库添加到您的工程中:将下载的U8g2库文件夹中的 "src" 文件夹下的所有文件添加到您的工程中。 3. 在代码中配置U8g2库:在您的代码中,包含U8g2库的头文件,并根据U8g2库的文档进行相关配置。例如,选择合适的显示驱动程序和字体配置。 4. 添加中文字库:在U8g2库的 "u8g2_fonts.c" 文件中,可以找到多种字体。您可以根据需要选择合适的中文字库,然后将其添加到您的工程中。 5. 使用U8g2显示中文:在代码中使用U8g2库提供的函数进行中文显示。例如,使用 `u8g2_DrawUTF8()` 函数来显示UTF-8编码的中文字符。 以下是一个简单的示例代码片段,演示了如何使用U8g2显示中文: ```c #include <U8g2lib.h> // 根据您的显示驱动和字体需求进行配置 U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0); void setup() { u8g2.begin(); } void loop() { u8g2.clearBuffer(); u8g2.setFont(u8g2_font_wqy12_t_gb2312); u8g2.setCursor(0, 20); u8g2.println("你好,世界!"); u8g2.sendBuffer(); delay(1000); } ``` 请注意,以上示例中的字体 `u8g2_font_wqy12_t_gb2312` 是一种常用的中文字体,您可以根据需要选择其他字体。 希望对您有所帮助!如有更多问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值