20 December 2005 - MICROCONTROLLERS (original) (raw)

08:14 am - 74.4094 headaches

Not directly microcontroller-related, but I figure there are more people who use 74HCT4094 shift registers in their microcontroller projects.

I have a 'train' of three 74HCT4094 shift registers, that I drive with a PIC 16F628A. I use two of the three shift registers to drive two 7 segment displays -- with the decimal point, that makes for 8 leads. The displays are common anode, so the shift registers have to sink the current from the segments. (The third shift register is for driving something else, which has not been hooked up yet.)
The circuit consists of a PIC driving the shift register train. The strobe lines of all three shift registers are tied together and to a pin of the PIC. The same is the case with the output enable and clock lines. Pin 9 of a shift register is tied to the data line of the next shift register, so that the data will, indeed, shift from one register to the next. The first shift register's data pin is fed directly from the PIC.

To test the circuit, I clock in 1's and 0's alternatingly -- 16 bits in all.

When there is only a shift register in the first socket, it all works as expected: half of the segments is lit up, the other half is off. But when I place a second shift register in the second socket, all segments of both displays all light up -- as if only 0's have been clocked in. This also happens when I leave the second socket empty and place a shift register in the third socket.
When I measure the voltage on, say, the OE pin, I get an even voltage across all the three sockets, so it seems unlikely to me that the extra shift register dips one of the lines below the threshold.

Can anyone help me fix this problem? I'm on a deadline (it's for a christmas present for my dad), and I have been trying to get it to work for four days now...
If you need more information or a clarification, please don't hesitate to comment and ask!

EDIT: I got it to work by driving the second shift register from the PIC and feed its output to the first shift register. There is no reason why it would not work the other way around, but I'm not complaining.

EDIT PART THE SECOND: And now it is broken again... I undid all the changes I made to the circuit, but that didn't help either.

Current Mood: draineddrained