Robojax

Lesson 110: Build up to 8 digits Seven Segment display using 74HC595 Shift Register | Robojax

Lesson 110: Build up to 8 digits Seven Segment display using 74HC595 Shift Register | Robojax

Please select other codes for this lecture from the links below.

Related or required files and link to this lesson

LED Seven Segment Display using 74HC595

This vode is to introduct the 74HC595 to driver 8 LED lights and turn them ON from 0 to 8 one by one while keeping each LED ON.

Projects in this video using 74HC595

In Project 3: Two digits dispaly Now we learn how a single digit display works. Please use the provided code below.

Timing of chapters in the video

00:00 Start
2:19 Code-1 Walking light
4:02 code-1: demonstration
4:49 connecting seven segment to walking light code
6:19 Code-2 single digit display
8:13 code-2: wiring
12:20 code-2: code explained
14:35 code-2: demo
15:28 code-2: two digits wiring (main wiring)
24:25 code-3: two digits Seven Segment display using 74HC595 code
29:06 How to digits display works
31:47 Code-4: Up to 8 digits Seven Segment display using 74HC595
36:16 All digits code explained
50:43 All digits demo
55:38 two display in parallel
56:30 Common Anode/Common Cathode test
57:32 Code-5: Adjusting delay with potentiometer
1:00:42 Code-6: Pot voltage
1:03:36 driving display with transistor
1:04:01 wiring explained
1:05:29 demo: transistor driver

 /*
This code is to driver two Digits Seven Segment display using two pices of 74HC595
Watch full video instruction on YouTube https://youtu.be/xhPXovgFhso
written and explained by Ahmad Shamshiri on https://youtube.com/@robojax

*/
int CLOCK_SHCP_PIN11 = 12;//SHcp pin of 74HC595 
int LATCH_STCP_PIN12 = 11;//STcp pin of 74HC595 
int DATA_DS_PIN14 = 10;//ds pin of 74HC595 

#define DIGITS 2



byte segmentsBits[] =   {B00111111, //0
                   B00000110, //1
                   B01011011, //2
                   B01001111, //3
                   B01100110, //4
                   B01101101, //5
                   B01111101, //6
                   B00000111, //7
                   B01111111, //8
                   B01101111  //9
                  };

int digit1, digit2, digit3, digit4;

void setup() {
  Serial.begin(9600);
  Serial.println("Code 2: 74HC595 2 digit display driver");
  pinMode(CLOCK_SHCP_PIN11, OUTPUT);
  pinMode(LATCH_STCP_PIN12, OUTPUT);
  pinMode(DATA_DS_PIN14, OUTPUT);

   digitalWrite(CLOCK_SHCP_PIN11, LOW);
   digitalWrite(LATCH_STCP_PIN12, LOW);
   digitalWrite(DATA_DS_PIN14, LOW);

}

void loop() {
  long number = 18;
    digit2=number % 10 ;//18 gets 8
    digit1=(number / 10) % 10 ;//18 gets 1
    int digitBits =B11111110;
      digitalWrite(LATCH_STCP_PIN12, LOW);
      shiftOut(DATA_DS_PIN14, CLOCK_SHCP_PIN11, MSBFIRST, digitBits); 
      shiftOut(DATA_DS_PIN14, CLOCK_SHCP_PIN11, MSBFIRST, segmentsBits[ digit1]);
      digitalWrite(LATCH_STCP_PIN12, HIGH);    
     // Serial.print("Showing: ");Serial.println(digit1);
      delay(1);

      digitBits =B11111101;
      digitalWrite(LATCH_STCP_PIN12, LOW);
      shiftOut(DATA_DS_PIN14, CLOCK_SHCP_PIN11, MSBFIRST, digitBits); 
      shiftOut(DATA_DS_PIN14, CLOCK_SHCP_PIN11, MSBFIRST, segmentsBits[ digit2]);
      digitalWrite(LATCH_STCP_PIN12, HIGH); 
      //Serial.print("Showing: ");Serial.println(digit2);               
      delay(1);



}