Devices & Components
Arduino Nano
7 Segment LED Display, InfoVue
Shift Register- Parallel to Serial
Software & Tools
Arduino IDE
Project description
Code
Connect two 7 segment displays to show count from 0 to 99
arduino
Two shift registers are daisy chained . When one is overflown it pushes bits to teh other one
1int DS_pin = 4; 2int STCP_pin =3; 3int SHCP_pin = 2 ; 4 5int dec_digits [10] {1,79,18,6,76,36,32,15,0,4}; 6 7 8void setup() { 9 10 pinMode(DS_pin, OUTPUT); 11 pinMode(STCP_pin, OUTPUT); 12 pinMode(SHCP_pin, OUTPUT); 13} 14 15 16void loop() { 17 18 19for (int j=0;j<10;j++){ 20for (int i=0;i<10;i++){ 21 digitalWrite(STCP_pin,LOW); 22 shiftOut(DS_pin, SHCP_pin, LSBFIRST,dec_digits[i]); 23 shiftOut(DS_pin, SHCP_pin, LSBFIRST,dec_digits[j]); 24 digitalWrite(STCP_pin, HIGH); 25 delay(300); 26} 27} 28}
Conreol 7 segment display with Arduino and Shift Register to display digit sequence 0-9
arduino
1int DS1_pin = 4; 2int STCP1_pin =3; 3int SHCP1_pin = 2 ; 4 5int digits [10][8]{ 6 {0,1,1,1,1,1,1,0}, // digit 0 7 {0,0,1,1,0,0,0,0}, // digit 1 8 {0,1,1,0,1,1,0,1}, // digit 2 9 {0,1,1,1,1,0,0,1}, // digit 3 10 {0,0,1,1,0,0,1,1}, // digit 4 11 {0,1,0,1,1,0,1,1}, // digit 5 12 {0,1,0,1,1,1,1,1}, // digit 6 13 {0,1,1,1,0,0,0,0}, // digit 7 14 {0,1,1,1,1,1,1,1}, // digit 8 15 {0,1,1,1,1,0,1,1} // digit 9 16}; 17 18 19void display_digit(int d){ 20 if (digits[d][0]==1) digitalWrite(7, LOW); else digitalWrite(7, HIGH); //A 21 if (digits[d][1]==1) digitalWrite(8, LOW); else digitalWrite(8, HIGH); //B 22 if (digits[d][2]==1) digitalWrite(9, LOW); else digitalWrite(9, HIGH); //C 23 if (digits[d][3]==1) digitalWrite(2, LOW); else digitalWrite(2, HIGH); //D 24 if (digits[d][4]==1) digitalWrite(3, LOW); else digitalWrite(3, HIGH); //E 25 if (digits[d][5]==1) digitalWrite(5, LOW); else digitalWrite(5, HIGH); //F 26 if (digits[d][6]==1) digitalWrite(4, LOW); else digitalWrite(4, HIGH); //G 27} 28 29void DisplayDigit(int Digit) 30{ 31 digitalWrite(STCP1_pin,LOW); 32 for (int i = 7; i>=0; i--) 33 { 34 digitalWrite(SHCP1_pin,LOW); 35 if (digits[Digit][i]==1) digitalWrite(DS1_pin, LOW); 36 if (digits[Digit][i]==0) digitalWrite(DS1_pin, HIGH); 37 digitalWrite(SHCP1_pin,HIGH); 38 } 39 digitalWrite(STCP1_pin, HIGH); 40} 41 42 43void setup() { 44 pinMode(DS1_pin, OUTPUT); 45 pinMode(STCP1_pin, OUTPUT); 46 pinMode(SHCP1_pin, OUTPUT); 47} 48 49void loop() { 50for (int i=0;i<10;i++){ 51 DisplayDigit(i); 52 delay(300); 53} 54}
Control 7 display with Arduino and Shift Register-display digit sequence 0-9 using SHIFTOUT function
arduino
1int DS_pin = 4; 2int STCP_pin =3; 3int SHCP_pin = 2 ; 4 5int dec_digits [10] {1,79,18,6,76,36,32,15,0,4}; 6 7void setup() { 8 9 pinMode(DS_pin, OUTPUT); 10 pinMode(STCP_pin, OUTPUT); 11 pinMode(SHCP_pin, OUTPUT); 12} 13 14 15void loop() { 16 17for (int i=0;i<10;i++){ 18 digitalWrite(STCP_pin,LOW); 19 shiftOut(DS_pin, SHCP_pin, LSBFIRST,dec_digits[i]); 20 digitalWrite(STCP_pin, HIGH); 21 delay(300); 22 23} 24}
Conreol 7 segment display with Arduino and Shift Register to display digit sequence 0-9
arduino
1int DS1_pin = 4; 2int STCP1_pin =3; 3int SHCP1_pin = 2 ; 4 5int digits [10][8]{ 6 {0,1,1,1,1,1,1,0}, // digit 0 7 {0,0,1,1,0,0,0,0}, // digit 1 8 {0,1,1,0,1,1,0,1}, // digit 2 9 {0,1,1,1,1,0,0,1}, // digit 3 10 {0,0,1,1,0,0,1,1}, // digit 4 11 {0,1,0,1,1,0,1,1}, // digit 5 12 {0,1,0,1,1,1,1,1}, // digit 6 13 {0,1,1,1,0,0,0,0}, // digit 7 14 {0,1,1,1,1,1,1,1}, // digit 8 15 {0,1,1,1,1,0,1,1} // digit 9 16}; 17 18 19void display_digit(int d){ 20 if (digits[d][0]==1) digitalWrite(7, LOW); else digitalWrite(7, HIGH); //A 21 if (digits[d][1]==1) digitalWrite(8, LOW); else digitalWrite(8, HIGH); //B 22 if (digits[d][2]==1) digitalWrite(9, LOW); else digitalWrite(9, HIGH); //C 23 if (digits[d][3]==1) digitalWrite(2, LOW); else digitalWrite(2, HIGH); //D 24 if (digits[d][4]==1) digitalWrite(3, LOW); else digitalWrite(3, HIGH); //E 25 if (digits[d][5]==1) digitalWrite(5, LOW); else digitalWrite(5, HIGH); //F 26 if (digits[d][6]==1) digitalWrite(4, LOW); else digitalWrite(4, HIGH); //G 27} 28 29void DisplayDigit(int Digit) 30{ 31 digitalWrite(STCP1_pin,LOW); 32 for (int i = 7; i>=0; i--) 33 { 34 digitalWrite(SHCP1_pin,LOW); 35 if (digits[Digit][i]==1) digitalWrite(DS1_pin, LOW); 36 if (digits[Digit][i]==0) digitalWrite(DS1_pin, HIGH); 37 digitalWrite(SHCP1_pin,HIGH); 38 } 39 digitalWrite(STCP1_pin, HIGH); 40} 41 42 43void setup() { 44 pinMode(DS1_pin, OUTPUT); 45 pinMode(STCP1_pin, OUTPUT); 46 pinMode(SHCP1_pin, OUTPUT); 47} 48 49void loop() { 50for (int i=0;i<10;i++){ 51 DisplayDigit(i); 52 delay(300); 53} 54}
Connect two 7 segment displays to show count from 0 to 99
arduino
Two shift registers are daisy chained . When one is overflown it pushes bits to teh other one
1int DS_pin = 4; 2int STCP_pin =3; 3int SHCP_pin = 2 ; 4 5int dec_digits 6 [10] {1,79,18,6,76,36,32,15,0,4}; 7 8 9void setup() { 10 11 pinMode(DS_pin, 12 OUTPUT); 13 pinMode(STCP_pin, OUTPUT); 14 pinMode(SHCP_pin, OUTPUT); 15} 16 17 18void 19 loop() { 20 21 22for (int j=0;j<10;j++){ 23for (int i=0;i<10;i++){ 24 25 digitalWrite(STCP_pin,LOW); 26 shiftOut(DS_pin, SHCP_pin, LSBFIRST,dec_digits[i]); 27 28 shiftOut(DS_pin, SHCP_pin, LSBFIRST,dec_digits[j]); 29 digitalWrite(STCP_pin, 30 HIGH); 31 delay(300); 32} 33} 34}
Control 7 display with Arduino and Shift Register-display digit sequence 0-9 using SHIFTOUT function
arduino
1int DS_pin = 4; 2int STCP_pin =3; 3int SHCP_pin = 2 ; 4 5int dec_digits [10] {1,79,18,6,76,36,32,15,0,4}; 6 7void setup() { 8 9 pinMode(DS_pin, OUTPUT); 10 pinMode(STCP_pin, OUTPUT); 11 pinMode(SHCP_pin, OUTPUT); 12} 13 14 15void loop() { 16 17for (int i=0;i<10;i++){ 18 digitalWrite(STCP_pin,LOW); 19 shiftOut(DS_pin, SHCP_pin, LSBFIRST,dec_digits[i]); 20 digitalWrite(STCP_pin, HIGH); 21 delay(300); 22 23} 24}
Downloadable files
7 segment display connected to shift registor and arduino
7 segment display connected to shift registor and arduino

Comments
Only logged in users can leave comments