I Need Help Connecting a PSP Screen to my Arduino?

I am wondering if anyone knows how to connect a psp screen also known as lQ043T3DX02 LCD Module to my Arduino using any of the Arduino's digital pins and some 74HC238 or similar Decoders. If you google "lQ043T3DX02 LCD filetype:pdf" you can find the data sheet.

Picture of I Need Help Connecting a PSP Screen to my Arduino?
sort by: active | newest | oldest
maewert7 years ago
Interfacing with this device would be difficult using an Arduino. The data lines and its power supply need to be 2.5 volts. The RGB data is 24 pins (if you provide the full color set). The worst part is the clock signal must be around 9 MHz. This is out of the Arduino's capabilities of bit-banging. A Parallax Propeller could probably handle it. Maybe consider having the arduino talk to the Propeller and the Propeller generates the clocking signals to the display.
Best Wishes
qazwsx755 (author)  maewert7 years ago
I could connect the data lines to transistors and power the transistors with 2.5 volts. I was thinking of using the Arduino Duemilanove which has a clock speed of 16MHz.
I don't want to beat a dead horse but let me give you a practical example of why you can't use an Arduino to 'bit bang' the signals to this device.

Lets say we want to use an Arduino digital output pin to drive the signals to the LCD screen and so we look at the waveform diagrams and we see that the fastest signal there is the clock signal which needs around 8 MHz (9 is typical but 8 works better in my example).

So lets use a 16 MHz Arduino to drive this clock pin at 8MHz. using, say pin 13.
We might try this code:
...
loop
{
digitalWrite (13, HIGH);
digitalWrite(13,LOW);
}
...

This fails because the digitalWrite function is very SLOW and won't achieve 8MHz. It is much faster writing directly to the port like so:

...
loop
{
repeat:
PORTB = 0x00; // pin 13 low
PORTB = 0x20; // pin13 high
goto repeat;
}
...

This get you a LOT closer to toggling the pin at 8 MHz. I used a 'goto' which is very bad form in order to avoid any overhead added by the LOOP processing (if any, I'm not sure how much overhead this is but I saw this overhead myself while driving my 5x5x5 LED cube).

This still fails because the goto itself causes the clock to skip a beat. One could improve this if they had a very long string of port sets and clears like so:
PORTB = 0x00; // pin 13 low
PORTB = 0x20; // pin13 high
PORTB = 0x00; // pin 13 low
PORTB = 0x20; // pin13 high
PORTB = 0x00; // pin 13 low
PORTB = 0x20; // pin13 high
PORTB = 0x00; // pin 13 low
PORTB = 0x20; // pin13 high

and repeat this until the arduino memory is nearly filled.
Now you have the closest you can achieve to bit banging an 8 MHz clock signal using an Arduino. The Arduino can't do ANYTHING but this and it can't even do this correctly.

So, bit-banging the signals is not the solution So how could we interface the Arduino to this LCD? You would have to create a driver circuit that maybe interfaced to the Arduino as though it were memory. The Arduino would write values into memory addresses providing the color and characters (at its slow pace). The driver would then bang out the signals to the LCD at the 8MHz pace.

As I had hinted to in my earlier message, I'd be willing to bet that a Parallax Propeller could perform this task. The Arduino could communicate to the propeller using a serial interface and the propeller would drive the clock and data signals to the LCD. The propeller probably could do this because it is composed of 8 internal processors operating in parallel. You'd assign one processor to communicate with the Arduino and the other 7 processors could bit-bang the signals to the LCD. Normally you wouldn't use a processor to do this, you'd use a field programmable gate array (FPGA) or an Application Specific Integrated Circuit (ASIC) which are harder for hobbiests to build. The propeller method might be an interesting project... but I got too many projects going myself :-)

Best Wishes.
qazwsx755 (author) 7 years ago
Thanks for all the help. I wanted to make an open source game console with an Arduino and psp screen but I have decided to use a Fuzebox and a tv screen instead.
Sorry, not practical for an Arduino.
qazwsx755 (author)  steveastrouk7 years ago
Why not?
This is a dynamic device. It needs to have data clocked in at ~7-10 MHz, and it is not memory mapped - anything you try and do has to be mapped in the Arduino, then clocked out in a very high speed bitstream.

It is a job for at least a 32 bit arm, you would have more chance with an MBED processor.

Steve
qazwsx755 (author)  steveastrouk7 years ago
Could I use an Arduino that has a clock speed of 8MHz or 16MHz and 1 or more 1MB Eeproms.
Not and sustain 9Mhz datarates - especially on a RISC architecture, which takes more instructions to do any given job than a CISC one. Remember, thats sort out your data, get it ready to clock, clock out a chunk, toggle clock line, get next chunk, clock it, toggle clock. You really don't have enough instruction cycles. Somethings are just not possible for a given processor speed.

I must say I was a bit surprised to see that display is dynamic, but that saves hardware in the device, which, considering the price of the unit they're used in isn't really surprising.

Steve
lemonie7 years ago

If you want to use the screen it needs to be plugged into the hardware which I guess you've unplugged it from? You'll not make a display-driver for it easily.

L