A Weller WD1 soldering station controller was found in a refuse pile, abandoned apparently because some of the LCD segments had failed. Googling for a fix or spare parts revealed the LCD display isn't anymore available and there were no repair case reports for this problem. For other problems like blown fuse, failed TRIAC, re-flashing the firmware, some. For the LCD problems someone proposed replacing the driver, but in this case, that was not the problem. The driver was fine, the LCD not.
Having some cheap microcontrollers and character matrix LCD modules around, thought replacing the original display with an emulated one might be a viable undertaking.
For the emulated display one needs to choose the point of capturing the input to the display from which on the behavior is emulated. Here the alternatives are before or after the display controller. Of course, one could also connect the display directly to the main controller and rewrite its FW. Can do, but it would likely invalidate the existing user's manuals and overall, be much more involving a project than just replacing the display.
Taking the input to the emulation after the display controller involves much larger number of signals (40: 3 back planes and 37 segment groups) than before it (2: I2C SCL and SDA). The choice is clear.
The display controller is NXP PCF856CHL, an I2C connected chip for driving up to 4 back planes and 40 segment groups. As the data sheet is readily available, no reverse engineering was needed. Just implementing the same I2C protocol as the original chip's was enough. This chip is nice in a way that it is write-only device. That simplified the I2C slave enormously, as responding to reads is more complex than just accepting a stream of writes.
The controller writes blindly segment states in bursts of 2-4 bytes (16-32 segments) every 10-30 ms. Apparently there is a "screen buffer" in the main controller and the segment bits are taken from there with a timer-driven I2C writer process.
The LCD glass is another kind of issue, especially that the one at hand was partially broken. The controller data sheet describes exactly what back-plane - segment group pairs each bit written to it will control. The case for reverse engineering is to figure out the segment group and back-plane assignments.
Activating a segment group that was still connected to the pin was easy: just connect some static charge to the pin.
For a segment group no longer connected to the pin one needed to reach to hopefully still conducting part of the ITO trace from the pin to the LCD cell.
Activating the whole backplane groups appeared to be not possible. Therefore, repairing of the ITO traces was attempted, with a graphite paste made from graphite dust filed from a pencil core and using rubbing alcohol as the vehicle. No binder was used to make it possible to wash the paste away if needed. (The paste-repaired pins on the top side.) This repair is temporary. The graphite paste will not work for a longer time.
That actually turned out to work quite well. Despite some missed activations and misactivations eventually revealed everything that was needed to draw the map of the LCD glass.
After all needed information was gathered the next step was to choose components and make a replacement strategy. The common character matrix LCD module needs minimum of 6 pins and if one wants to use the RnW signal and read the status instead of writing blindly with long enough timings, 7 pins. I2C needs 2 pins. So it seems a 14-pin microcontroller (power and 12 I/O pins) should suffice. As a short tube of PIC16F18326 microcontrollers in SO-14 variant were at hand, that was natural choice. 16 k instruction FLASH and 2kB RAM should be enough.
The next step was to carve (with a 9 mm snap-off blade knife) the front panel so that the thicker LCD module would fit in the place of the thin LCD glass. Also the module was slightly modified by bending down the bezel holding...Read more »