We are been in the necessity to 74HC595 shift register. We also call it 595 chip. With Shift Register, You Can Use One Arduino Pin To Blink Multiple LED. Here is 74HC595 Shift Register Theory For Arduino Tutorials. Earlier, we talked about how to increase pin of Arduino, how to connect multiple LEDs with one Arduino pin, multiplexing and charplexing etc. Neither all understands too complex matters but want to build stuffs nor everyone has higher budget. 74HC595 Shift Register is quite cheap IC, cost around 50 cents per piece and it worth to purchase 4-6 74HC595 in one order either from physical shop or online shop. Before building stuffs with 74HC595 Shift Register, we need to understand the basic theory, most importantly about the pins.
74HC595 Shift Register Theory and Pins
A flip-flop is a circuit which has two stable states. They can be used to store the state information. Flip-flops are basic elements of today’s digital electronics systems. Such circuit can be made to change state by signals applied to one control input and will deliver one or two outputs. Flip-flop was first designed 100 years back – in the year 1918. We can build basic flip-flop with two transistors and some resistors. In the guide how to connect multiple LEDs with one Arduino pin we told two ways to increase pins – by using transistors or using shift registers.
A shift register is a cascade of flip flops. They share the same clock where the output of each flip-flop is connected to the data input of the next flip-flop. Using transistors to connect multiple LEDs with one Arduino pin is too basic and using shift register is practical.
Shift registers can have parallel and serial inputs and outputs. We can say them serial-in, parallel-out (SIPO) or parallel-in, serial-out (PISO). 74HC595 shift register supports 8-bit serial input and 8-bit serial or parallel output. 74HC595 is a SIPO chip, and 74HC165 is a PISO chip.
74HC595 shift register has 16 pins. It holds data in locations what can be thought of as eight memory locations, each of which can be a 1 or a 0. Digital data can be stored in the form of bits. We say a bit to refer to one of the number which build up the binary value. If a binary value is 10101010, then the first bit is 0, and the 8th bit is 1. So each bit can be either 0 or 1. One 74HC595 shift register will provide us eight pins to use where it is using three pins of Arduino. If we use two 74HC595 shift registers, then also they will occupy 3 pins of Arduino and give us 8+8 = 16 pins. We are using shift register to expand the number of pins of Arduino. This is what is known as bit-shifting. We can easily daisychain as many shift registers as we like!
We learned how to use one 7 segment LED with Arduino. If we use one 74HC595 shift register with such one 7 segment LED then connection will not occupy lot of pins on Arduino.
When we apply a pulse to a 74HC595 shift register from Arduino then the bits in the shift register jumps one step to the left. Bit 6 will get the value of bit 5 etc. We can actually make it easily firing 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 like a child like hitting series of metal sticks hanging with a stick – that is LED chaser. That way is for addressing a particular pin. For controlling all pins together, like to blink we can use PWM. 74HC595 shift register contains 8 pins which we can use as output, we refer to these as QA to QH. The right most bit maps to QH, and the left most bit maps to QA. We told you before a binary value of binary value is 10101010. Arduino has built-in function for the shift registers named
shiftOut. So it is just about connection.
In next guide, we will continue the connection and example codes. 74HC595 shift register is really interesting and funny. To do innovative funny works, you need to understand the basic how it is working.