Possible to operate a shift register manually with switches?

Hello

Is it possible to operate a shift-register manually if you get my meaning with a row of switches? Why on Earth would I want to do that I hear you ask? Only out of curiosity and as a learning exercise and oh well isn't there something just a little bit perverse and sexy about doing such a thing? Like I was programming the ENIAC or some other arcane device? Oh Ok, just me then.

The shift register I have in mind is a 74HC595. The sequence is I believe

  1. latch pin LOW
  2. data pin HIGH
  3. clock pin LOW
  4. data pin {desired pin state for bit N}
  5. clock pin HIGH
  6. data pin LOW
  7. repeat from 3 until N=8
  8. clock pin LOW

So I'd have 8 LEDs connected to Q1-Q8 of the 595 with 220R current limiting resistors to GND and I'd have three ON/OFF switches for the latch, data and clock pins. I'd go through the sequence for a given binary pattern reach the final step and hey presto my LEDs will light in the given pattern.

Makes sense no? I am a noob so I may well be way off piste. The only reason this might not work - it occurs to me - is if the various things are time critical. I was pretty good at Track'n'Field back in the day but I don't think I can flick switches at a millisecond rate :slight_smile:

In theory you could operate a shift register with manual switches, the SR doesn't care how slow the sequence operates, just that it has the correct sequence steps. The problem you will have in reality is that manual switches have 'contact bounce' which will cause false stepping unless you design hardware contact debouncing components. That will make the whole circuit fairly component 'busy' and possibly frustrating to get working properly.

Lefty

various things are time critical

There's nothing particularly time critical in what you are doing, the only issue is switch bounce as retrolefty said, and that only matters on the clock pin.


Rob

And since only the clock pin matters, you could have a switch trigger a 555 to make pulse for you, nice & wide so when you fatfinger the switch you only get 1 clock signal out of it.

See below:

That is the bounce on a little switch press. There are so many bounces there it would probably clock out all 8 bits, and you would be left thinking it didn't work. You definitely need to address that or it won't be educational.

Thanks chaps. Yes good point, de-bouncing the switches. I know the problem but it hadn't occurred to me in this context.

Could you explain a little more about using a 555 to trigger pulses to make the clock pin HIGH/LOW? If you were to control the 555 with a switch would that switch itself not need de-bouncing also?!

If I understand things correctly, is it only the clock pin that needs de-bouncing because even if the data pins bounce they will settle on the intended value eventually and the next bit isn't considered until the clock pin advances the 595 to it?

Could you explain a little more about using a 555 to trigger pulses

You set it up as a monostable. ie it gets a pulse the produces a longer pulse.

would that switch itself not need de-bouncing

No because the 555 output will stay active until X time after the last pulse.

I can't remember the circuit (haven't used a 555 for about 20 years) but search for "555 monostable" on Google.

If I understand things correctly, is it only the clock pin that needs de-bouncing

Correct. All the data will be stable by the time you press the clock button.


Rob

Thanks again chaps. In exploring shift registers I've gone off on a 555 tangent which I now realise was inevitable and has proved very interesting. I have various LEDs flashing and buzzers whining all over my workbench :slight_smile:

Returning to my original problem, as the pins need to be kept HIGH for the relevant cycle and then set LOW again, what's the most sensible solution? Use the 555 in monostable mode with a very long pulse time (minutes) and then add a reset button to interrupt the pulse when desired, eg sooner?

as the pins need to be kept HIGH for the relevant cycle and then set LOW again

Which pins?

The only one that matters is the clock and it's edge triggered, so whether you give it a short high pulse or a short low pulse as far as the eye is concerned the SR will update the same way.


Rob

Graynomad:

as the pins need to be kept HIGH for the relevant cycle and then set LOW again

Which pins?
The only one that matters is the clock and it's edge triggered, so whether you give it a short high pulse or a short low pulse as far as the eye is concerned the SR will update the same way.

Oh Ok cool. I did kind of wonder while I was typing whether it did need to be held or not. Yes sorry, I meant just the clock pin. I don't really know what edge triggered means ...

... Googling ...

... oh Ok, so it only needs a pulse, it's the change in state that triggers (magical stuff inside the IC) rather than whether it's in any particular state?

How would I have known that if you hadn't told me? Presumably that sort of information is included in an ICs datasheet?

Thanks again
Jim

Presumably that sort of information is included in an ICs datasheet?

Yep, but it's not always obvious when you're not used to reading data sheets.

Often it's shown as a little triangle on the logic diagram.

Also if anything is called a "clock" you can be 98% sure it's edge triggered.

And the description will often say "on the rising edge of XX" sort of thing.

Then as a last resort there's the timing diagrams.


Rob

Thanks for your help

... and ... 11 months later :slight_smile: a manual shift register is born!

Good one, and it only took a year. Getting paid by the hour were you :slight_smile:

There was a great retro project here some time ago, a real Jules Verne style computer. I can't find it now but IIRC the keyboard was made from old typewriter keys etc. Looked great.


Rob

Haha!

About 1 month to do and then 10 months to get round to documenting it! :slight_smile:

Thanks for that demo of shift registers! I was reading about them the other day, and your demo helped that info to stick.

I am a bit of a newbie, this kind of thing is quite interesting.

Ha! Cool, I'm glad it was helpful :slight_smile:

Check your site and the "device".

Excellent workmanship. Nicely done.

I am in the process of attempting to build a basic version of the OP's shift register controlled by switches. I am just wondering if the attached schematic of a bistable 555 timer circuit to switch the clock pin of a 74HC595 shift register would be suitable for this project in regard to negating switch bounce. In the original post the OP gave this as the sequence of clock, latch and data pin switching -

  1. latch pin LOW
  2. data pin HIGH
  3. clock pin LOW
  4. data pin {desired pin state for bit N}
  5. clock pin HIGH
  6. data pin LOW
  7. repeat from 3 until N = 8
  8. clock pin LOW

I am just wondering why the latch pin does not go HIGH in this sequence, and if this sequence is correct. Thank you Pedro.

Bistable 555 circuit.bmp (949 KB)

Possible to operate a shift register manually with switches?

Yes.