Retrofit Segment LCD to Character LCD Display - Sencore LC102

Hello,

I am looking into retrofitting a Sencore LC-102 "Z-Meter" that had some front panel damage that caused damage to the two segment LCD displays inside the unit. This LC-102 was last manufactured in the early '90s and the manufacturer no longer has spare parts available for it. The LCDs are custom and I have not been able to source a replacement. The equipment is useless without the displays so I am looking towards the Arduino for a solution.

The original LCD displays are standard non-multiplexed segment type. The first LCD has six 7-Segment digits with decimal points, +/- indicators, and the rest are annunciators like "GOOD", "BAD", "OPEN", "SHORT", "uF", "uH", "RINGS", etc. In total, the first LCD has about 70 segments! The second LCD has four 7-Segment digits with a "VOLTS" annunciator, about 28 segments. So I am looking at almost 100 segments if display data to decode and "re-display" on a 24x2 and 16x2 Character LCD backlit displays.

The display driver chips are Motorola MC145453 and there are three of them. Basically a 33-bit shift register. The chips have a data and clock line. That is all I have to work with. So I figured I would set up an Arduino to capture the data stream into a buffer for each of the chips (they are clocked seperately) and then decode the data anf format it for display on the character displays. Sounds simple enough. Here-in lies the problem. The clock is running right about 1MHz. Data is shifted in on the rising clock edge. From the Logic Analyzer information, I see that there is less than 1uS from the rising clock edge to valid data on many of the clock pulses. I intended to use the clock to interrupt the Arduino and then read the data line and push that into a buffer, increment a bit counter and return.

From what I understand, the 16MHz Arduino would not be able to handle that. It would take over 2uS for the interrupt to even execute my code in the ISR and by that time the data would be invalid. I just want to ask if this is true? If so, is there a faster way to shift data into a buffer based in a clock input to the Arduino?

If the above is true, my only recourse is to either use shift registers to load the data and then use the Arduino to read the shift registers or better yet, just use two of the Centipede I/O boards (128 I/O pins) and connect to the exsisting segment pins on the PCB and use the Arduino to read the segments and then decode and display.

Is the Arduino fast enough to handle the 1MHz clock signal with an ISR to handle clocking in a bit?

MC145453 Data Sheet: Motorola MC145453 datasheet pdf

Xenawise

I added a picture of the the main LCD in question I need to convert the display data for as well as two pages from the data sheet of the LCD driver chip to show how the interface works.

The Clock is a 1uS pulse and the Data is shifted in on the rising edge of the clock. From my Logic Analyzer plots, the Data is only valid for at the most 1uS after the rising edge of the clock signal. And from reading Nick Gammon's page on Interrupts, even to get to the first instruction in my code will take over 1uS and that data will more than likely be invalid at that point.

Based on this information, I do not believe that the Arduino is fast enough to do this data entry using interrupts. It might be able to do it using the built-in UART, although I am not sure how to approach that option.

The Centipede I/O Shield looks like a good alternative if I just read the segment outputs from the exsisting circuit (disable the Backplane clock so the segment outputs don't change states at 60Hz or whatever the backplane clock is set to) since thay are latched into the LCD driver chips and then decode the data and format it for displaying on a standard 24x2 backlit LCD display.

Xenawise