GameToy hardware project

These pages describe a sort of blog-ish time log on my 'GameToy' hardware project (stalled indefinitely).

[<< First entry] [< Previous entry] [Next entry >] [Latest entry > >]

June 3rd, 2006 - Hardware

I decided to give the LCD a spin.

I connected the LCD to my velleman USB experiment board. As I've mentioned before, the LCD needs 13 pins, but the experiment board only has 8 digital outs. Even if I used the analog outs, that would give me a total of 10 outputs, which is still a bit too few to control the LCD panel properly.

Anyway, my first attempt was to get the backlight led working. I originally took voltage from an analog out, and was puzzled that the backlight didn't turn on. Well, the outputs from the USB board are limited to ~1mA, while the backlight is rated at 60mA. After taking the voltage directly from the USB cable, the backlight worked (after limiting the current myself, that is).

Next up was the LCD itself. I decided to use the USB board to control lower 4 bits of the data bus, E, R/W, and D/I. I wired reset and chip selects directly to 0 and vcc. After connecting all sorts of things I turned the thing on, and nothing happened.

(Image source: Lumex LCM-H12864GSF/H-Y data sheet)

The problem, as I figured, had to do with the signals Vee, V0, Vdd and Vss. Vss is clearly ground. Vdd is the +5V. So what are Vee and V0? I did not have a 10k-20kOhm potentiometer, so I had used two 10kOhm resistors instead.

Supply voltage for LCD drive is Vdd - V0, and is supposed to be around 10.8 - 12.4 volts, depending on the operating temperature.

So, I checked some voltages. Vdd-V0 was around 5V, V0-Vee was around 5V. Vdd-Vee was almost exactly 10V. After scratching my head a bit, I disconnected the Vdd side of the equation, and the screen came alive.

Setting signals to Write, Data, some data bits on and off, and pumping E should have, as far as I understood it, have changed the display contents, but it didn't.

Either the Vdd-V0 voltage is still too low and the LCD keeps resetting itself or something, or then it requires a startup sequence (like, for instance, actually turning the screen on code-wise), which I can't do with the current setup. Or then something else is still wrong.

Comments are appreciated.