Can Arduino Pro Mini handle 8-bit TFT display?

Hi everyone!

I just bought an ILI9325 TFT in 8 bit interface and an Arduino Pro Mini. The LCD data pins is 8 pins from D0 to D7. I followed many articles on how to wiring them up and pushing codes to the tiny board but every attempt comes up with a blank - white display. But why? I'm currently thinking about the following reasons:

  • 8/16 bit TFT LCD is not somewhat designed to work with Arduino Pro Mini (maybe it has too few pinouts?) because what I found when searching for "Arduino Pro Mini" together with "TFT LCD" resulting SPI LCDs, not parallel LCDs like this one. But I thought UNO also has Atmega328 and if it can handle 8 bit LCD, there's no reason why my Pro mini can't.
  • Logic levels. I'm using Silabs cp2102 USB to UART converter to program it in 5V. I've choosen 3V3 - 8Mhz in the Arduino software when pushing code to it and then plug it to my good old PSU which provides 3V3 line to both the board and the LCD. (I've tested Blink and it runs perfectly on all pinouts on 3V3 after pushed code with 5V CP2102).

This give me a headache over weeks and I can't figure out why. This is the second display I bought and it doesn't seem to work either (the old one I think I've burned it down when connecting it to 5V line). I've also had a Mega 2560 and logic levels converter but it still didn't work. :frowning:

Another thing related to the problem: When I follow the guide to wiring the pinouts for UNO to Pro Mini and compile the code (referring UTFT requirements document), I can't probe out any signals on DB0 to DB7 (pin 7 through pin 15 on Arduino Pro Mini), so obiviously I'll had a blank screen. But there's something on the TXO and RXI pin that I suspected It was the data lines.

EDIT: OK after some probing I found out the data lines on Pro Mini using UTFT was from pin 0 to pin 7 exactly. But the display still don't have anything but a white screen of death. And I think I've bought some fake display.

(More details coming up and sorry if this is a stupid question!)

thevncore:
But there’s something on the TXO and RXI pin that I suspected It was the data lines.

Not quite sure what you are up to there, but you cannot use TX0 or RX1 in a sketch unless you really know what you are doing, so do not try to connect anything to them. I don’t know what “pin 7 through pin 15 on Arduino Pro Mini” means.

The Pro Mini is functionally identical to a UNO, merely has a separate USB interface.

Try https://github.com/dgolda/UTFT
Your Pro Mini is UNO compatible, so in code use:
UTFT myGLCD(ILI9327_8,A2,A1,A3,A4)

And connect pins (through level converter):
LCD pin UNO
DB8 8
DB9 9
DB10 2
DB11 3
DB12 4
DB13 5
DB14 6
DB15 7

RS (CD) A2
WR A1
CS A3
RESET A4

RST RST
3V3 3V3
5V 5V
GND GND

LCD_RD to high/3V3

thevncore:
I’ve choosen 3V3 - 8Mhz in the Arduino software when pushing code to it and then plug it to my good old PSU which provides 3V3 line to both the board and the LCD. (I’ve tested Blink and it runs perfectly on all pinouts on 3V3 after pushed code with 5V CP2102).

I do hope you are actually using a 3.3V Pro Mini with the actual 8 MHz crystal, or all bets are off using it at 3.3V.

damian_golda:
And connect pins (through level converter):

Not necessary if so.

@damian_golda, thanks for the diagram :slight_smile: I'll try it. But my display is ILI9325, is it a typo if it's ILI9327??
Um, the logic levels converter is for use with the Mega only since there's no Mega on 3V3.
The TXO pin and RXI pin is somehow "being used" as data lines from internal UTFT library (Ports?). They use bit shifter to push commands and data over ports. I personally avoid those messy pins too because they cause a lot of problems when when programming with USB-UART bridges.

Paul__B:
I do hope you are actually using a 3.3V Pro Mini with the actual 8 MHz crystal, or all bets are off using it at 3.3V.

As a newbie can I ask if a 5V Pro Mini works properly on 3V3 with the Blink example on all pins then will it still works properly with utft's LCD example??

Edit: I don't have any UNO, but this Pro Mini and a Mega 2560. The Mega 2560 fails to hook up the display but I've read somewhere it (and the Due) is said to be troublesome when coming with TFTs

thevncore:
As a newbie can I ask if a 5V Pro Mini works properly on 3V3 with the Blink example on all pins then will it still works properly with utft's LCD example??

Maybe.

But then ...

To get it working you need to:

  1. Use the correct logic levels/supply voltages
  2. Connect it up to sensible signal pins
  3. Configure the library example to use the correct driver and the correct signal pins
  4. Program is correctly for the CPU frequency

Re. 1: The 5V 16MHz mini pro CPU will be overclocked by 17% if run at 3.3V compared to the manufacturers “safe” operating frequency for that voltage (see attached tables I created some time ago). The probability that the CPU can be overclocked and still operate reliably is high however, this is due to data sheet margins ( to cope with manufacturing tolerances) and the fact that you are unlikely to be running the CPU at 85 deg.C where clock speed limits will be lower due to propagation delay increases inside the chip…

Re. 2: damian_golda pins are correct but your display may number the 8 data pins D0-D7 instead of D8-D15

Re. 3: again try the setup suggested by damian_golda at least you should get something different on the display

Re. 4: if the CPU clock is 16MHz then program with the 16MHz profile, otherwise the millis() counter and baud rates will be twice what you expect. So the LED blink will run twice as fast…

Atmega328P clock frequency.jpg

rowboteer:
To get it working you need to:

  1. Use the correct logic levels/supply voltages
  2. Connect it up to sensible signal pins
  3. Configure the library example to use the correct driver and the correct signal pins
  4. Program is correctly for the CPU frequency

@Rowboteer, thanks for your suggestions!

  1. Yes, the LCD is 3V3, that's why I supply the pro mini at 3V3 to get the logic levels right without logic levels converter (now I feel I've done a bit silly works here)

  2. The display is a 16-bit one at first, but there's an option for user to switch it to 8-bit mode by desoldering resistor R1 and solder connect the pads for resistor R2 (I also noticed there's a '8' digit near R2 pads). My last attempt, I tried wiring to both D0-D7 and D8-D15 without follow the original wiring diagram (I havent tried damian's diagram yet. I'm currently far away from home), to ensure there is data signal on the pro mini pins routed to the data pins on the LCD. But the result is still a blank screen.

  3. Yes, it's ILI9325. I'm not sure if it's ILI9325C or ILI9325D_8, but that's just a matter to try :slight_smile:

  4. The ATMega isn't hot, I feel it's just a bit warm (maybe 40C, not that hot as my graphics card or the bridge in my PC Motherboard). The reason why I do this is because the board doesn't have the characteristics. There are silkscreen text printed: 5V 3V3 8Mhz 10Mhz 16Mhz but nothing is ticked. But I think I'll try to read the crystal.

