ILI9488 / ST7796S

Hello colleagues sorry for my query, I have been seeing these TFT and I wanted to know what your opinion is, because the seller offers me both driver options in the case of tft 3.95
and what would be the best library to handle it.

and then I saw this

or the first link should I shield this shield?

In the case of the second screen, is it directly connected to the arduino mega?

First link:
16 / 8-bit parallel. Shield runs on Mega2560. Defaults to 8-bit
MCUFRIEND_kbv library. USE_SPECIAL, USE_MEGA_8BIT_PORTC_SHIELD //needs Beta from GitHub

8-bit parallel. Shield runs on Mega2560

Second link:
SPI interface.
TFT_eSPI for ESP8266, ESP32
XPT2046_TouchScreen library.
Needs 3.3V level shifters. No library for AVR. Substantially slower than ILI9341

Third link:
40-pin Adapter Shield for Mega2560.
Not needed for any of the above.


Thank you David I have acquired the 8 / 16bit with the ST7796S controller

I have already received the .me screen download the library I put it in the library directory arduino 1.6.3. After trying to compile the examples the screen is still white

leave IDE. delete that ancient 2.9.3 version. start IDE.

then install MCUFRIEND_kbv and Adafruit_GFX via the IDE Library Manager.
Configure the display for 16-bit.

If you have problems, just ask.
If you are not happy with soldering the 16/8 bit jumper, say so.


Excuse my awkwardness how can I configure for 16bit? I have a mega 2560

You un-solder R4.
You solder R5.

Just like it is printed on the pcb.


I have managed to visualize the screen with the LCDWIKI library

I’ve got something with Mcufriend,
In the mcufriend / utility / mcufriend_special folder

//#define SSD1289_JUMPERS 2 //Uno Shield with VERY different pin-out to Mcufriend
// only define one “USE_XXX” macro at any time
//#define USE_SSD1289_SHIELD_UNO
//#define USE_SSD1289_SHIELD_MEGA
//#define USE_SSD1289_SHIELD_DUE
//#define USE_MEGA_8BIT_SHIELD // 4.7sec Mega2560 Shield
#define USE_MEGA_16BIT_SHIELD // 2.14sec Mega2560 Shield
//#define USE_BLD_BST_MEGA32U4
//#define USE_BLD_BST_MEGA2560 // 12.23sec Uno Shield (17.38s C)
//#define USE_DUE_16BIT_SHIELD //RD on PA15 (D24)
//#define USE_FRDM_K20
//#define USE_OPENSMART_SHIELD_PINOUT //thanks Michel53
//#define USE_ELECHOUSE_DUE_16BIT_SHIELD //Untested yet

In the mcufriend / utility / mcufriend_shield

#define USE_SPECIAL //check for custom drivers
#if defined(USE_SPECIAL)
#include “mcufriend_special.h”
#if !defined(USE_SPECIAL_FAIL)
#if !defined(USE_SPECIAL) || defined (USE_SPECIAL_FAIL)

code modification

#include <SPI.h> // f.k. for Arduino-1.5.2
#include “Adafruit_GFX.h”// Hardware-specific library
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;

in the setup

uint32_t when = millis();
// while (!Serial) ; //hangs a Leonardo until you connect a Serial
if (!Serial) delay(5000); //allow some time for Leonardo
Serial.println("Serial took " + String((millis() - when)) + “ms to start”);
// tft.reset(); //hardware reset
uint16_t ID = tft.readID(); //
Serial.print(“ID = 0x”);
Serial.println(ID, HEX);
if (ID == 0xD3D3) ID = 0x7796; // write-only shield
// ID = 0x9329; // force ID

I have managed to visualize but the example is distorted and rebuilt

Thanks for your detailed message and the photo.
I am impressed that you have followed instructions correctly.
Your code modification edit was unnecessary but does no harm.

Did you unsolder R4 and solder R5 ? (to select 16-bit interface)

From the ST7796S datasheet: (the ILI9488 datasheet is similar)

IM2 IM1 IM0 MPU Interface Mode Data pin
0   0   0   8080 18-bit Interface DB[17:0]
0   0   1   8080 9-bit Interface DB[8:0]
0   1   0   8080 16-bit Interface DB[15:0]
0   1   1   8080 8-bit Interface DB[7:0],
1   0   0   Reserve --
1   0   1   3SPI SDA, SDO
1   1   0   MIPI
1 1 1 4Line SPI SDA, SDO

The 16-bit interface uses mega2560 PORTA for DB8-DB15 and PORTC for DB0-DB7
So I would assume that your default 8-bit interface would need PORTC

Hence I have these in the Beta:

//#define USE_MEGA_8BIT_SHIELD      // 4.7sec Mega2560 Shield
//#define USE_MEGA_8BIT_PORTC_SHIELD // 4.7sec Mega2560 Shield
//#define USE_MEGA_16BIT_SHIELD     // 2.14sec Mega2560 Shield

I do not have your 16/8-bit Shield but I do own the 8-bit Shield (which has DB0-DB7 wired to PORTA)

I appreciate your feedback. Other owners have soldered for 16-bit and USE_MEGA_16BIT_SHIELD
Most importantly, the 16-bit Shield should work with UTFT, TFT_HX8357 and other libraries.

Where did you find your LCDWIKI code? The LCDWIKI website does not seem to mention ST7796.


I really don't know how this is done
Tell me what should I download the beta version?
this is the link of the lcdwiki
Once the Program Download I put the libraries in the library directory
Then I locate the following
Demo/Demo_Arduino_Mega2560/Example /Example_04_display_graph

I've tried the libraries UTFT, TFT_HX8357 and it's the same

Did you unsolder R4 and solder R5 ? (to select 16-bit interface)


Did you unsolder R4 and solder R5 ? (to select 16-bit interface)


Thank you, David, tonight I will change the resistance ... I did not realize that I was behind the tft.

If you are happy with soldering SMD, that is the best plan.

16-bit is faster than 8-bit. And you can't use the other 8 pins for anything else because the Shield covers the socket.

Thanks for the link to

The 3.95inch_8&16BIT_Module_Arduino_Demo_Instructions_EN.pdf from the ZIP shows a picture of a pcb with empty U6, empty R4, empty R5
Your pcb must have U6.

Delete any directory with MCUFRIEND_kbv v2.9.3

When you have soldered the pcb for 16-bit, run the Arduino IDE.
Tools->Manage Libraries: Install MCUFRIEND_kbv and Adafruit_GFX

This will install MCUFRIEND_kbv v2.9.8 Release.


the truth david that works perfectly now at 16 bit. with several libraries.
Now I am if I give solution to the flickering of the tft in my code.

Hola, tengo una consulta, tengo una pantalla TFT ILI9488, mi intención es que funcione junto con un Arduino Uno, ¿que librerías debería usar y como sería la conexión? He probrado pero sin éxito, alguien me puede ayudar? gracias.

You must be more precise in the data on your screen. A link to the site where you purchased it would help us to know exactly the model.

Now I am after a time of stop due to these difficult moments, I have tried to retake this screen, today I am working with it

  • TFT_HX8357 (library) very well. But I still can’t manage the tactile part of it, with these libraries.
  • Utouch
  • touchScreen
    I have tried several and with none I am able to accder to the handling of the touch on this screen.

the truth david that works perfectly now at 16 bit. with several libraries.
Now I am if I give solution to the flickering of the tft in my code.

Which TFT library do you want to use?

Then we can post an example sketch that uses URTouch.h or XPT2046_Touchscreen.h libraries.