Interfacing a 320x240 monochrome LCD display

I bought this for $5 at Electronic Goldmine, deluding myself into thinking it would be an easy hookup: http://www.goldmine-elec-products.com/prodinfo.asp?number=G18246

After much searching I think I've found the actual datasheet: hmangas.com. With this info I was able to turn the thing on, getting a bright green backlight and some random lines\noise on the screen.

Aside from the power supply wiring, I have (almost) no idea of how to interface this with my Arduino. It looks like the LCD does not contain a built-in controller aside from the row\column drivers, so this would have to be implemented in the Arduino (is this possible?)

The only other information I found was a Hitachi pdf describing the operation of an essentially identical type of LCD display (see attachment). From the timing diagram I've concluded the following:

  • FLM = First Line Marker/New Frame
  • CL1 = Load data into column dr"ive"rs"
  • CL2 = CP (pixel data clock)

(these abbreviations were listed on my LCD's datasheets; the interpretations come from the attached PDF)

It also described the implementation of the timing signals:

--Channel 0 can be configured to produce a CP pulse (Pixel Data Clock). This takes the form of a 50% duty
square wave.
--Channel 1 can be configured to produce a Load signal (Line Pulse). This takes the form of a 1/(X/4) duty
square wave. This can be clocked by the output from channel 0 (where X = number of columns, 4 = LCD data
bus width)
--Channel 2 can be configured to produce a Frame pulse (First Line Marker). This takes the form of a 1/Y duty
square wave. This can be clocked by the output of channel 1 (where Y = number of rows)

I wrote three "analogWrite" statements in an attempt to create these channels with the Arduino, though they're running at the default PWM frequency (500 Hz?)...

This is about as far as I could from these datasheets and my limited knowledge of electronics... I would REALLY appreciate it if someone could point me in the right direction! (e.g. how do I send the data at the correct times? How do the data pins affect what appears on the screen?

Thanks,

bob800

lcd dot matrix display single line.pdf (107 KB)

Have you considered that this is probably a VGA or similar video interface, lacking framebuffer?

There is some useful information linked off http://www.ebay.co.uk/itm/300549241743?nma=true&si=1LwTMK4vM07338rQO5p7ppJ%2B8NE%3D&rt=nc&_trksid=p4340.l2557&orig_cvip=true

Including the requirement for -27volts, apparently.

Thank you for your replies!

MarkT:
Have you considered that this is probably a VGA or similar video interface, lacking framebuffer?

It does seem that this is the case... but in a standard VGA connector, you have red, green, blue, etc. Why is the LCD supplied with a 4-bit data input when it's only monochrome? Is each "block" of the LCD divided up into 16 parts, or something?

According to this post: Gammon Forum : Electronics : Microprocessors : Arduino Uno output to VGA monitor, it does appear that monochrome VGA generation is possible with a bare arduino. But how do I substitute RGB connections with a 4-bit, monochrome video connection? Should I "shift out" the VGA pixel output from the Arduino sketch into a 4-bit, parallel output?

dxw00d:
There is some useful information linked off http://www.ebay.co.uk/itm/300549241743?nma=true&si=1LwTMK4vM07338rQO5p7ppJ%2B8NE%3D&rt=nc&_trksid=p4340.l2557&orig_cvip=true

Including the requirement for -27volts, apparently.

Yes, thank you, it was that listing in the first place that pointed me to right datasheets and that Word document. However, I was hoping that instead of using that $35 external controller, I could use my Arduino...

A 320x240 Display with 4 Bit data input needs an external controller and it's impossible to control it with any arduino!

4 data bits suggests 16 level grey-scale. It does indeed sound like a more power chip is needed to drive it - in fact the Parallax Propeller is the one I'd choose with a flexible video-generation unit (well 8 of them...). In fact it is worth googling for prior art with that display.

The arduino should be able to generate the timing signals though, so provide some sort of varying signal to the top data line and get the timing signals right, something should appear on the screen as confirmation.

TFT LCD controllers come in several varieties - ones for generating both gate and source signals for a small display (either video in or frame-buffer), and then the individual gate drivers and source drivers for larger displays (invariable video in).

Here "video in" means some sort of line and frame timing signal plus a clocked data stream.

The single controllers often integrate charge-pump power supply generation (using external capacitors), the one for larger displays will off load that task to a central controller circuit board (partly to ensure equal voltages and partly because of the extra power needed for large area displays).

Some single controllers don't have power supply generation and expect that from an external circuit board (there are various chips that do this task at various power levels)

TFT voltage rails include high and low gate voltages (quite large), high (and perhaps low) "analog" rail(s) for the source-drivers, and logic supply. Of these the analog and logic supplies take most current, gate supplies can be fairly puny (capacitor-diode voltage multiplier). The analog supply feeds a resistor chain to generate the many voltage levels needed for each greyscale or colour level - the outputs of this chain have buffer amps each to provide low-impedance, and these amps are where most of the power goes I think.

The actual LCD gate/source driver chips are long and thin and directly mounted around the display on one of the glass layers.

--- In short its a complex business driving a TFT LCD and different display drivers provide different amounts of support circuitry (such as power rail generation, frame-buffer). Displays for phones tend to integrate most functionality into the gate/source driver (since space is at a premium and the screen is small).

MarkT,

Thank you for your thorough reply. I'm in the process of building\tinkering with a Z80 microcomputer, and I was hoping that I could use the LCD in conjunction with my Arduino for a fairly simple video display. I guess that's not the case! XD

I guess it would be easiest to use a TV as a display and to forget about this LCD...

Anyway, thank you for your suggestions!

It's a little scary that this is so old, but it solved a problem I was chasing myself.

Yes, the Arduino can run this display the same as the backlit 2x16 LCD display, since the display actually has a controller built in the back of the display. Thankfully, this unit even came with a wire we could use.

I think I bought mine at the same time, same place, but until I started putting a microcontroller class together, never really sat down and worked with it...

using the same 4-bit method should work, and this display was the same as the Kronos 4500 time clock, and is at least 2-color with a green backlight.

I expect to get it working for my project shortly, but if you are still looking, I'll post the information on this here soon.

thphoenix,

I got myself some of these displays (Hitachi SP14Q006), too.
Could you please share your intel on this? How did you manage to fire it up?

Thanks,

RandomWireMan