第23讲tft彩屏系列之四显示图片实验_第1页
第23讲tft彩屏系列之四显示图片实验_第2页
第23讲tft彩屏系列之四显示图片实验_第3页
第23讲tft彩屏系列之四显示图片实验_第4页
第23讲tft彩屏系列之四显示图片实验_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、7.12TFT彩色液晶屏显示7.12.1格式介绍格式有非常多的种类,比如 JPEG、BMP 和 GIF 等多种不同的类型,实验中主要是使用 LCD 屏来显示 BMP。BMP 文件格式,又称为位图(Bitmap)或是 DIB(Device-Independent Device,设备无关位图),是 Windows 系统中广泛使用的图像文件格式。BMP 文件保存了一幅图像中所有的像素。BMP 格式可以保存单色位图、16 色或 256 色索引模式像素图、24 位真彩象,每种模式中单一像素点的大小分别为 1/8 字节,1/2 字节,1 字节和 32 字前最常见的是 256位MP 和 24 位MP。BMP

2、 文件格式还定义了像素保存的几种方法,包括不压缩、RLE 压缩等。常见的 BMP 文件大多是不压缩的。Windows 所使用的 BMP 文件,在开始处有一个文件头,大小为 54 字节。保存了包括文件格式标识、颜色数、图像大小、压缩方式等信息,因为仅24比位色不压缩的 BMP,所以文件头中的信息基本不需要注意,只有大小这一项对较有用。图像的宽度和高度都是一个 32 位整数,在文件中的地址分别为 0 x0012 和 0 x0016。54 个字节以后,如果是 16 色或 256MP,则还有一个颜色表,但在 24 位MP 文件的优点则没有,这里不考虑。接下来就是实际的像素数据了。因此总的来说 BMP是

3、简单。7.12.2 深入了解BMPBMP 文件的格式大体上分为 4 部分。第一部分为位图文件头。第二部分为位图信息头。第三部分为调色板。第四部分就是实际的图像数据了。BMP 的内容,网上的资料很多,都说烂了。从操作上讲,如果想在液晶屏上显示的话,还是比较简单的。大体上说,使用提供的图像转换,将要显示的图像转换成数据,替代提供的代码中的图像数据就可以了。针对于本实验,直接看一下转换出来的 BMP 图像数据。转换的出的数据,并非都是都是用于绘制的图像实际数据。在图像数据之前还有一串数据。比如:。这里的 0 x40,0 x01,表示图像的宽度。0 xF0,0 x00 表示图像的高度。0 x0140

4、化为 10 进制等于 320;0 x00F0 化为 10 进制是 240。其它位代表的意义,这里不一一列举。在代码中进行说明,在7.12.3 使用工具将转换成二进制码在本实例中,在main函数中有以下函数调用:LCD_Image2LcdDrawBmp565Pic()函数可以在指定的位置显示。当然显示的大小是有限制的。比如本实验显示的是240 x320,屏幕也是240 x320。那么显示图片的时候,指定的显示坐标应该是(0,0),刚好整屏显示。本实验使用的转换工具是:Img2Lcd.exe。该的使用方法如下:双击“Image2Lcd 2.9.exe”,打开单击“打开”选项,选择要转换的。3) 对

5、转换的进行设置。具体的设置入下图:这里是C语言,输出的数据类型选择“C语言数组(*.C)”。这里大家要留意的是“输出图像”。屏幕最大的宽度和高度是320和240。假如输出的图像刚好是(320,240),在代码中设置图像显示位置的时候应该是在开始的位置,即坐标(0,0)。如果选择其他位置,的显示错乱。扫描模式,选择水平扫描。“输出灰度”这里,选择的是“16位真彩色”。本实验中针对的是16位彩色,颜色数据的排序是红、绿、蓝。颜色的位数分别是红色5位,绿色6位,蓝色5位。勾选“包含图像头数据”。转换出来的数据,并非都是都是用于绘制的图像实际数据,它还包含了图像头数据。将数组拷贝出来,替换_LCON_

6、80X80.C 文件中的“gImage_ICON_80X80_16153608”数组内容和_LCON_80X80.h 文件中对应的数组定义,重新编译后即可显示用户自己的。7.12.4 硬件设计硬件设计同上7.12.5分析从主程序开始分析。主程序中,函数 SZ_STM32_SysTickInit(1000000)提供延时函数。函数SZ_STM32_LCDInit()初始化彩屏。函数 LCD_Image2LcdDrawBmp565Pic(0, 0, gImage_C)显示。本章节,主要对显示函数进行分析。代码分析 1:液晶屏的初始化等细节前面的例程都有详细介绍,这个例程中主要是LCD_Image2

7、LcdDrawBmp565Pic ( )函数显示了。代码分析 2:LCD_Image2LcdDrawBmp565Pic(0, 0, gImage_C)本函数有 3 个参数,第一、第二个参数设置显示的位置。第三个参数是指针,指向转换出来的数组数据的首地址。代码分析 3:画图函数中首先定义了 HEADCOLOR 类型的“* BmpHeadr”。看一下HEADCOLOR 是什么。大家可以发现,HEADCOLOR 里面分别包含了多个数据。有 4 个unsigned char 类型,两个 unsigned short 类型。算一下它们总共占用了多少字节。unsigned char 占用一个字节,unsi

8、gned short 占用两个字节。那么它们一共就是占用了 8 个字节。这 8 个字节就是,转换的的头数据。它们的意义分别为:scan,扫描模式。gray,灰度值。w,h 分别是图像的宽度和高度。is565,16 位彩色。Rgb,描述 R G B 颜色分量的排列顺序。代码分析 4:定义完“* BmpHeadr”后,将指针 BmpHeadr 指向转换出来的数组数的宽度(Width)和高度(Height)。并跳过图像的头数据,将指针 BmpData的实际数据。据,指向显示代码分析 5:通过对图像头数据的判断,调用 LCD_DrawBmp565Pic()函数显示。代码分析 6:显示函数 LCD_Im

9、age2LcdDrawBmp565Pic()。LCD_DrawBmp565Pic(u16_t StartX, u16_t StartY, u16_t Width, u16_t Height,const u16_t *BmpAddress)函数一共包含 5 个参数。第一、第二个参数是显示图像的起始点,本实验给的点是(0,0)。第三、第四个参数分别表示图像的宽度和高度。第 5 个参数就是指向跳过图像头数据后的第一个数据,即用于绘制图画的第一个数据。代码分析 7:绘制,也是一个点一个点的画。只是速度太快人眼无法看出。显示的时候,首先设定显示的范围,这里用到了 3 个寄存器 0 x0044、0 x0045、0 x0046。算一下给 0 x0044 和 0 x0046 的数据,0 xEF00 和 0 x013F。十六进制 0 xEF 化为十进制得 239。0 x13F 化为十进制是 319。相信大家对这两个数据非常的熟悉。对 0 x0044、0 x0045、0 x0046 的介绍大家参考控制册。显示的时候,设置显示时的位置。写入命令 0 x22,准备写入 GRAM。然后通话LCD_WriteRAM()函数写数据。本实验中,可以通过两个 fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论