Basic Concepts of 74HC595 Shift Registers

 

Sites to Reference:

 

http://www.youtube.com/watch?v=R7xI-flj1Mw

http://bildr.org/2011/02/74hc595/

 

 

Code Example:

/*
SHift example using
74HC595, lights all 8 sequentially, one at a time...
*/

void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);

 


}

void loop() {

// shift in 00000001
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(9, HIGH); // 0 WRITE **********************

delay(1);

// shift in 00000010
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms

digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(9, HIGH); // 0 WRITE **********************

delay(1);

// shift in 00000100
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(9, HIGH); // 0 WRITE **********************

delay(1);
// shift in 00001000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(9, HIGH); // 0 WRITE **********************


delay(1);
// shift in 00010000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(9, HIGH); // 0 WRITE **********************


delay(1);
// shift in 00100000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(9, HIGH); // 0 WRITE **********************


delay(1);
// shift in 01000000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(9, HIGH); // 0 WRITE **********************


delay(1);
// shift in 10000000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);

digitalWrite(9, HIGH); // 0 WRITE **********************

}