Go Down

Topic: 2.4 inch LCD TFT Display Shield only shows white! (Read 98326 times) previous topic - next topic


Mar 06, 2016, 12:23 am Last Edit: Mar 06, 2016, 01:04 am by Grubi
Thanks for fast replies. Here is what I got with another library, and now I will try with reccomended one by mcufriend.

Initializing LCD...
Reading ID...0x9595
Loading LCD registers...
Filling the screen...
Done filling...
If your screen filled red, you may be able to use the library at http://misc.ws

And this resulting into white screen.

Here is the other readID

Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)

reg(0x0000) 95 95   ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00   Manufacturer ID
reg(0x0009) 3F 3F 3F 3F 3F   Status Register
reg(0x0061) 00 00   RDID1 HX8347-G
reg(0x0062) 00 00   RDID2 HX8347-G
reg(0x0063) 00 00   RDID3 HX8347-G
reg(0x0064) 00 00   RDID1 HX8347-A
reg(0x0065) 00 00   RDID2 HX8347-A
reg(0x0066) 00 00   RDID3 HX8347-A
reg(0x0067) 00 00   RDID Himax HX8347-A
reg(0x00B0) 00 00   RGB Interface Signal Control
reg(0x00B4) 00 00   Inversion Control
reg(0x00B6) 00 00 00 00 00   Display Control
reg(0x00B7) 00 00   Entry Mode Set
reg(0x00BF) 00 00 00 00 00 00   ILI9481, HX8357-B
reg(0x00C0) 00 00 00 00 00 00   Panel Control
reg(0x00CC) 00 00   Panel Control
reg(0x00D0) 00 00 00   Power Control
reg(0x00D2) 00 00 00 00 00   NVM Read
reg(0x00D3) 00 00 00 00   ILI9341, ILI9488
reg(0x00DA) 00 00   RDID1
reg(0x00DB) 00 00   RDID2
reg(0x00DC) 00 00   RDID3
reg(0x00EF) 14 14 14 14 14 14   ILI9327
reg(0x00F2) 08 08 08 08 08 08 08 08 08 08 08 08   Adjust Control 2
reg(0x00F6) 00 00 00 00   Interface Control

Using the library and running graphictest_kbv return this
Serial took 0ms to start
ID = 0x9595

Any ideas?
Btw, let me know if it is better to move my posts to the other thread...
And last, but not least - modules were quite nice packed, UNO and display in separate packs, with air bubbles. I got two and both of them show the same thing. USB connector is isolated (not shorting power coming to regulator on LCD board). Backlight is on... I don't know...
And registers seems to be all zero's...


Your output does not make any sense to me.
Are you sure that the Shield is mating nicely with the Uno?

It is possible that you have a bad pcb / solder bridge / broken trace ....
But it is extremely unlikely that two boards have the same error.

Please can you identify the Touch panel wiring. 
Unplug the Shield.   Measure resistance between LCD_RS and LCD_D6, D7, D0, D1
Likewise,   try LCD_WR, LCD_CS with digital# 6, 7, 8, 9

X will be approximately 300 ohm.   Y will be 500 ohm.



Hi David,
seems not good to me. Let me know if I measure wrong pins or should consider remove the displays from board. May be someone mixed soldering after New Year... Another quite visible thing is there is no filter capacitors on the shield regulator... at all.

                       Measured resistance, Kohm   
                       Board1   Board2
LCD_RS   to   LCD_D6   0.34   0.29
      LCD_D7           0.90   1000
      LCD_D0           1300   1400
      LCD_D1           1300   1500
LCD_RS   to   LCD_D6   800   800
      LCD_D7           0.55   0.66
      LCD_D0           800   1600
      LCD_D1           1600   1100
LCD_RS   to   LCD_D6   1200   1200
      LCD_D7           1300   1600
      LCD_D0           1700   1200
      LCD_D1           1300   1700
LCD_WR   to   LCD_CS   1700   1200



Mar 06, 2016, 09:13 am Last Edit: Mar 06, 2016, 09:24 am by david_prentice
I am guessing that you have typos.
i.e. LCD_RS, LCD_D6 = 340R  (0.34k = 340 ohms)
i.e. LCD_WR, LCD_D7 = 550R

This looks quite normal.   It means YP=A1, YM=7 and XM=A2, XP=6 if and when you use the Touchscreen.

A touchscreen is not much good without a display.    Have you inspected the pcb soldering?  Have you plugged it into the Uno?    Does it fit nicely?

Do you get identical results from  LCD_ID_readreg sketch with both shields?



Mar 06, 2016, 09:40 am Last Edit: Mar 06, 2016, 09:58 am by Grubi
Well, all measurement are described in KOhms. So, yes they are 340R and 550R. Others are hundreds and thousands of kOhm's.

And I also think touch is working, since there was LED response and ERASE button appears on the serial stream.

PCB seems good, but under displays seems not so good. Look at attached pictures, may be display type can also say something about the problem. No pictures of touch cable, since it is first hidden and second seems quite OK.

Nicely plugged - yes. Fit - yes. Same results for ID response for both boards.

I try to resolder connections today or tomorrow and see if it helps. May it is worth to ask mcufriend if those are looking their original displays or are fakes or something. At least I knew there are several other people had same problem. Thanks for keep answering, it is great to know someone digging into same direction.



I suggest that you do not dismantle your display in future.   However the photo shows a HX8347I module.

I have data sheets for HX8347-A, HX8347-B, HX8347-D, HX8347-G.

For some reason Himax chooses to use the same model number for controllers with completely different registers and characteristics.

