How could MEGA2560 3.5'' TFT screen show a 480*320(16bit) picture ?

Hello everyone:
As it known to us, there will be have 4803202=307200 byte.I have to break it down.In my program,I define array like this "const unsigned char PROGMEM gImage_NCK1[19200]".If the amounts of the array is less than 192003 byte ,the MEGA2560 can work effiecntly and corrently. At the same time,if the amounts of the array is larger than 192003 byte,such as 19200*4,the MEGA2560 can not work and the screen keeps white.I also find several references, I doubt whether the GCC address point is 16 bit or the FLASH in the MEGA2560.

Even if there is only one picture you want to show, it is usually easier to put it on an SD card. That's why so many of those TFT displays also include an SD card slot.

You can hardly get a 240x320 24-bit bitmap into a MEGA2560 Flash memory. i.e. 230400 bytes.
You still need space for the BMP header, program, bootloader, ...
Anyway, the compiler is not very good with addressing all 256kB.

You certainly can not get a 320x480 bitmap into Flash. Even if you store it as 16-bit.
Very few Arduino programs will render a 8-bit bitmap (256-colours). Even an 8-bit 320x480 is big. (especially with the colour palette)

You normally store BMP or RAW images on a SD card. Then you have unlimited amounts of pictures, storage, ...

You obviously need to have some form of compression if you want to store in the Mega2560's Flash.

Bodmer/Rowboteer has shown how to render JPEGs from SD or Flash. This is slower than just rendering a BMP.

Many pictures will compress well with JPEG.
I am not sure how well a GIF will compress the data.

It would be nice to have an animated JPEG or GIF.


You could try the library and included example here: