Well, here we are again, the MAX6955 went down in flames as it will only work on LEDs. So we have to start over.

The Analysis: The NCD is comprised of 4 groups: Display, Keyboard, Rotary Switches, and Thumb Wheel Switches.  The Display is comprised of 4 16-segment and 13 7-segment PinLite lamps, and two LEDs.  The keyboard is comprised of a 10 key number pad and 4 special keys, it also encodes A-Z. There are two rotary switches, and two thumbwheel switches as well. I also found a user guide, TM-1-1520-238-10 pages 3-34 through 3-46 on the web.  (this can be found here)

This blog will only concern ourselves with the display sub-system. I can't use a shifter C59 method as I need the display to be addressable.  So this is what a came up with.

Display TypeIc per SegmentIc per DeviceDevicesTotal Ic
16 Segments15ma +/- 2ma240ma4960ma
7 Segments15ma +/- 2ma105ma131365ma
"""7735ma

So first off an Arduino I/O will not handle that much current even the 15ma is pushing it.  So what to do? Now, remember I want dimming and a lamp test function. If I buffer the drive lines with a 74HC244 non-inverting tri-state buffer, which will drive a MOSFET which will act as a drain, with the load (lamp) to power. Sounds good. Let's move on. The  7-segment lamps will be driven from CD4511B BCD to 7-segment decoder.  After the decoder, I will use the same scheme and use a 74HC244 followed by our friendy MOSFET. As there are thirteen (13) 7segment displays, I will brake them into two strings on eight (6) displays while the other string has seven (7).

Now the multiplexer. There are 4 + 13 or 17. Now I really don't want to wire 17 more leads, so we will to it the easy way  17 == 11 hex or 5 more pins. (see table on the right)  So I need a 5:23 decoder the 74HC138 is very cool as it is only a 3:8 decoder but has 3 enables, 2 low active and one high active. So I can only need 3 decoders (see the schematic below) and no external gate(s).

QuantityTypeDrive LinesSelect lines
416-segment164
87-segment78
77-segment77
23TOTALS301

 

#D#H2ADCBAE1!E2!E3
000000000001
010100001xxx
020200010xxx
030300011xxx
040400100xxx
050500101xxx
060600110xxx
070700111xxx
080801000xxx
090901001xxx
100A01010xxx
110B01001xxx
120C01100xxx
130D01101xxx
140E01110xxx
150F01111xxx
161010000xxx
171110001xxx
181210010xxx
191310011xxx
201410100xxx
211510101xxx
221610110xxx
231710111xxx

The seventeen outputs, from the multiplexer, are connected to a BJT with the +4vdc on the high side, while the load connects to the common connection on the displays. The control for the dimmer is a PWM signal from the Arduino feeds into the three 74HC244 tri-state enable inputs. PWM signals duty cycle determines how much each segment drive is in the 'ON' state vs its 'OFF' state.

 

 

 

5 to 21 decoder