IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> i.mx6ull裸板RGB屏 彩色图片显示 (单片机彩色图片显示通用)取模软件 -> 正文阅读

[嵌入式]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] 		G
			// pic[pix_num*3 + 2]<<16 	R
			lcd_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,所以有些地方留白。

完成!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:52:33  更:2022-02-07 13:53:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:18:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码