Lesson 19 – 1 Digit 7 Segment Display

Setup

  1. Before you start working with any of the tutorials in this series please make sure you have completed the following tasks –
    1. Downloaded and installed the Arduino IDE.
    2. Are able to connect to the Arduino IDE from your computer
    3. Have been successful in uploading a simple (e.g. Blink LED’s) example programs (that comes with the Arduino IDE) onto your Arduino UNO board
  2. If you haven’t installed the Arduino IDE please head back to the first tutorial and make sure you’ve gone through each of the steps involved.
  3. Once you’ve sorted all of the above you are ready to move onto the next tutorial.

Tutorial

LED segment displays are common for displaying numerical information. It’s widely applied on displays of electromagnetic oven, full automatic washing machine, water temperature display, electronic clock, etc. It is necessary for us to learn how it works. LED segment display is a semiconductor light-emitting device. Its basic unit is a light-emitting diode (LED). LED segment display can be divided into 7-segment display and 8-segment display according to the number of segments. 8-segment display has one more LED unit ( for decimal point display) than 7-segment one.
In this experiment, we use a 8-segment display. According to the wiring method of LED units, LED segment displays can be divided into common anode display and common cathode display. Common anode display refers to the one that combine all the anodes of LED units into one common anode (COM).

For the common anode display, connect the common anode (COM) to +5V. When the cathode level of a certain segment is low, the segment is on; when the cathode level of a certain segment is high, the segment is off.  For the common cathode display, connect the common cathode (COM) to GND. When the anode level of a certain segment is high, the segment is on; when the anode level of a certain segment is low, the segment is off.

Each segment of the display consists of an LED. So when you use it, you also need to use a current-limiting resistor. Otherwise, LED will be burnt out.
In this experiment, we use a common cathode display. As we mentioned above, for common cathode display, connect the common cathode (COM) to GND. When the anode level of a certain segment is high, the segment is on; when the anode level of a certain segment is low, the segment is off.

Here’s the hardware you will need for the tutorials –

  1. Arduino Board x1
  2. 1-digit 8-segment display *1
  3. 220Ω resistor *8
  4. Breadboard *1
  5. UNO board *1
  6. USB cable *1
  7. Breadboard jumper wire * 12

You will find fritzing diagrams below outlining circuit connections for both the Arduino Uno and the Arduino Mega 2560.

Here’s what your project should look like once it’s finished.

There are seven segments for numerical display, one for decimal point display. Corresponding segments will be turned on when displaying certain numbers. For example, when displaying number 1, b and c segments will be turned on. We compile a subprogram for each number, and compile the main program to display one number every 2 seconds, cycling display number 0 ~ 9. The displaying time for each number is subject to the delay time, the longer the delay time, the longer the displaying time.

Let’s have a look at the code for the tutorial.


// set the IO pin for each segment
int a=7;// set digital pin 7 for segment a
int b=6;// set digital pin 6 for segment b
int c=5;// set digital pin 5 for segment c
int d=10;// set digital pin 10 for segment d
int e=11;// set digital pin 11 for segment e
int f=8;// set digital pin 8 for segment f
int g=9;// set digital pin 9 for segment g
int dp=4;// set digital pin 4 for segment dp
void digital_0(void) // display number 5
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
}
void digital_1(void) // display number 1
{
unsigned char j;
digitalWrite(c,HIGH);// set level as “high” for pin 5, turn on segment c
digitalWrite(b,HIGH);// turn on segment b
for(j=7;j<=11;j++)// turn off other segments
digitalWrite(j,LOW);
digitalWrite(dp,LOW);// turn off segment dp
}
void digital_2(void) // display number 2
{
unsigned char j;
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
for(j=9;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
}
void digital_3(void) // display number 3
{digitalWrite(g,HIGH);
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(dp,LOW);
digitalWrite(f,LOW);
digitalWrite(e,LOW);
}
void digital_4(void) // display number 4
{digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
digitalWrite(a,LOW);
digitalWrite(e,LOW);
digitalWrite(d,LOW);
}
void digital_5(void) // display number 5
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b, LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e, LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
}
void digital_6(void) // display number 6
{
unsigned char j;
for(j=7;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(c,HIGH);
digitalWrite(dp,LOW);
digitalWrite(b,LOW);
}
void digital_7(void) // display number 7
{
unsigned char j;
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
for(j=8;j<=11;j++)
digitalWrite(j,LOW);
}
void digital_8(void) // display number 8
{
unsigned char j;
for(j=5;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
}
void digital_9(void) // display number 5
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e, LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
}
void setup()
{
int i;// set variable
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);// set pin 4-11as “output”
}
void loop()
{
while(1)
{
digital_0();// display number 0
delay(1000);// wait for 1s
digital_1();// display number 1
delay(1000);// wait for 1s
digital_2();// display number 2
delay(1000); // wait for 1s
digital_3();// display number 3
delay(1000); // wait for 1s
digital_4();// display number 4
delay(1000); // wait for 1s
digital_5();// display number 5
delay(1000); // wait for 1s
digital_6();// display number 6
delay(1000); // wait for 1s
digital_7();// display number 7
delay(1000); // wait for 1s
digital_8();// display number 8
delay(1000); // wait for 1s
digital_9();// display number 9
delay(1000); // wait for 1s
}
}

