Easy Basics: Project 047a 3.5'' 320×480 TFT LCD Shield with ILI9481 driver

of Lex C in UNO

Basics: Project 047a

Project name: 3.5'' 320×480 TFT LCD Shield with ILI9481 driver

Tags: Arduino Uno, 3.5'' 320×480 TFT LCD Shield, 8-bit Parallel, Arduino Uno, SD Card Module, Micro SD card, ILI9481 driver. ILI 9481 driver, Adafruit_GFX, MCUFRIEND_kbv, Adafruit_TFTLCD

Attachments: touchinfo, tftpaintrotationtestsketchdemoacoptexsketchsimpletestsketchgraphictestsketch, displaystringsketch, bmpshowketchlibrary1,library 2, library3, library4

Dear visitors. You can support our project buy clicking on the links of parts and buying them or donate us to keep this website alive. Thank you

In this project, you needed these parts :

1.Arduino Uno R3 (you can also use the other version of Arduino)

2.Arduino IDE ( you can download it from here  )

3.Jumper cables F-M (optional)

4. 3.5'' TFT LCD Shield with ILI9481 driver 1 pc

5. Micro SD card with adapter 1 pc

6. Stylus pen 1 pc


We will learn how to connect 3.5'' TFT LCD Shield to the Arduino board and use it.

Understanding the SD card

You can read about it here.

Understanding the 3.5'' TFT LCD Shield

As you can see the 3.5'' TFT LCD display is big, and it offers a resolution of 480×320 pixels. If you turn it around, you can see that it comes with presoldered pins for Arduino Uno, which is nice since there are not many big TFT displays that work with the Arduino Uno. At the back we can also see that there is an SD card slot available.

This display needs a lot of digital and analog pins in order to work. So, if we don’t use the SD card module of it, we are left with 6 digitals pins and one analog pin to use with other modules or sensors. If we are going to use the SD card module of the display, we are left with only 2 digital pins and one analog pin which is of course very limiting. But, we can always use the Arduino Mega board which offers many more digital pins to work with.

This Arduino 3.5″ Color TFT display uses the ILI9481 driver and it works fine with the Adafruit libraries

Control IC: ILI9481
Interface: 8bit parallel
NO Touch screen
resolution 320×480


  • Control IC: ILI9481
  • Interface: 8 bit parallel
  • Display resolution: [320xRGB](H) x 480(V)
  • Output: 960 source outputs, 480 gate outputs, ¾ Common electrode output
  • a-TFT LCD driver with on-chip full display RAM: 345,600 bytes
  • MCU Interface: MIPI-DBI(Comply with MIPI DBI Version 2.00); Type B 16-/18- bit, 8-/9-bit; Type C 4-line 9bit (Option 1), 8bit (Option 3); 16-bits, 18-bits RGB (DPI) interface; MIPI DCS command sets;3-pin/4-pin serial interface
  • Display mode: Full color mode: 262K-colors; Reduced color mode: 8-colors (3-bits MSB bits mode)
  • On chip functions: VCOM generator and adjustment; Timing generator; Oscillator; DC/DC converter; Line/frame inversion
  • MTP: 16-bit ID1 and ID2; 6-bits for VCOM adjustment
  • Low -power consumption architecture: Low operating power supplies (IOVcc = 1.65V ~ 3.3V (interface I/O); Vci = 2.5V ~ 3.3V (analog))
  • LCD Voltage drive: Source/VCOM power supply voltage (DDVDH - GND = 4.5V ~ 6.0V; VCL – GND = -1.0V ~ -3.0V; VCI – VCL ≦ 6.0V); Gate driver output voltage (VGH - GND = 10V ~ 18V; VGL – GND = -5V ~ -12.5V; VGH – VGL ≦ 32V); VCOM driver output voltage (VCOMH = 3.0V ~ (DDVDH-0.5)V; VCOML = (VCL+0.5)V ~ 0V; VCOMH-VCOML ≦ 6.0V)
  • Operate temperature range: -40℃ to 85℃

