700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 正点原子 i.mx6ull裸板RGB屏 显示彩色图片 (单片机显示彩色图片通用)取模软件

正点原子 i.mx6ull裸板RGB屏 显示彩色图片 (单片机显示彩色图片通用)取模软件

时间:2021-04-07 23:42:37

相关推荐

正点原子 i.mx6ull裸板RGB屏 显示彩色图片 (单片机显示彩色图片通用)取模软件

编者注:阅读之前需要完成屏幕指定位置画点操作,屏幕画点本文不展开。

软件:Image2Lcd 2.9 vscode

硬件:正点原子阿尔法开发板(i.mx6ull),原子哥看到请联系我,打钱,广告费。。

系统:Ubuntu Windows

需求:开发板RGB屏幕显示彩色图片

前提:屏幕指定位置画点

描述:通过图片取模软件Image2Lcd 2.9对图片进行取模,得到一维十六进制数组,通过指定区域的各个像素点进行描点操作,从而显示图片。

图片取模步骤:

Windows中,使用”画图“打开某张任意格式的图片,点击重新调整大小。

根据屏幕分辨率选择合适的大小(这里的选择相对来讲不是太重要),我的RGB屏幕分辨率800*480。

选择另存为bmp格式的图像。

图片取模软件Image2Lcd 2.9打开该图片。具体设置图中有详细描述,必须注意输出图像的分辨率(输出图像的分辨率就是后面嵌套for循环描点的两个边界),因为输出图像的分辨率与显示密切相关。

参数设置好之后,点击保存,生成图片的一维数组表示。一定要注意:对于RGB屏幕来说选用的是RGB888格式,而取模软件得到的是BGR格式,在获取像素点的时候应该格外注意,交换RG两个元素的位置。

代码撰写:

将上面获得的temp.c文件传输到Ubuntu中,在VSCode中新建一个picture.h头文件,将temp.c中的数组复制到picture.h中。

在描点函数的LCD接口.c文件中定义一个函数,lcd_show_picture(..),并在相应的头文件中声明。

//图片显示RGB888//x:欲显示图片左上角的位置//y:欲显示图片左上角的位置//x_width:欲显示图片的分辨率(水平宽度)//y_length:欲显示图片的分辨率(垂直长度)unsigned char lcd_show_picture(unsigned short x, unsigned short y, unsigned short x_width, unsigned y_length, unsigned char *pic){if(x < 0 || x > 800 || y < 0 || y > 480)return ERROR;//判断图片左上脚位置是否合法int pix_num = 0;//存放当前已绘制像素点个数short int i, j = 0;//行列临时变量for(i = 0; i<y_length; i++)//对某一行{for(j = 0; j< x_width; j++)//图片取模数组中三个十六进制表示一个像素点{//这里对R和B进行交换//即对一个像素点的三个元素 第一个和第三个进行交换 高位在前 直接交换即可//逐行显示 y固定 x累加//pic[pix_num*3]<<0 B//pic[pix_num*3 + 1]<<8G// pic[pix_num*3 + 2]<<16 Rlcd_drawpoint(x+j, y+i, pic[pix_num*3]<<0 | pic[pix_num*3 + 1]<<8 | pic[pix_num*3 + 2]<<16);pix_num++;}}return OK;}

main.c文件中添加相应的头文件,并调用绘图函数进行绘图。从x=80,y=15开始显示,图片的分辨率为635*450,也就是图片取模软件输出图像的分辨率

lcd_show_picture(80, 15, 635, 450, miaomiao);

效果图:

可以看到,由于我的屏幕分辨率为800*480,显示的图片分辨率为635*450,所以有些地方留白。

完成!

加入圈子

🍎欢迎大家加入组织,一起交流、学习,群内多为嵌入式爱好者,也有企业MCU、Linux大佬carry。

🍎球球群:【嵌入式c、c++、单片机、linux技术交流2群】🍎

自己搜索吧,官方不让发,净想着白嫖我文章!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。