LED segment display will display the number from 0 to 9.


Prerequisites

This development track requires an investment a bit of hardware. See below for details –

  1. Arduino IDE –
    1. You will need to download and install the Arduino development IDE.
    2. The approach to installation, configuration, setup of the Arduino IDE is covered in our tutorials.
  2. Arduino Uno, Sensors, etc. –
    1. You will need to purchase the Super Learning Kit for Arduino from OzToyLib.
    2. The Arduino Advent kit has all the sensors you need to perform the tutorials covered in this development track.
    3. If you do not have an Arduino Uno or Arduino Mega 2560 you might want to head over to Arduino boards and pick one up now.

The Super Learning Kit for the Arduino kit has all the sensors you need to perform the tutorials covered in this development track.


About the Super Learning Kit for Arduino

The Super Learning Starter Kit for Arduino comes packed with ~35+ different electronic bits (Sensors, LEDs, switches, LCD, servo, etc.) and can be purchased with either the Keyestudio UNO R3 or the Keyestudio Mega 2560 board. The Keyestudio Arduino boards can be used to interface with the different electronic bits i.e. sensors, LED’s, switches, servos, etc. included in the starter kit. The starter kit for the Keyestudio Uno R3 offers a great opportunity to explore the world of electronics using the Arduino Development Platform. Interact with the real world through the various sensors, create innovative projects, learn how to program the micro:bit to read data from the sensors and perform certain actions. The starter kit for the Arduino is a great way to dive into the awesome world of electronics and get started with your own STEM (Science, Technology, Engineering, Math) learning journey.

The Arduino advanced study kit walks you through the basics of using the Arduino in a hands-on way. You’ll learn the fundamentals of electronics and working on the Arduino through building several creative projects. The kit includes a selection of the most common and useful electronic components with a book of 32 projects. Starting the basics of electronics, to more complex projects, the kit will get you interacting with the physical world using sensor and actuators. Along with the kit you get access to detailed tutorials and wiring diagrams.

You can purchase the Super Learning Kit for Arduino from OzToyLib.


About the Arduino UNO

The Arduino UNO is the most used and documented board of the whole Arduino family and very easy to setup, play with. The Arduino UNO is a microcontroller board based on the ATmega328 . The Arduino UNO has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz ceramic resonator, a USB connection, a power jack, an ICSP header, and a reset button. Here’s a listing of the some of the features of the Arduino UNO –

  1. Microcontroller: ATmega328
  2. Operating Voltage: 5V
  3. Input Voltage (recommended): 7-12V
  4. Input Voltage (limits): 6-20V
  5. Digital I/O Pins: 14 (of which 6 provide PWM output)
  6. Analog Input Pins: 6
  7. DC Current per I/O Pin: 40 mA
  8. DC Current for 3.3V Pin: 50 mA
  9. Flash Memory: 32 KB of which 0.5 KB used by bootloader
  10. SRAM: 2 KB (ATmega328)
  11. EEPROM: 1 KB (ATmega328)
  12. Clock Speed: 16 MHz

Arduino is an open-source, prototyping platform and its simplicity makes it ideal for hobbyists to use as well as professionals. The Arduino UNO contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started. The Arduino UNO differs from all preceding boards in that it does not use the FTDI USB-to-serial driver chip. Instead, it features the Atmega8U2 microcontroller chip programmed as a USB-to-serial converter. “Uno” means one in Italian and is named to mark the upcoming release of Arduino 1.0. The Arduino Uno and version 1.0 will be the reference versions of Arduno, moving forward. The Uno is the latest in a series of USB Arduino boards, and the reference model for the Arduino platform.

You can read more about the Arduino here – www.arduino.cc.

Questions