ILI9481 is a 262,144-color single-chip SoC driver for a-TFT liquid crystal display with resolution of 320RGBx480 dots, comprising a 960-channel source driver, a 480-channel gate driver, 345,600 bytes GRAM for graphic data of 320RGBx480 dots, and power supply circuit. The ILI9481 supports 18-/16-/9-/8-bit data bus interface (DBI) and serial peripheral interfaces (SPI). It also supplies 18-bit, 16-bit RGB interface (DPI) for driving video signal directly from application controller. The moving picture area can be specified in internal GRAM by window address function. The specified window area can be updated selectively, so that moving picture can be displayed simultaneously independent of still picture area. ILI9481 can operate with 1.65V I/O interface voltage, and an incorporated voltage follower circuit to generate voltage levels for driving an LCD. The ILI9481 also supports a function to display in 8 colors and a sleep mode, allowing for precise power control by software and these features make the ILI9481 an ideal LCD driver for medium or small size portable products such as digital cellular phones, smart phone, MP3 and PMP where long battery life is a major concern. 

You can find ILI9481 datasheet here.

You can find dimentional drawing here.

Signals and connections of  3.5'' TFT LCD Shield

LCD_D0 - LCD_07 - Data pins

SD_SS - Secure Digital (SD) card SS. (Chip Select or Slave Select) - the pin on each device that the master can use to enable and disable specific devices.

SD_DI - Secure Digital (SD) card DI. Master Out/Slave In (MOSI). SPI communication. The Master line for sending data to the peripherals. Used for the DBI type C mode. If not used, please connect this pin to ground. 

SD_DO - Secure Digital (SD) card. (Master In Slave Out) - SPI communication. The Slave line for sending data to the master. Used for the DBI type C mode. 

SD_SCK - Secure Digital (SD) card SCK (CLK)SPI communication. SCK (Serial Clock) - The clock pulses which synchronize data transmission generated by the master

LCD_RST - Liquid Crystal Display Reset. This signal low will reset the device and must be applied to properly initialize the chip. Signal is low active.

LCD_CS - Liquid Crystal Display Chip select. Chip select input pin (“Low” enable). 

LCD_RS (LCD_CD) - Liquid Crystal Display Register select/ Command/Data

LCD_WR - Liquid Crystal Display Write register. Write control pin for the DBI interface. When the DBI type C is selected, this pin is used as serial clock pin. If not used, please connect this pin to IOVCC. 

LCD_RD - Liquid Crystal Display Read. Read control pin for the DBI interface. If not used, please connect this pin to IOVCC. 

GND - connects to ground pin of Arduino board

5V -  connects to power supply 5 V

3V3 - connects to power supply 3.3 V

Build the circuit

The control pins for the LCD can be assigned to any digital or analog pins but we'll use the analog pins as this allows us to double up the pins with the touch screen.

LCD Shield pin usage:

  • LCD Data Bit :    7    6    5    4    3    2    1    0
  •  Digital pin #:    7    6   13    4   11   10    9    8
  •  Uno port/pin :  PD7  PD6  PB5  PD4  PB3  PB2  PB1  PB0
  •  Mega port/pin:  PH4  PH3  PB7  PG5  PB5  PB4  PH6  PH5
  •  Leo port/pin :  PE6  PD7  PC7  PD4  PB7  PB6  PB5  PB4
  •  Due port/pin : PC23 PC24 PB27 PC26  PD7 PC29 PC21 PC22

Breakout pin usage:

  • LCD Data Bit :   7   6   5   4   3   2   1   0
  •  Uno dig. pin :   7   6   5   4   3   2   9   8
  •  Uno port/pin : PD7 PD6 PD5 PD4 PD3 PD2 PB1 PB0
  •  Mega dig. pin:  29  28  27  26  25  24  23  22
  •  Mega port/pin: PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 (one contiguous PORT)
  •  Leo dig. pin :   7   6   5   4   3   2   9   8
  •  Leo port/pin : PE6 PD7 PC6 PD4 PD0 PD1 PB5 PB4
  •  Due dig. pin :  40  39  38  37  36  35  34  33
  •  Due port/pin : PC8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 (one contiguous PORT)

 LCD             Arduino Uno

  SD_SS pin (CS)   -> 10

  SD_DI pin (MOSI) -> 11

  SD_SCK pin (CLK) -> 13

  SD_D0 pin (MISO) -> 12

  GND              -> GND

  5V               -> 5V

  3.3V             -> 3.3V

