|
一、图片取模工具(imag2lcd)# O) s' X: ~) Z! |9 } 我们前面将汉字显示时说过,嵌入式LCD屏显示就是通过LCD屏幕数据接口给每个屏幕像素给出一个颜色值实现实时渲染显示出来。只不过文字显示时,给出的是一个二进制点阵,然后根据二进制中的“1”或“0”值匹配给出程序设置的前景色或背景色。那么涉及图片显示时,图片本身就是携带了颜色信息的,那么我们就可以直接将颜色信息通过LCD接口推送给屏幕。5 F( x, I3 u9 T0 Z z U0 P; i4 w, Q 2 l- T* k) N0 k$ [' t5 Z7 F* N- n7 a9 J 图片取模工具(或叫图片转换工具,imag2lcd),如下图所示,可以将图片格式文件转换为图片点阵代码表,将每个像素的颜色数值给出为16进制数值表示的点阵。 ' N0 ]# Z; p8 `
l( d, e- {. Q8 p$ O @( M3 U( E 二、 工程设计1 ~: y% X V8 a' ?$ ^( n 【1】本文借用了本博客专栏前面汉字显示博文的基础源码包,在该基础上进行图片显示。 本文采用的STM32L496VGT3-ali开发板,其LCD屏幕支持240*240像素输出。8 }7 M) D2 A% p2 u. ?/ @
! K" a F7 v- M* ^$ [, a7 P 只是为了讲述图片在LCD显示实现过程,本人直接在网上下载了一张240*240的图片,并将该图片转换为bmp格式。 【2】由于是进行240*240图片刷新在整个屏幕,因此采用了SPI-DMA实现刷新屏幕像素,本专栏前面oled点亮博文中,就采用了直接刷新和DMA刷新两种方式设置屏幕背景实现点亮。现在先回顾一下DMA方式需要注意的细节。 1)开启DMA支持4 n3 ]) g+ \5 E
# _; t+ d# G8 }: S. E 2)开启中断支持,然后保存生成输出代码
3)增加对中断回调的处理( U, ?: k/ a8 \
- S) d0 H9 q. m! [7 l } & J% C8 s. }' f5 P 三、图片显示实现过程 ( \1 u" F$ E5 C5 \& B3 A/ t 先假设已经能点亮lcd屏幕了,现在开始实现图片在lcd屏幕输出显示过程。 【1】 打来安装好的image2lcd工具,载入需要显示的图片,如下图进行设置。+ r0 |9 X2 q. T- Q, ^, @/ V6 n $ E' ^0 U# H0 j$ j) Z
【2】完成设置,点击保存按钮,在弹出的对话框,输入想要保存的文件名,注意,如果没输入文件名后缀,将默认为(.c)输出,本文采用(.h)输出,如下图。& d0 B! g1 v& v6 Q 1 G3 _; Q" ~0 d8 q0 S ?
【3】输出图像编码表如下图所示。
【4】将输出的"pyimg.h"文件拷贝到工程的ICore/ oled目录下,并为了消除编译告警信息,将gImage_pyimg的数据类型调整为"uint8_t"。 ; A; ?/ _' B J# a. T& m5 Y9 i5 m
【5】在oled.h文件添加一个“void BSP_LCD_img_DMA();”函数声明,在oled.c文件中包含拷贝过来的头文件“include "pyimg.h"”,并实现“void BSP_LCD_img_DMA()”函数。7 c7 d7 u ~( `4 P3 l
四、编译及下载 【1】在main.c主函数中,加入按键1时调用“BSP_LCD_img_DMA”函数,实现图片在LCD屏幕显示。
【2】点击编译及点击运行按钮,加载程序到开发板上 4 C: S/ C8 R. u' ^& D7 p; [( G
【3】在开发板上点击按键1,观察显示效果, T4 u. `3 z% ]: @1 \( |7 y& C( q/ {& K 1 x, ~, t" H- }+ q
( j" V8 Y+ S. A6 d& k 1 v0 A% u! g, L* m6 J ————————————————( ~' j' H% z, r) W 版权声明:py_free-物联智能 如有侵权请联系删除 |
【下载问题解决】关于ST官网下载软件问题解决
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
《MCUBoot课程》学习笔记+从信任链原理到量产实践
STM32CubeIDE 2.2.0新版本发布
CubeMX生成CubeIDE工程代码乱码
STM32CubeIDE实时时钟(RTC)经验分享
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
【STM32U3 评测】人体行为识别
【STM32U3 评测】串口控制步进电机与LabVIEW数据采集
微信公众号
手机版