Arduino OLED/TFT屏【显示汉字、图案】保姆级教程

有很多同学们经常会想做一些显示类的功能实验,大多数同学通过各种资料都可以完成类似于OLED屏幕的点亮通电测试,但是随着实验的深入,有些同学就会想能不能显示些中文或者自己DIY小图案之类的,下面我们一起来看下用PCtolLCD取模软件来实现。

首先我们先下载PCtolLCD,下载完整后,直接解压到电脑里。

上图箭头标记的.exe结尾的,就是可执行程序。

下面我们找到一块板子,以UNO为例。

这是一块5V标准供电下,I2C协议的OLED显示器,我们把 线接上。接线顺序如下:

VCC       5V

GND      GND

SCL      A5

SDA     A4

打开网盘中的oled_hello程序

     用的库是SSD1306.h,其他的库也可以用,取模软件、程序和OLED的库文件都放在网盘里了, 下载后还需要把提供的libraries压缩包解压到自己IDE的libraries目录下,提供的压缩包是我所有的库文件合集,直接解压即可,屏幕不亮的同学请检查A4 A5是不是插反了,换着插试试。

 程序上传后效果如图:

下面把程序中的"hello",改成"你好",发现显示器出现了乱码,这个时候,说明我们用的这个SSD1306.h里没有字库,那我们就得用取字模的方式来显示中文了。

        首先,我们双击打开PCtoLCD软件。

然后我们把默认的A51格式改成C51格式,C51格式最后的像素单位是十六进制的,看起来更加的直观。

    下面开始创建汉字点阵,点击左上角文件,选择新建,出现输入图像尺寸的画面,这个就是字体的像素大小,一般情况下,像点阵之类的可以用8X8的大小,实际测试OLED用8X8取模起来太小,不方便,所以我们给改成16X16,更加容易操作。

软件分为字符模式和图形模式

 字符模式一般只用来生成汉字字模。

在箭头标记处打出你想显示的汉字,点击生成字模,汉字的点阵位置码就自动生成了。 

 

      图形模式一般用来绘制图案用的,下面就是看自己的绘制水平了,有耐心的情况下,都可以写出很好看的字或者图案。

这里我们写了个"大"字和一个简单的笑脸(写错像素点可用鼠标右键擦除)。

 

这个图案画完之后,下面就是取图案或者汉字的像素值了,这些坐标都是用十六进制来表示的,我们点击生成字模

下面出现了一个数组,这个数组里面的数据就是刚才我们画的笑脸的像素,这里我们直接把标记的全部复制。

     我们打开IDE软件,写这样的一行代码或者直接从网盘下载oled_test程序:

这个smile是数组的名称,可以自行修改,下面有个drawBitmap()函数,这是专门用来显示点阵像素用的,几个参数代表X坐标,Y坐标,宽度、高度、图像名称、1表示文字亮,0表示文字灭,最后一个参数是背景,0表示关闭,1表示打开,建议第一次用的时候跟我一样即可。

下面最重要的一步,把刚才取模软件里的数据复制到这个smile数组里(网盘下载的同学就不需要了,直接打开),注意,每个数据之间应该是逗号间隔,直接复制过来的数据中间有大括号,我们要把它删掉,改成逗号,末尾处应该是分号结尾。

程序上传到主板,发现刚才我们绘制的图案已经显示在OLED上了。

需要注意的是,我们不仅可以在OLED上绘制,TFT彩屏,或者其他类似原理的屏幕都可以用这种办法去写汉字。

  • 10
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在Arduino上的TFT屏幕显示图片,你可以按照以下步骤进行操作: 1. 确保你的TFT屏幕Arduino正确连接,并且已经安装了相应的库文件。你可以在Arduino的库管理器中搜索并安装适用于你的TFT屏幕控制器的库。 2. 将图片转换为适用于TFT屏幕的格式。TFT屏幕通常使用16位色彩模式,因此你需要将图片转换为16位色彩格式。可以使用图像处理软件(如GIMP)或在线工具来完成这个任务。 3. 在Arduino代码中引入必要的库文件,并初始化TFT屏幕。例如,对于Adafruit TFT屏幕,你可以使用Adafruit_GFX库和相应的驱动库。 4. 使用TFT屏幕的绘图功能来加载和显示图片。你可以使用绘图函数(如drawBitmap)将转换后的图片加载到屏幕上指定的位置,并设置适当的尺寸和缩放参数。 下面是一个简单的示例代码,展示了如何在Arduino上使用Adafruit TFT屏幕显示图片: ```Arduino #include <Adafruit_GFX.h> #include <Adafruit_ILI9341.h> #define TFT_CS 10 #define TFT_DC 9 #define TFT_RST 8 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST); // 图片数据数组 const unsigned short image[] = { // 在这里插入转换后的图片数据 }; void setup() { tft.begin(); tft.setRotation(3); // 设置屏幕方向,根据需要调整 } void loop() { // 清空屏幕 tft.fillScreen(ILI9341_BLACK); // 在坐标(0, 0)处显示图片 tft.drawBitmap(0, 0, image, image_width, image_height, ILI9341_WHITE); delay(5000); // 延迟一段时间后刷新屏幕 } ``` 请注意,上述示例代码中的`image[]`数组需要替换为你转换后的图片数据。还需要根据你使用的具体TFT屏幕和引脚配置进行适当的调整。 希望这能帮到你!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值