damian_golda:
Try https://github.com/dgolda/UTFT
Your Pro Mini is UNO compatible, so in code use:
UTFT myGLCD(ILI9327_8,A2,A1,A3,A4)

And connect pins (through level converter):
LCD pin UNO
DB8 8
DB9 9
DB10 2
DB11 3
DB12 4
DB13 5
DB14 6
DB15 7

RS (CD) A2
WR A1
CS A3
RESET A4

RST RST
3V3 3V3
5V 5V
GND GND

LCD_RD to high/3V3

Is there any way I could change the digital pin numbers to use with lcd? I scrolled throught the utft code, but couldn’t find any hints.

1 Like

This thread does not make too much sense. There is talk of ILI9325 and ILI9327 with a Pro Mini.

Which controller, what Arduino, what voltage?

How do you want to wire the display?

If you have a 3.3V 8MHz Pro Mini:
You can connect all the pins directly to the Arduino because it has 3.3V logic.
If you follow the pin scheme with LCD_RD to A0, you can use any of the mcufriend-style libraries.

If you have a 5V 16MHz Pro Mini:
Connect all 13 data and control pins via 13 3.3V level converters.
If you follow the pin scheme with LCD_RD to A0, you can use any of the mcufriend-style libraries.

Since you are probably using ISP to upload your sketches, you could put DB8 on D0, DB9 on D1 and lose the Serial comms.
You will need to modify the data bus for mcufriend libraries.

Very few 8-bit controllers are supported by UTFT. If your one is, the scheme in message #8 will only work if there is a UTFT 8-bit bus driver. You can change the control lines in the UTFT constructor.

David.

I have Arduino Mini Pro 16Mhz and 5V, so I need to use level shifter from 5V->3,3V. I have bought them, but waiting them to arrive. For screen I ordered ILI9325.

For tutorial that I am following: http://tronixstuff.com/2013/04/26/tutorial-arduino-and-ili9325-colour-tft-lcd-modules/

If you are intending to use a 2.4" screen, there is little point in worrying about an Arduino that is any smaller.

You can buy a 2.4" shield and Uno clone for less than $10. It will work first time and have no trailing wires or loose connections.

By the time that you have bought 13 level shifters and the wires, it will have probably cost you the same.

Buying a 3.3V Pro Mini is a simpler solution.
Not only is it simpler, but you could use a ILI9341 module with SPI. Then you have plenty of spare pins.

David.