Monday, July 23, 2007

Salvaging LCDs from all the wrong places

I've always had this urge to salvage components from unused, unneeded, broken gadgets, especially when it comes to LCDs. This one is in an Ascom Eurit 22 ISDN telephone, the handset I've already modified (added a pair of jacks ) for use with a PC, was using it mainly for Skype.

The base unit however resisted a previous attempt at modification where I tried reading the flash and modifying the firmware to make it do something else other than what an ISDN phone is supposed to do. There wasn't much info on the MPU either.. I remember finding some compiler for it on a Renesas site but never actually got down to anything serious because of the issues with reading the flash.

A few days ago out of boredom I took another look at the PCB and the display controller. It's a PCF8578T from Philps. I realized that it works through I2C so I booted up Knoppix , quickly compiled milksop's milk app, connected the I2C pins to the lpt port and started a CheapI2C sniff, after several failed attempts in Windows with BSLA's I2C decoder (had to poke the exe into actually doing anything without a BSLA besides showing demo data) I had some trouble with milk app at first because it doesn't like hyperthreading.

After disabling hyperthreading it worked like a charm though. I got the output:

Milksop GPL Reflasher - 0.20 - (c)2002

CheapI2C on printer port at 0x378

Entering capture mode, your PC will appear frozen - press any key to end

Starting realtime...

Stopped realtime...

Monitoring completed

12.064mS: 3C W 55

1.867 S: 3C W E0 88 70 00 28 00 44 00 28 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 3A B8 1B B0 01 28 00 . p . ( . D . ( D . . . . . . . . . . . . . . ( : . . . . ( .

Now 3C being 0111100 is the I2C Slave ID for the PCF8578, 55 is a SET MODE command that just sets up and activates the display, and on the next line is an actual RAM ACCESS command that is used to modify the display ram aka. write to the display. I did several I2C captures this way.

Then I cut the trace connecting the PCF's I2C pins to the phone's MPU and coded up an app to drive it from the LPT port. For every character on the display 2 bytes are sent after E0 88 70, then after the 14 characters of the display there's a final byte the works the last 3 icons ( the A B C )

The configuration is like this:

So here's the outcome. Driving it off the LPT port.

No comments:

Post a Comment