STM32CubeIDE开发(十九),结合图片取模工具,stm32程序在LCD显示图片

这篇具有很好参考价值的文章主要介绍了STM32CubeIDE开发(十九),结合图片取模工具,stm32程序在LCD显示图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、图片取模工具(imag2lcd)

二、 工程设计

三、图片显示实现过程

四、编译及下载


一、图片取模工具(imag2lcd)

        我们前面将汉字显示时说过,嵌入式LCD屏显示就是通过LCD屏幕数据接口给每个屏幕像素给出一个颜色值实现实时渲染显示出来。只不过文字显示时,给出的是一个二进制点阵,然后根据二进制中的“1”或“0”值匹配给出程序设置的前景色或背景色。那么涉及图片显示时,图片本身就是携带了颜色信息的,那么我们就可以直接将颜色信息通过LCD接口推送给屏幕。

        图片取模工具(或叫图片转换工具,imag2lcd),如下图所示,可以将图片格式文件转换为图片点阵代码表,将每个像素的颜色数值给出为16进制数值表示的点阵。

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         该工具读者可以在网上搜索image2lcd进行下载,本文也上传了该工具到CSDN供大家按需下载:

LCD图像数据生成工具-嵌入式文档类资源-CSDN下载

二、 工程设计

        【1】本文借用了本博客专栏前面汉字显示博文的基础源码包,在该基础上进行图片显示。 本文采用的STM32L496VGT3-ali开发板,其LCD屏幕支持240*240像素输出。

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         只是为了讲述图片在LCD显示实现过程,本人直接在网上下载了一张240*240的图片,并将该图片转换为bmp格式。

        【2】由于是进行240*240图片刷新在整个屏幕,因此采用了SPI-DMA实现刷新屏幕像素,本专栏前面oled点亮博文中,就采用了直接刷新和DMA刷新两种方式设置屏幕背景实现点亮。现在先回顾一下DMA方式需要注意的细节。

        1)开启DMA支持

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         2)开启中断支持,然后保存生成输出代码

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         3)增加对中断回调的处理

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

三、图片显示实现过程

        按上面做好了准备工作,可以参考:

cubeIDE开发, stm32的OLED点亮及字符显示设计(基于SPI通信)_py_free的博客-CSDN博客

cubeIDE开发,结合汉字取模工具,在LCD输出各种字体_py_free的博客-CSDN博客

        先假设已经能点亮lcd屏幕了,现在开始实现图片在lcd屏幕输出显示过程。

       【1】 打来安装好的image2lcd工具,载入需要显示的图片,如下图进行设置。

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         【2】完成设置,点击保存按钮,在弹出的对话框,输入想要保存的文件名,注意,如果没输入文件名后缀,将默认为(.c)输出,本文采用(.h)输出,如下图。

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         【3】输出图像编码表如下图所示。

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         【4】将输出的"pyimg.h"文件拷贝到工程的ICore/ oled目录下,并为了消除编译告警信息,将gImage_pyimg的数据类型调整为"uint8_t"。

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         【5】在oled.h文件添加一个“void BSP_LCD_img_DMA();”函数声明,在oled.c文件中包含拷贝过来的头文件“include "pyimg.h"”,并实现“void BSP_LCD_img_DMA()”函数。

extern volatile uint8_t one_frame_done;//已在spi.c中用户自定义
//加载240*240*2的uint8_t格式颜色数组进行LCD屏幕显示
void BSP_LCD_img_DMA()
{
	/*gImage_pyimg 在pyimg.h中,大小WIDTH * HEIGHT *2=115200 */
	//需要分两次写入HAL_SPI_Transmit_DMA写入缓存大小uint16_t(0xfff,65535)
	one_frame_done = 0;
    /* 指定显存操作地址为全屏*/
    LCD_Address_Set(0, 0, WIDTH - 1, HEIGHT/2 - 1);
    Data_Cmd_State(1);/* 指定接下来的数据为数据 */
    /*DMA 写前半屏*/
    HAL_SPI_Transmit_DMA(&hspi1,gImage_pyimg, WIDTH*HEIGHT);
    while(!one_frame_done){/*release cpu and doing something else*/}
	one_frame_done = 0;
    /* 指定显存操作地址为全屏*/
    LCD_Address_Set(0, HEIGHT/2, WIDTH - 1, HEIGHT - 1);
    Data_Cmd_State(1);/* 指定接下来的数据为数据 */
    /*DMA 写后半屏*/
    HAL_SPI_Transmit_DMA(&hspi1,gImage_pyimg+WIDTH*HEIGHT, WIDTH*HEIGHT);
    while(!one_frame_done){/*release cpu and doing something else*/}
}

四、编译及下载

        【1】在main.c主函数中,加入按键1时调用“BSP_LCD_img_DMA”函数,实现图片在LCD屏幕显示。

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         【2】点击编译及点击运行按钮,加载程序到开发板上

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX

         【3】在开发板上点击按键1,观察显示效果