It is up to you how you would like to use the shield. You can connect it with jumper cables F-M to Arduino board or to attach it directly to Arduino board (Arduino Uno).

The following pictures show how to attach 3.5" TFT LCD Shield to the Arduino Uno :

Very important notes and codes

1.TFT LCD Driver. You will need to modify all sketches attached in this project with your driver number (we had ILI9481) and add additional lines if your driver number is not on the list. Look at picture attached below:

2. Adafruit_TFTLCD library must be configured for the 3.5" TFT LCD shield or the breakout board. There are comments about it in Adafruit_TFTLCD.h for proper setup. As we used a breakout board setup, then in file Adafruit_TFTLCD.h (Adafruit_TFTLCD library) we commented the line: #define USE_ADAFRUIT_SHIELD_PINOUT 1 if you use

3. How to insert micro SD card in micro SD card slot on the back of 3.5" TFT LCD shield (see the picture below)

4. simpletestsketch

It is a very simple TFT LCD test. Check the colors

5. graphictestsketch

It is an advanced TFT LCD test. You can see the results below:

6. displaystringsketch

Displays text and data.

7. demoacoptexsketch

Displays text and button.

8. bmpshowsketch 

It has 2 different sketches (bmploadingsketch and showbmpsketch) inside and a folder called Bitmaps with examples of pictures. If using an Arduino Mega make sure to use its hardware SPI pins, OR make sure the SD library is configured for 'soft' SPI in the file Sd2Card.h.

Image to LCD or image editor programs. You can find some programs attached here and here.

a)bmploadingsketch (Place 24 bit color BMP files (be sure they are 24-bit!) with 320 pixels (Width) x 480 (height) or other size into the micro SD card (root directory). There are examples in the folder Bitmaps)

b)showbmpsketch (If you need to use another pictures - do not forget to modify file names. Place 24 bit color BMP files (be sure they are 24-bit!) with 240 pixels (Width) x 320 (height) or into the micro SD card (root directory). There are examples in the folder Bitmaps)

You can also use it with other size pictures but you need to modify code:

If using an Arduino Mega make sure to use its hardware SPI pins, OR make sure the SD library is configured for 'soft' SPI in the file Sd2Card.h.

9. rotationtestsketch

Sketch to test TFT LCD rotation.

10. touchinfo

The sketch will tell you the TFT LCD driver name, screen size, calibration and wiring details:

11. TFTpaint

This sketch is a simple painting test. You can draw on the screen with stylus pen.

Step by Step instruction

  1. Open Arduino IDE.
  2. Plug your Adruino Uno board into your PC and select the correct board and com port
  3. Open up serial monitor and set your baud to 9600 baud
  4. Mofidy the sketch to suit your needs.
  5. Verify and upload the the sketch to your Adruino Uno board.
  6. Enjoy the results


We have learnt how to connect 3.5'' TFT LCD Shield to the Arduino board and use it.


  • We have used Adafruit_GFX, MCUFRIEND_kbv, TouchScreen and Adafruit_TFTLCD libraries in this project. Libraries attached on the beginning of this project. Download, unzip them and add to libraries in your PC, for example C:\Users\toshiba\Documents\Arduino\libraries or C:\Program Files (x86)\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC.
  • SD and SPI libraries are included in Arduino IDE


  • See attachments on the begining of this project description. 

Other projects of Lex C
Easy Basics: Project 057a ACR122U NFC Reader of Lex C, Not selected 17-01-2018

Published at 15-11-2017
Viewed: 1896 times