• OLED显示图片


    前言

    本文主要介绍了使用单片机如何在Oled12864上显示图片,以及相关的注意事项,若文章有不当之处,欢迎在评论区交流讨论.(又水了一篇文章~)

    图像取模

    打开Img2Lcd软件,然后载入目标jpg图片

    按照图片上面的选项设置

    1. 输出数据类型:C语言数组
    2. 扫描模式: 数据水平,字节垂直(列行式)
    3. 输出灰度:单色(黑白)
    4. 最大宽度和高度: 128*64
      • 字节内像素数据反序

    注意观察下边的输入图像尺寸和输出图像的尺寸大小,否者Oled显示乱码

    我们设置好之后点击上方栏的保存,然后它会自动打开记事本,这时候我们就去复制数据

    在你代码中定义同等大小的数组(当然你可以全部复制黏贴)即可.我们可以采用结构体方式,这样方便定位图像数据,如下所示.

    显示图像

    /**
     * @brief 在OLED上绘制位图
     *
     * 根据给定的位图参数,在指定位置绘制相应的图像。
     *
     * @param x 位图左上角的X坐标。
     * @param y 位图左上角的Y坐标。
     * @param l 位图的长度。
     * @param w 位图的宽度。
     */
    void oled_draw_bmp(uint8_t x, uint8_t y, uint8_t l, uint8_t w) {
        // 计算位图每行的字节数,flag用于标记是否有剩余的不足一个字节的位
        uint8_t flag = (l % 8 == 0) ? 0 : 1;
        // 计算位图总共有多少行
        uint8_t rows = l >> 3;
        // 循环遍历每一行
        for (uint8_t row = 0; row < rows + flag; row++) {
            // 循环遍历每一列
            for (uint8_t column = 0; column < w; column++) {
                // 获取位图中相应位置的字节数据
                uint8_t bmp_byte = bmp_init.oled_ui[row * w + column];
                // 循环遍历字节中的每个位
                for (uint8_t bit = 0; bit < 8; bit++) {
                    // 检查当前位是否为1,如果是则在OLED上绘制点
                    if (bmp_byte & (1 << bit)) {
                        oled_draw_point(x + column, y + row * 8 + bit);//这里为你的画点函数
                    }
                }
            }
        }
    }
    
    • 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

    如果最后Oled屏幕显示乱码,请检查是否按照如上设置,以及输出图像的尺寸是否正确

    仅供测试代码

    oled_draw_bmp(0,0,64,128);
    
    • 1

    效果展示

    讨论

    虽然网上有很多不同的取模软件,但如果我们熟悉了解四种扫描模式,并掌握Oled屏幕的显示原理,其实都是通用的,作者本人就不在这详细介绍了T_T

  • 相关阅读:
    linux篇【11】:linux下的线程<后序>
    HTTPS协议详解
    2.MySQL ---- 修改数据库的字符集(日常小技巧)
    java设计模式之命令设计模式的前世今生
    JDBC概述详解
    代码Review清单
    【OpenCV实现平滑图像形态学变化】
    论文阅读:Neural Graph Collaborative Filtering
    Java 异常处理的使用和思考
    数据库搭建与使用
  • 原文地址:https://blog.csdn.net/qq_61637982/article/details/133954396