微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何取得适合自己屏幕大小的图片?

如何取得适合自己屏幕大小的图片?

时间:11-27 来源:互联网 点击:
如何取得适合自己屏幕大小的图片,本人在搞TFT显示图片时浪费了好多时间,现把经验中总结下来的用法总结如下,供各位道上的学习TFT的参考。

在你所学的arm开发板中,我用的是fm3(富士通mb9b系列的),如果例程中显示图片是用for(i=0;i

{

Write_data(tupian[i];)

}

我们都知道颜色是以双字节来定义的,比如说0x0000表示black;

如果你的例程中并不是write_data(高,低);(我记得stm32系列就是这么写的)。那么上边的i就要求用0xxxxx这种双字节的数组来表示。不用再改总线,还要将数组移位,本人认为如果例程不是你写的就别来回改了,没必要,

先来看看我的例程,如下

#define black 0x0000

#define blue 0x001F

#define green 0x07E0

#define cyan 0x07FF

#define red 0xF800

#define yellow 0xFFE0

#define white 0xFFFF

#define LCD_WIDTH 240

#define LCD_HEIGHT 320

**************************************************************************

void DrawPicture(uint xs,uint xe,uint ys,uint ye)

{

unsigned long int i;

SetWindow(xs, xe, ys, ye);

SetWindow_xy(xs,ys);

write_command(0x0022);

for (i=0;i<(xe*ye);i++)

{

write_data(qq[i]);

// ili9320_Delay(50);

}

//Set_Cs;

}

void write_command(uint16_t cmd)

{

LCD_RS = 0;

*(LCD_BASE) = cmd;

}

//-------------------------LCD write data -------------------------

void write_data(uint16_t data)

{

LCD_RS = 1;

__no_operation();

__no_operation();

//*(LCD_BASE) =(uint8_t)data;

//*(LCD_BASE) =(uint8_t)data<8;

*(LCD_BASE) =data;

}

int32_t main(void)

{

FM3_GPIO->PFR4 = 0x0000; // Poart4 for gpio

FM3_GPIO->PDOR4 = 0x003C; // P42-P45 output 1

FM3_GPIO->DDR4 = 0x003C; // P42-P45: LED1-LED4, output;

// P40,P41,P48:key2,key3,key4, input

FM3_GPIO->PFR7 = 0x0000; // Poart7 for gpio

FM3_GPIO->DDR7 = 0x0008; // P73, output;

FM3_GPIO->PFR6 = 0x0000; // Poart6 for gpio

FM3_GPIO->DDR6 = 0x0024; // P64:key1, input; P65 LCD back light, output

// P62, LCD RS select,output

init_extbus(); // 初始化外部总线

delay(10);

LCD_BKLIGHT = 1;

delay(5);

TM280_HX8347G_Initial_code(); //初始化LCD屏,清成白色

delay(10);

clr_lcd();

DrawPicture(0,239,0,319); //x轴的起、末:Y轴的起末

像以上按着我的例程来说,在屏幕上显示图片时问题就出现了,如果直接用image2lcd很遗憾的告诉您,它生成的图片数组是单字节的(0xxx),让它显示在屏幕上根本就不行,如果手上有图片,可是你发现当你用bmp2rgb软件来转换时发现转换完后,数组里竟是空的,你开始怀疑软件真烂?试一次还是这样,换台电脑结果还是一样。如果你特意找一张24位的bitmap(bmp)图片,你再用bmp2rgb来转换发现成功了,并且都是双字节数组,然后开始研究为什么?

其实,在我目前看来,bmp2rgb软件只能转换24位的bmp格式的数组并且是单字节,如果我们需要双字节的,但手上仅有一个16位图的图片(用bmp2rg打开一开便知。)好了,如果此两款软件你同时拥有,先将此16位的图片用image2lcd打开如图

再转换成24位的bmp格式图,再将生成的图片用bmp2rgb软件打开

将宽高设置为屏幕的大小像素,点convert,ok!大功告成!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top