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
latch pin LOW
data pin HIGH
clock pin LOW
data pin {desired pin state for bit N}
clock pin HIGH
data pin LOW
repeat from 3 until N=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
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.
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.
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.
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?
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?
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.
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?
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.
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 -
latch pin LOW
data pin HIGH
clock pin LOW
data pin {desired pin state for bit N}
clock pin HIGH
data pin LOW
repeat from 3 until N = 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.