I have old style devise which I would like to automate little-bit. It has small 1 row 20 segment LCD screen and keypad drives by ST7066U dot matrix LCD controller. Idea is to read data from the screen and send it to my Arduino and depends what written on the screen execute some required actions. Any idea how it possible to do?
Possible, very difficult.
LCDs are driven with an AC drive to the segments and back plane. You have to take that signal and decode it to work out what is being displayed. Probably need some custom electronics to do it, certainly need careful examination of the signals with an oscilloscope to see what's going on.
Any idea how it possible to do?
Essentially, not going to happen!
If you want to "automate an old style device", then you need to completely characterise its function by its inputs and outputs, and replace the controller with your own.
This will be made difficult unless you are able to read the code of the original processor and disassemble it.
This is what I think you need, not tested in any way and possibly fundamentally flawed.
Get 5 * 4030 quad Ex-OR gates, 4 gates per package, total 20 gates.
Connect one input of every Ex-OR gate to the groundplane drive of the LCD.
Connect each segment drive to the spare input of one of the Ex-OR gates.
The output of each gate will be / might be / might not be the signal you are looking for to indicate if the segment is on or off.
Do report back on progress.
The ST7066U is equivalent to an HD44780 so he is probably dealing with a more or less standard 20x1 display.
This makes his problem very slightly easier to deal with than described by Perry since he only has to deal with less than a dozen connections.
So forget the Ex-OR gates, you just monitor the connections to the display controller itself.
Incidentally, the HD44780 does not have a "backplane"; it drives a matrix display. Quite impossible to decode as it uses multi-level drives.
This situation is not "very slightly easier to deal with", it is in fact "actually do-able"!
Not necessarily recommended however ...
Hi Everyone, thanks a lot for a your replays and ideas.
I have little-bit to play with it. My idea is next:
Read data pins from controller and then try to convert them in to the readable format
this is from manual:
DB4 to DB7 4 I/O MPU Four high order bi-directional tristate data buspins. Used for data transfer and receive between the MPU and the ST7066U. DB7 can be used as a busy flag.
I connected my scope to this pins and connect trier on the enable signal
I am reading some pattern on the scope and I can see that they changes according to the different outputs.
I am not quite understand is there are serial data transferred via 4 data lines or is it parallel across all pins. I assume it parallel but in this case it looks like not enough information to cover all 20 segments
Made in Japan, eh?
The data is sent to the display as two successive 4-bit parallel "nybbles" at a time, each strobed by the enable line. You need to monitor at least six lines, four data, enable and Register Select.