In this blog, we will be discussing interfacing 7 Segment LED display with Arduino Uno.
Basically, 7 segments LED display is available in two types:
1. Common Anode Type
2. Common Cathode Type
In this blog, we will be discussing interfacing common cathode type, but will provide code for both the cases.
Also, 7 Segment LED can be interfaced in two ways...
1. Without BCD to Seven Segment Encoder IC
(...It uses 7 digital pins of Arduino)
2. With BCD to Seven Segment Encoder IC
(...It uses 4 digital pins of Arduino)
In this blog, we will be discussing interfacing seven-segment LED without any IC.
# Module Data Sheet:
Peak Current: 70mA
Current Consumption: 300mA/Segment
Colors: Red, Blue, Yellow, Green, and White
# Pin-Out:
CC = 0V ... GND
[a,b,c,d,e,f,g,DP] = indiviual leds
# Arduino Connection:
# Working:
The working is simple. There are 8 individual LEDs in 7 Segment LED display. With the ON and OFF of these LEDs various no. (0 to 9) can be shown on the display.
As discussed earlier there are two types of 7 Segment LED display:
1. Common Cathode Type
In this type, a HIGH signal from Arduino to [a,b,...g] pins and a COMMON GROUND is provided to the display.
2. Common Anode Type
In this type, a LOW signal from Arduino to [a,b,...g] pins and a COMMON Vcc is provided to the display.
To get the appropriate pattern of LEDs to display a Decimal no. we need to create a truth table for the same.
When an intermediate IC is used, it directly converts input binary to the required output with the help of logic gates.
If no IC is used pattern has to be generated with the help of programming.
const int ZERO = 0x7E;
const int ONE = 0x30;
const int TWO = 0x6D;
const int THREE = 0x79;
const int FOUR = 0x33;
const int FIVE = 0x5B;
const int SIX = 0x5F;
const int SEVEN = 0x70;
const int EIGHT = 0x7F;
const int NINE = 0x7B;
//pins initialization
int pin[] = {2,3,4,5,6,7,8};
void setup(){
Serial.begin(9600);
//setting all pins as Output pins
for(int i=0;i<7;i++)
{
pinMode(pin[i],OUTPUT);
}
}
void loop(){
for(int i=0;i<=9;i++)
{
switch(i)
{
case 0:
display_it(ZERO);
break;
case 1:
display_it(ONE);
break;
case 2:
display_it(TWO);
break;
case 3:
display_it(THREE);
break;
case 4:
display_it(FOUR);
break;
case 5:
display_it(FIVE);
break;
case 6:
display_it(SIX);
break;
case 7:
display_it(SEVEN);
break;
case 8:
display_it(EIGHT);
break;
case 9:
display_it(NINE);
break;
default :
Serial.println("something went wrong");
}
}
}
void display_it(const int value)
{
for(int i=2,j=0;i<=8;i++,j++)
{
digitalWrite(i,bitRead(value,j));
}
delay(1000);
}
# Applications:
1. Display device for Counters and Timers
To download the code click here
To view the circuit and simulation click here
Comments
Post a Comment