Interactive 595 Shift Register Simulator

Posted in (News, Useful) by Aaron on 28-02-2011

For beginners, the 595 series Shift Register isn’t easy to grasp. I’ve written an interactive 595 simulator so you can learn out the 595 works without having to wire one together. Play around with it. See if you can get it to produce the output you expect.

Tragically, it looks like your browser doesn’t support Canvas. :(

I would recommend the most recent versions of Firefox, or Safari

“Wait a minute! How does this work? I don’t get it!”

Picture a box that has a hole on either side. Inside it has 8 spaces you can fill up. Those spaces can either hold a zero (0) or a one (1). To fill up a space, you just push a new 0 or 1 into the left-hand side. When you do, the last space in the box gets pushed out the right hand side. At any time, you can open up the box and get all 8 values at once in the order you put them in there.

That’s kind of how a shift register works. You use the Serial In Value to tell the chip if you’re going to put a 1 or a 0 in. You use the Register Clock to tell the chip you’re pushing in a value on the left hand side. You use the Latch (or Shift Register Clock) to tell the chip you want to see all the values in the box.

Try the following:

  1. Click the Serial Input Toggle button so that the SER pin goes red (that means it’s “HIGH”)
  2. Click on the Clock button (Notice the SRCLK pin goes HIGH)
  3. Now look at the Storage Register on the right. You’ve added a 1 to the beginning of the list!
  4. If you click Clock again, you’ll see another 1 added to the left side.
  5. Click the Serial Input Toggle again and the SER pin will go LOW.
  6. Click Clock, now you’ll see a 0 added to the left side.
  7. Now click on the Latch button. The values in the Storage Register are pushed out to the Shift Register. Now the output pins on the chip are also showing HIGH or LOW corresponding to the Shift Register. Lastly, you’ll see the 7-segment display has lit up as well.
  8. Press the Storage Register Reclear button and press Latch. Now both registers are clear.

Now try those steps again, except press the Latch button after each Clock press. Notice what’s happening. Once you get the hang of it. see if you can make some numbers on the 7-segment display. Figure out which segments correspond to which pins on the shift register chip.

Here are a couple of characters for the 7-segment display to get you started:

1:  00001010
2:  11101100
E:  11110100
A: 11011110

At least one person was looking for part numbers for 595 shift registers. Here are a few:

74HC595
74HCT595
SN74HC595

What’s the difference?
Similar part numbers usually suggest compatibility between manufacturers. The specific part number may denote a variation. For instance, the 74HC595 differs from the 74HCT595 in that it can handle a wider variation in input voltage. For beginners, the variations usually aren’t particularly important. Check the data sheet for a particular chip.

If you’re looking for one and aren’t sure where to start, I’d recommend going to SparkFun. It’s not going to be the cheapest option, but they’ll give you the right chip if you’re uncertain.

Comments:

48 Responses to “Interactive 595 Shift Register Simulator”


  1. [...] The 595 Shift Register Simulator [...]


  2. most helpful many thanks


  3. [...] just finished building an online 595 shift register simulator. These inexpensive chips let you extend the number of devices that can be controlled by a single [...]


  4. Thank you very much!
    Very helpful!


  5. Fantastic. Thanks for making this!


  6. You’ve mixed up the registers. Data is shifted into the shift register, and transferred to the storage by ST_CP (Latch). MR clears the shift register, not the storage register. The output is correct, though. Nice initiative, but confusing for beginners when simulator is not correct with respect to data sheet.


  7. maybe list a few parts numbers and package types?


  8. One more error: QH’ is the 7th bit in shift register, not the 8th. It is to be connected to SER when using more than one 595, cascaded.


  9. Our 7-segment display goes up to 11 !

    I’ve never realized you could do that with a 7-segment display, but the input 00011111 gives you a nice 11 as the output :-)


  10. Hi!

    AFIK the input register is cleared after it was copied to the output register, or am I mistaking?


  11. [...] just finished building an online 595 shift register simulator. These inexpensive chips let you extend the number of devices that can be controlled by a single [...]


  12. [...] cascade multiple 595 ICs together to enable even more outputs without using additional pins. Click here to check out the simulator and hopefully learn how to use a shift register. This entry was posted [...]


  13. [...] shift register simulator – [Link] Tags: 595, Logic, shift register, simulator Filed in Websites | 1 views No Comments [...]


  14. Thanks for the tutorial Aaron. Interactive demos like this make learning electronics fun, and easy. Props for doing it in HTML5 canvas vs Flash.


  15. Thanks!! putting together an LED cube and this made my life SOOOO much easier.

    u ever consider publishing a JavaScript API for drawing an IC to a canvas. that way more people can build all kinds of simulators.

    thanks again!


  16. Thanks Josh, Glad to hear that this was helpful!

    I suppose that I could extend this in terms of abstraction. I’ll have to mull that over… a great idea, no doubt.


  17. [...] kun je nu naar de uitgangen sturen door de “latch-pin”. Snapte je deze alinea niet? hier is een simulatie te vinden van deze chip die (voor mij in ieder geval) een hoop duidelijk heeft [...]


  18. [...] look, may we suggest our very own 595 shiftout module. Additonal links: 595 register simulator ShiftPWM [...]


  19. [...] Simulador: http://conductiveresistance.com/interactive-595-shift-register-simulator/ [...]


  20. [...] you need a visual demonstration of the concept this link may [...]


  21. [...] edit: ShortBob informed me of a good interactive example of how a shift register works! http://conductiveresistance.com/interactive-595-shift-register-simulator/ [...]


  22. tandblekninng med laser…

    [...]r What’s Happening i’m new to this, I stumbled upon this I have found It posi zr[...]…


  23. [...] on bitin tila ja lopuksi vedetään latchpinni ylös. Tämän vaikeampaa niiden ohjailu ei ole. Tällä simulaattorilla voi aikansa kuluksi [...]


  24. Thanks for creating this. It helped me to understand 595 shift registers.


  25. This is great. Thanks for putting this together.


  26. Thanks for putting this together :) But I agree with the commenter who said that having the 2 registers mixed up could be confusing – it was for me until I realised it was probably just a mistake!


  27. Yes.i agree with your point.


  28. Nice visual to capture what’s going inside

    74HC595.But while you explaining 2 registers(shift and storge)are interchanged some times.


  29. [...] more information and the simulator - click here. And we’re on twitter and Google+, so follow us for news and [...]


  30. cool simulator, been searching for help to get better idea of how a register works, this is the best one that can b understood easily, btw if 2 shift registers are connected together for led purposes, can i treat it as 16 bits? sorry for this kinda of question cos im new to electronics n trying to build a 10×100 matrix, thx

    mic


  31. Yes, connecting two Shift Registers you could treat it like having 16 bits, And likewise 3 shift registers would be 24 bits, and 4 shift registers would be 32.

    It might be more appropriate to think of them though as switches or pins. When you attach “bits” to your discussion, you start thinking in binary and that’s not what you want for your project.


  32. thx for ur prompt response!!! i didnt expect that indeed, if i were using RGB Leds, can i use 4 registers to connect 300 leds? 1 register for R, 1 for G, 1 for B n 1 for Gnd? then use transistor in between to boost the voltage? do i have enuff Mhz? or wat i can do to make it possible? (sorry too many questions cos i start doing a letter channel signage, probably required more than 300 leds)

    thx!
    mic


  33. for the moment im trying to use arduino UNO as my platform, is it possible to use 1 register to connect all the Red of 300 leds? n also same to other color anodes?

    thx!
    mic


  34. Are you trying to provide independent control of each of the 300 LEDs? If so, a mere 4 registers on a shift register will not work. If you’re trying to control a row of 300 LEDs in series, the logic is right, but you’ll need the voltage to cover the whole set – at 1.8v drop per LED, you’re looking at a lot of voltage. If you’re trying to do 300 LEDs in parallel, you should be able to do it provided you have the current available to power that many. You’d need 300 transistors as well.


  35. i think i will go for the independent control of each of the RGB 300 LEDs, if it’s 10 (rows) x 30 (cols) matrix, how many registers n transistors do i need?

    in series – i have less control of the leds?, still, i need transistor to cover the whole set right?

    in parallel – i will hav bettter control of leds? but only thing is that i have a lot of soldering work?

    thx


  36. If you want to do independent control of the LEDs, you’ll need 300 registers and transistors. In an 8-register package, it comes out to 38 shift-registers. That’s a lot of chips! I’m not sure you’ll be able to clock all that out as fast as I assume you’ll want. This might be a stretch if you’re hoping to do animated output.

    In Series and Parallel, you only have control over the single pin you’re working on. In this case, you wouldn’t even need a shift register. You have 3 pins free on your Arduino to turn LEDs on and off with. The only difference between these two is that in Series, you put the LEDs in a long line, each is dependent on its neighbor. In Parallel you split your line into however many LEDs you have. You have the same amount of control of each LED either way (that is, turn them all off, or all on)


  37. hmm….maybe it is either in series or parallel, can i email u the video copy of the example output so maybe u have a better idea of the solution?


  38. |_* * * _|

    | ** |

    | ** | <—– ( This is I, just an example, in actual has more leds in it, this one has 14 leds)

    | ** |
    _ | ** |_

    |_* * * _|


  39. I really have no idea what you’re trying to convey here – Feel free to send me the video. I’ll do my best to help :)


  40. can i have ur email? so i can email to u.. :D


  41. Yeah, you can reach me at info@conductiveresistance.com


  42. email sent


  43. Hmm, it says “Tragically, it looks like your browser doesn’t support Canvas. :(“.
    I’m on Linux, I tried every browser… they support canvas on every other website but not here.
    Suggestions?


  44. It looks like our recent transition between servers left the code behind. We’ll get on it and see if we can get it working.


  45. Thanks for your patience. We’ve fixed it. It should be working.


  46. Thank you! :)


  47. Thank you! Your simulator help me a lot!


  48. hey Aaron, I am building a 16 by 32 leds matrix, I have grabbed the concept of the 595 chip but my code is not working. Im trying to turn on all leds individually with 5 shift register (595 that is) and 2 active low 3 to 8 decoders and an Arduino Uno. Is the Uno capable of doing so, because this is 512 LEDs all together
    thanks

Leave a Reply