image2lcd转换图片值数组_第1页
image2lcd转换图片值数组_第2页
image2lcd转换图片值数组_第3页
image2lcd转换图片值数组_第4页
image2lcd转换图片值数组_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

image2lcd转换图片值数组STM32上的TFT彩屏要显示图片,常见的是把图片转换为数组,然后进行处理,使用的软件是image2lcd,图标和界面如下:由于彩屏是320*240的分辨率,这里我们先找一副320*240分辨率的图片对图片进行取模了。先将要取模的图片打开,配置好宽度和高度,这里配置为240*320。将“高位在前”取消,设置为“16位真彩色”,保存为“C语言数组”,参数的配置如上图所示:这里有一点值得注意的是:转换之后将获得了一个长度为153608的数组gImage_12153608,如果不是这个就要进行修改,否则最终是不能正常显示的,至于153608是怎么来的,如下: 因为分辨率是240*320,并且每个像素点是16位真彩色(2字节),因此图片数据的数据长度就应该是240*320*2=152600,数据帧头还有8字节,所以总共为153608字节,若获取的不是153608字节的数据,请检查图片的分辨率,和取模软件的参数配置。最后将获得的文件,保存为TXT文本文档。image2lcd图片头文件信息:图片头数据的第25个字节表示宽和高,假设图片数组BMP_BUF,高位在前时bmp_withd=(BMP_BUF28)|BMP_BUF3bmp_lenth=(BMP_BUF48)|BMP_BUF5第一个字节是扫描方式,低四位为0水平扫描,为1垂直扫描第二字节输出灰度0x04-16灰 0x18-24真彩色,0x10-16真彩色 0x20-32真彩色针对STM32F103的TFT来说,分辨率都是320*240,对应的函数处理是ili9320_DrawPicture(x0,y0,x1,y1,(u16*)(picture+BmpHeadSize); #define BmpHeadSize (8) 这里要明确x0,x1,y0,y1void ili9320_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic) u32 i, total; ili9320_SetWindows(StartX,StartY,EndX,EndY); ili9320_SetCursor(StartX,StartY); LCD_WriteRAM_Prepare(); total = EndX*EndY; for (i=0;itotal;i+) LCD_WriteRAM(*pic+); 就用这个函数就够了;参数设置:图片素材女神以上就是按照程序稍微的改动一下,只能针对320*240的图片,如果想要在液晶屏上360度无死角随意显示,还需要改动一下程序,同时理解程序的意思首先:先理解液晶的坐标轴X Y,上图上的左上角为(0,0),右下角为(319, 239),横向为X轴,纵向为Y轴 其次1:理解函数四个参数的意思,我觉得很坑爹,void ili9320_DrawPicture(u16 StartX0,u16 StartY0,u16 EndX1,u16 EndY1,u16 *pic) 黑色的部分为图像的起点,但是蓝色的坚决不是图像的终点,而是分别代表图像的高和宽(Y1-Y0)(因程序而改变的),特别申明*pic要去掉图像的头文件信息8个字节其次2:扫描的模式为水平扫描,说明显示的时候Y坐标轴是不能变的,举例假如扫描180*200,Y1-Y0+1一定是200,如果不是的话,就会是乱码,仔细想想应该可以知道,X1就是看你要不要截屏了!最后:ili9320_DrawPicture(50,50,60,169,(u16 *)(picture+BmpHeadSize);这句话的意思就是起点在(50,50)开始截屏去高为60,宽为169-50+1=120void ili9320_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic) u32 i, total; u16 x,y; ili9320_SetWindows(StartX,StartY,EndX,EndY); ili9320_SetCursor(StartX,StartY); x=StartX; y=StartY; LCD_WriteRAM_Prepare(); total = EndX*EndY; for (i=0;i EndY) x+; y=StartY; /这几行决定了宽度不是Y1,而是Y1-Y0, / LCD_WriteRAM(*pic+); 设置有点不一样了,要上下颠倒了!实验证明:可以无死角显示图片!增加程序执行效率:void ili9320_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic) u32 i, total; u16 x,y; / ili9320_SetWindows(StartX,StartY,EndX,EndY); / ili9320_SetCursor(StartX,StartY); x=StartX; y=StartY;

温馨提示

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

评论

0/150

提交评论