Go Down

Topic: TFT image Mirrored. Please Help (Read 10492 times) previous topic - next topic


Got 2.8 TFT, running with UTFT Library & its ILI9325D chip.

But image on TFT is like vertically mirrored(flipped) so the text is from right to left.

Any ideas how do i fix it? Can it be pins problem? any help appreciated


A display module is composed of the display controler and a display. Interconnection between the display and its controller is done by the display module maker. So, also you have  the same display and the same controller you might need a different software for each display module. Usually the controller has powerful commands to switch between different interconection modes: You need to look at the controller datasheet, look for the mirror command and change the init sequence of your library.



you can also patch the library replacing every    x   =>   wide-x    (not as trivial as it sounds :)
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)


Hey having troubles with the same display and library. Except that its just getting it to work on the MEGA. Tested it on the UNO with the code provided with the "Arduino 2.8 TFT Touch shield" which is the UTFT library. Triple checked the pins on the MEGA even probed then to make sure they weren't broken. I'm using the same shield that I used on UNO with the MEGA but it just doesn't like it. Also, I had to mod the HW_AVR.h to make sure the pins went where they were meant to.
I'm sure its something easy as I've never transferred a project from one to the other before.


Under similar conditions i found, that there is a conflict between the TFT communication and the UART communication of the UNO. Solution was to disable the UART:

Code: [Select]
UCSR0B = 0;  // disable USART 0

Expect some problems with the upload of new ino files. If you disable the USART in the setup() procedure then upload of new ino files is only possible shortly after reset.



Thanks olikraus, tried that but no luck. Just ordered some jumpers so I'm going to run it from the suggested pins PORTA instead of pins the shield fits to on the board. Which were digital pin 0 - 7. Doing it this way made it about 3 times slower anyway from 1FPS to about .33FPS. So thanks anyway :)



I have the same problem with a 7" TFT (model I082510 with SSD1963 controller).
I can use with the uTFT library succesfully, but the image is mirrored...

I dont use any shield, I just connect every pin to an Arduino MEGA.
I have a 2,4" and a 5" TFT's too, and works fine... the problem is only with this 7" TFT...

Please, any suggestion??

Thank you in advance!


TFT driver chips usually have either input pins or config register bits to set the vertical and horizontal scan directions.

For the ILI9325 its bit 8 in register 0x01 that controls source scan direction and bit 15 of register 0x60 sets the gate scan direction - the UTFT library no doubt has provision for adjusting the various scan direction bits, haven't checked though.

For the SSD1963 command 0x0B has various bits for setting the scan direction of display and RAM addressing.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]


TFT driver chips usually have either input pins or config register bits to set the vertical and horizontal scan directions.


For the SSD1963 command 0x0B has various bits for setting the scan direction of display and RAM addressing.

There are a couple of us having issues with this IC and a TFT both with 7" TFT screens

I've looked at the data sheet and 0x0B is "Get the frame buffer to the display panel read order"

I've tried changing it by writing 0x40 or 0x80 to it but neither seems to have any affect.  Any ideas?


Please check my thread I've FIXED this issue:



I have a same problem.
I'm using an Arduino Due with 2.8 TFT shield. I created Arduino Uno to Arduino mega converter (http://blog.ozzie.web.id/?p=1014) in order to connect 2.8 TFT shield to Arduino Due, downloaded a latest UTFT lib.
Opened a demo sketch and changed an initial string to "UTFT myGLCD(ITDB28,38,39,40,41);".
When I uploaded demo sketch to my Due board I was happy to see, that all works fine. But when I disconnect Due from USB and connect it again, I was surprised: image on a screen was inverted (mirrored). Colors was inverted too...
After assaulting google I didn't find a fix for my problem. After 2 hr's of brain storming I find a solution: add delay before display initializing.

Code: [Select]

void setup()
// Setup the LCD

It help's me to fix problem.


I had the same with a ILI9844.
I spedified a R61581 (I found it is a simular driver)
And in the file  UTFT\tft_drivers\r61581\initlcd.h

where it mentioned

I changed the old value LCD_Write_DATA(0xA0);  into
(I found that value in another driver which gave an image which was to small but not morrored.

Good luck


Even if you are using the default rotation, you should still set it, this fixed the issue for me.

There's a little video demonstration here:


Hope it helps.


I have just fixed this issue with the screen I have been using. ILI9325D_16 driver. I'm really very new at this and have no clues about hardware so the terms my not be right and this may not be the right way to fix it but it has worked for me.

I got the data sheet for the chip and read it last night in bed. I found a section on the scanning start position. Address R60h.

In the datasheet I found this:

"GS: Sets the direction of scan by the gate driver in the range determined by SCN[5:0] and NL[5:0]. The scan
direction determined by GS = 0 can be reversed by setting GS = 1.
When GS = 0, the scan direction is from G1 to G320.
When GS = 1, the scan direction is from G320 to G1 "

In the initlcd.h I found the line that dealt with that address:
LCD_Write_COM_DATA(0x60, 0xA700); // Gate Scan Line

0xA700 = 1010011100000000

The GS bit is the very last bit so I changed the value to 0x2700 which is 0010011100000000

Saved the file and recompiled and voila.

There you have it. Was this right to do or wrong?


GS controls the long side.
SS controls the short side.

So in Portrait,  mirrored text needs SS inverted.
And in Landscape,  mirrored text needs GS iinverted.

Actually,  UTFT uses the hardware Portrait view from initlcd.h
The Landscape view is calculated in software.

So your explanation was wrong.   Your solution is correct.
There are many makes of controller similar to the Ilitek ILI9325.


Go Up