Go Down

Topic: Possible to operate a shift register manually with switches? (Read 6026 times) previous topic - next topic

gonzogeek

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 :)

retrolefty

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


Graynomad

Quote
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
Rob Gray aka the GRAYnomad www.robgray.com

CrossRoads

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.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

Nick Gammon

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.
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

gonzogeek

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?

Graynomad

Quote
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.

Quote
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.

Quote
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

Rob Gray aka the GRAYnomad www.robgray.com

gonzogeek

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 :)

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?

Graynomad

Quote
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
Rob Gray aka the GRAYnomad www.robgray.com

gonzogeek


Quote
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

Graynomad

Quote
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
Rob Gray aka the GRAYnomad www.robgray.com


gonzogeek

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

http://www.thisisobsolete.com/2012/04/manual-shift-register.html

Graynomad

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

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
Rob Gray aka the GRAYnomad www.robgray.com

gonzogeek

Haha!

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


Go Up