Skip to main content

Seven Segment Display Interfacing with Arduino


In this tutorial, we will learn how to interface a 7 SEGMENT DISPLAY with Arduino. A 7 SEGMENT DISPLAY consists of 8 LEDs and 10 pins,2 common pins are shorted and supplied with 5 volts from Arduino through a resistor and other 8 pins are connected to digital and analog pins.

7 Segment Display can act as a substitute for LCDs if we want to display numbers.

Shown below is the internal architecture of a 7 segment display.

Now let’s interface the 7 SEGMENT DISPLAY.
Components required
  • Arduino Uno                       1No.
  • 7 Segment Display              1No.
  • Resistors                             1No.            100 ohms            
  • Connecting Wires
  • Breadboard
There are two types of LED 7-segment display
  • The common cathode (CC) 
  • Common anode (CA)
In CC type the cathode of all the LEDs is connected together and similarly in CA type.
In CC type we have to ground the common cathode pin and power up segments to illuminate it, the reverse happens for CA types. Here we have to power up the common anode pin and provide ground to segments according to our requirements of illuminations.

The below code can be used to display digits from Zero to Nine.

void setup() 
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
}

void loop() 
{ // ZERO
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(1000);
// Zero off
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(1000); // ONE
digitalWrite(4,LOW);
digitalWrite(6,LOW);
delay(1000);
//1 off
digitalWrite(4,HIGH);
digitalWrite(6,HIGH);
delay(1000);
//2 0N
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(1000);
//2 0ff
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(1000);
//3 0n
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
delay(1000);
//3 0ff
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(5,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
delay(1000);
//4 on
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(8,LOW);
delay(1000);
//4 0ff
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
delay(1000);
//5 0n
digitalWrite(2,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
delay(1000);
//5 off
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
delay(1000);
//6 0n
digitalWrite(2,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
delay(1000);
//6 off
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
delay(1000);
//7 0n
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(8,LOW);
delay(1000);
//7 off
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(8,HIGH);
delay(1000);
//8 on
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
delay(1000);
//8 off
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
delay(1000);
//9 0n
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(8,LOW);
delay(1000);
//9 0ff
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
delay(1000);
}
Video


Now try this out with multiple 7 segment displays.
  • You can also use IC 7446 which is a BCD to 7 segment decoder by which you can display all your digits with the combination of four inputs.Connect the IC as shown below.
      
                                                             Thinking?

Join our hands-on training courses.
To know more visit us at http://www.sudolearn.com/

Comments

Popular posts from this blog

IoT Based LPG Gas Monitoring

MQ-5 Module(Overview ) In this tutorial, will learn, how to interface MQ-5 Module with Node Mcu(ESP8266). The Grove - Gas Sensor(MQ5) module is useful for gas leakage detection (in home and industry). It is suitable for detecting H2, LPG, CH4, CO, Alcohol. Due to its high sensitivity and fast response time, measurements can be taken as soon as possible. The sensitivity of the sensor can be adjusted by using the potentiometer. MQ-5 Module(backside) Components Required NodeMcu(ESP8266)  MQ-5 LPG SENSOR Module  Few male to female connecting wires  Breadboard  Follow the image below for circuit connection reference:- In this circuit, we have connected the A0 pin of the MQ-5 to the A0 pin of the NodeMcu module and D0 pin remain disconnected. After making the circuit dump the code given below:- // Karkhana Report // Analyse the volume of the gas using thingspeak.com // Hardware: NodeMCU,MQ-5 #include <ESP8266WiFi.h> String apiKey = "Ent...

Servo Motor Interfacing with Arduino

In this tutorial, we will learn how to interface a servo motor using Arduino UNO. The motor inside the setup of a servo is attached by gears to the control wheel. When the motor rotates, the potentiometer’s resistance changes hence the control circuit can precisely regulate how much movement there is and in which direction. The motor’s speed is proportional to the difference between its actual position and desired position. When the shaft is near the desired position it turns slowly else fast. This is called proportional control. They are controlled by sending PWM (pulse width modulated) signals through the control wire. They are available in many sizes and are of three types Positional rotation  Continuous rotation  Linear The most common type is the positional rotational one. So now we are familiar with the motor let us interface it Components Required: Servo motor 1No Arduino UNO 1No Few connecting wires Breadboard Follow the video belo...

Interfacing of Push Button With ATmega16

In this tutorial, we will learn how to interface a switch(push button) with ATMEGA16 using AVR studio. In the previous video, we learnt how to interface LEDs with ATMEGA16 using AVR studio. The push-button is a component that connects two points in a circuit when you press it. The example turns on an LED when you press the button. Here we have connected two push button to PORT C in  PC0 & PC1. And for LEDs connection please refer my previous blog. Components Required:- AVR Controller(Atmega16) LEDs Push Button Connecting Wires USBASP Programmer Dump the following code after connection  and select chip ATMEGA 16. #include<avr/io.h> #include<util/delay.h> void main()  {    DDRB=0b11111111;    int S1;    int S2;      while(1)    {     S1=PINC&0b00000001;     S2=PINC&0b00000010;     if(S1==0b00000001)     { ...