stm32显示照片,STM32CubeIDE开发实践案例,stm32,LCD显示图片,嵌入式,stm32cubeIDE,stm32cubeMX文章来源地址https://www.toymoban.com/news/detail-579109.html

到了这里,关于STM32CubeIDE开发(十九),结合图片取模工具,stm32程序在LCD显示图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeIDE开发(四), stm32调试信息串口通信输出显示

    目录 一、stm32串口配置 三、串口驱动功能调用及编译实现 四、编译测试         关于cubeIDE开发基本技巧及流程,本文不详细叙述,请参考:cubeIDE快速开发流程_py_free的博客-CSDN博客_cubeide汉化 一、stm32串口配置         本文采用的开发板是stm32L496VGT3,其有两个 USB 接口,

    2023年04月08日
    浏览(42)
  • 【STM32Cube开发记录】1-下载和安装STM32CubeIDE

    【STM32Cube开发记录】1-下载和安装STM32CubeIDE 【STM32Cube开发记录】2-STM32CubeProgrammer的使用 【STM32Cube开发记录】3-STM32CubeMX的使用 【STM32Cube开发记录】4-标准库 HAL库 LL库 【STM32Cube开发记录】5-寄存器和存储器映射 【STM32Cube开发记录】6-STM32核心功能 【STM32Cube开发记录】7-Debug调试功

    2024年01月17日
    浏览(34)
  • STM32CubeIDE开发(一),快速开发流程初体验

    目录 一、cubeIDE下载、安装  二、创建工程及配置芯片引脚 三、编码及编译 四、加载已编译程序到硬件及测试 五、程序运行效果 一、cubeIDE下载、安装         STM32CubeIDE是STM32Cube软件生态系统的一部分,是面向st芯片的高级C/C++开发平台,具有STM32微控制器和微处理器的外

    2024年02月02日
    浏览(41)
  • STM32CubeIDE开发实践案例-专栏总述

    STM32CubeIDE开发专栏总述 目录 一、本专栏基本结束 二、专栏内容及博文索引(共36篇)         2.1 基础知识         2.2 日志打印输出         2.3 内部功能         2.4 各种外设         2.5 RTOS系统结合         2.6 人工智能-cube.AI         2.7 篇外-RTThrea

    2024年02月15日
    浏览(29)
  • STM32CubeIDE开发(二十二), stm32的RS485/232串口通信开发要点

    目录 一、stm32串口通信         1.1 硬件流控          1.2 软件流控         1.3 串口通信参数 二、新建RS485通信工程         2.1 项目实现背景信息         2.2 项目配置         2.3 代码实现    三、RS485驱动调用及测试         3.1 接口调用        3.2 编

    2024年01月20日
    浏览(46)
  • STM32CubeIDE开发(十一), STM32实时时钟(RTC)写入及读取日历时间开发要点

    目录 一、RTC简介 二、工程创建及配置  三、驱动代码设计实现 四、编译及测试         实时时钟的缩写是RTC(Real_Time Clock),核心是晶振,晶振频率一般为32768 Hz 。它为分频计数器提供精确的与低功耗的实基信号。它可以用于产生秒、分、时、日等信息。为了确保时钟长期

    2024年01月16日
    浏览(36)
  • STM32CubeIDE开发(三十三), stm32人工智能开发应用实践(Cube.AI).篇三

    目录 一、cube.AI实际项目应用 二、创建工程 2.1 工程配置 2.2 外设代码设计 2.3 传感器数据采集与输出源码设计 2.4 编辑下载程序,采集数据  三、模型训练 四、cube.AI配置及c模型生成 五、模型调用及测试         接篇二,前文都是采用FP-AI-SENSING1案例和配套的B-L475E-IOT01A开

    2024年01月17日
    浏览(58)
  • STM32CubeIDE开发(三十一), stm32人工智能开发应用实践(Cube.AI).篇一

    目录 一、cube.AI简介及cubeIDE集成        1.1 cube.AI介绍        1.2 cube.AI与cubeIDE集成与安装         1.3 cube.AI支持硬件平台         1.4 cube.AI应用的好处  二、FP-AI-SENSING1        2.1 FP-AI-SENSING1简介           2.2 FP-AI-SENSING1软件包支持硬件平台 三、FP-AI-SENSING1部署        

    2024年01月22日
    浏览(35)
  • STM32CubeIDE开发(二十七), stm32的WIFI通信设计(基于AT指令)

    目录 一、stm32的WIFI配置 二、代码设计 三、编译及测试 四、关于WIFI模块的串口应用 一、stm32的WIFI配置         通常WIFI模块就是一个独立的单片机,只是内置了WFIF通信软件的单片机,并该通信软件提供了AT通信指令集给开发人员,基于这些指令集我们就可以针对项目需要

    2024年02月04日
    浏览(64)
  • 嵌入式系统开发笔记104:在STM32CubeIDE中导入工程

      本文讲述如何在STM32CubeIDE中导入现有工程。

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包