Your display uses a HX8347-I controller.  I can NOT find a data sheet but apparently it is a replacement for a HX8347-G.

You can try the Adafruit_TFTLCD library with tft.begin(0x7575)

Or if you want to use the MCUFRIEND_kbv library (and are willing to do some testing),  please PM me with your email.



Hi David,
I just PM.

Adafruit_TFTLCD was first that I try, but result was the same (but not looking too much into the code).



Mar 07, 2016, 02:14 pm Last Edit: Mar 07, 2016, 02:43 pm by Grubi
Just want to say many, many thanks to David, who made needed changes and now 2.4" display with ID 0x9595 is working on my side! Tested with Arduino Uno and Arduino Mega 2560(slower, as described by David).
And I do have few questions more - which cannot find in short time (to David and other that reading this):

 - is there a schematics of the 2.4" mcufriend shield available? (I found one for specific 2560 shield)
- how to make Adafruit paint example work with mcufriend library - I replaced header and Adafruit_TFTLCD(), example compiles but it is only white screen after upload. Or it is better to read Adafruit manual and write my own?

 - is there sort of example how to load BMP picture from SD card reader or write such (for example what was drawed in Adafruit example). May be this is also in Adafruit manual?

- last, can you recommend a similar shield (for any Arduino similar board) which has except TFT and SD - additionally RTC clock and I2C, SPI, UART(or two) and some analog inputs available. I guess it can be done with additional wiring to 2560 board...

Sorry if I am asking too many and obvious things...or just need to sit down and read a bit.



Does the "Software Scroll" work correctly now?

I have a schematic for a "typical" Mcufriend Uno shield.   I will email it to you.
As you have probably noticed,   there is nothing much more than a 3.3V module with flexi-strip and a pcb with two HC245 chips.   The LDO feeds the backlight.

You can make the "Touch_kbv.ino" example work by just adding:
Code: [Select]

    } else if (identifier == 0x9595) {
        name = "HX8347-I";
        TS_LEFT = 900; TS_RT = 130; TS_TOP = 940; TS_BOT = 130;

to the setup() function.    You have already identified the Touch pins as YP=A1, YM=7 and XM=A2, XP=6.
Code: [Select]

//TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
TouchScreen ts = TouchScreen(6, A1, A2, 7, 300);
TSPoint tp;

Displaying a 24-bit BMP is simple with the <SD.h> library and the hardware SPI.
The <SdFat.h> will allow you to bit-bang the SPI but installing a reliable library might be a problem.

Since you are using a 2.4" shield with a MEGA2560,   there is plenty of room to get at the SDA, SCL pins (20, 21),   UART1,2,3 pins (14-19) and the hardware SPI on (50-53).   5V and GND are available on the 18x2 header.    You can also get at Analg pins: A6-A15.

You can either hand-wire a MEGA2560 Protoshield for your extra electronics or wire external modules.



@david_prentice, thanks for the answers

Stupid me, I don't ever look that touch_shield_kbv has the same functionality...
See link below, seems work fine. Now I can start read and experiment with my other plans.

Scroll - see link below. Is it normal behavior or it show some problem?

Both videos here

I left SD on lowest priority for now.

And yes MEGA should do the work then. What is the reason MEGA is slower - it should be optimized(it is hardware specific for every different MCU) or else?



Both videos are fine.   

The Touch "line" is following the stylus perfectly.    You have no "random dots".

The Scroll example is scrolling a subwindow in the middle of the screen because your HX8347 is capable of full Vertical Scroll.

If you had a "ILI9320" style controller,   it can ONLY move the whole screen.

I wrote the Scroll sketch before putting the "Coloured Band Scroll" into the graphictest_kbv sketch.   (which I think is more intuitive)

In practice,  you might want to scroll text vertically in Portrait mode.    Or a graphic sideways in Landscape mode.    It is especially useful for a left-scrolling heart monitor display.



This is a working example using the code posted by goltermc.

Thanks so much for your library !

I am a total noob so this TFT had me really frustrated but the library that goltermc posted got me to a functioning demo which I could then take and add Touchscreen, BMP loading and display and more.

This zip has everything you need.

Move the mainmenu.bmp file to a micro SD card and insert into the TFT.

After you get it working ( I noticed that the code seems to think I am using a breakout board but I am not, I am using a shield ) I think this is why so many people have issues, they #define the shield pin setup and should not do so !!!

After you get it working you will need to configure the Touchscreen. You can see how I went about this using the serial monitor to get the values for X and Y and then using the Map function to get the values into the 320 x 240 range. I discovered that based on the rotation the ranges may be from 320 to 0 versus 0 to 320. See the code ;-)

Happy to answer questions - feel free to use this and play around.

This code is NOT optimized and not much of it is my own, thanks to those who wrote most of this.


Has anyone got this to work with a Teensy 3? The SDCard part was easy but I can't find what driver to use, or even if I have the proper pins for the LCD.

I figure once I get the LCD part to work I can then figure out the pins for the touch screen but for now it is driving me insane :(

Why can't everyone just use the same names for the pins :( Sigh.


intenta usar la librería : Andersmmg_TFTLCD

En la linea Numero 18: Archivo -> Adafruit_TFTLCD.h :


Con esto

.... y luego forzar el driver  

} else if(identifier == 0x3838) {
   Serial.println(F("Found mcuILI9838 LCD driver"));
   identifier = 0x9341; // u otro ID -> uno de ellos debe funcionar


this will sove all the problems
check it out :-)

Go Up