In this project, we will show how you can display any character that is capable of being displayed on a 7 segment LED display.
All numeral characters can be displayed on a 7 segment display. In fact, in the article, How to Drive a 7 Segment LED Display with an Arduino, we programmed the circuit so that it displayednumerals 0-9 a second apart from each other.
In this project, we simply go over (again) how you can display any character(which can be displayed) on a 7 segment LED display.
To do this, let us first go over the internal makeup of a 7 segment LED display. The display is a device that is made up of 8 individual LEDs, including the decimal point at the bottom. Depending on which LED is lit decides what type of character will be shown.
As an example, look at the numbers shown below.
You can easily see which LEDs are lit decides the different numerals shown.
Using this device, we can display all numerals and many alphabetical characters and many more types of symbols. The 7 segment LED is really a versatile display device.
For this project, we will show how to create all the alphabetical characterswhich can be shown at a 7 segment LED dsiplay. This includes alphabet characters, A, b, C, c, d, E, F, H, h, L, l, O, o, P, S. These are pretty much the only characters of the alphabet which can be produced.
The output is produced by turning on combinations of segments that represent these various alphabetical characters.
Components Needed
- Common Cathode 7 Segment LED Display
- Arduino
- 8 270Ω Resistors
- Jumper Wires
The 270Ω resistors attach to the 8 digital output pins connected to the 8 segments of the LED display. They limit current going to the individual LEDs, so that they don't get burnt out from too much power.
To understand how this program works, let's first look at the schematic makeup of a 7 segment LEDdisplay.
The LED display, again, is made up of 8 individual LEDs, as shown above. The LEDsgo in order of the alphabetical characters which you see. From first to last, the LEDs from 1-8 are a, b, c, d, e, f, g.
The decimal point would be the last pin.
To create an A, we would have to light LEDs, a,b,c,e,f,g. Thus to create it in code, it would be represented by B11101110.
The full list of all the alphabetical characters with their corresponding codewe can display on the segment display is shown in the table below.
AlphabeticalCharacter | Representationin Code |
A | B11101110 |
b | B00111110 |
C | B10011100 |
c | B00011010 |
d | B01111010 |
E | B10011110 |
F | B10001110 |
H | B01101110 |
h | B00101110 |
L | B00011100 |
l | B01100000 |
O | B11111100 |
o | B00111010 |
P | B11001110 |
S | B10110110 |
So now that you know how each numeral can be shown by deciding which LEDs to turn on, let's see how we will wire the 7 segment LED display to the arduino.
Before we can do that, we must know the pinout of the 7 segment LED display. In our circuit, we will use a common cathode LED display. This is a 7 segment LED display in which all grounds of the LEDs are tied together.
The pinout of the common cathode LED display is shown below.
Common Cathode 7 Segment LED Display Pinout
These are the 2 pinout diagrams of the common cathode 7 segment LED display. Some have the pins on the sides (laterally). Others have the pins on the top and bottom. Thus, we show both pinout diagrams.
You will need this to know how to hook up the display to the arduino board.
Note- Even though many different types of 7 segment LED displays follow the above schematics, it is not guaranteed. The best way to know the connections is to obtain the datasheet for the LED display in use or to buzz it out by connecting power to each of the pins to see which lights up. If you don't get the connections right, the circuit will not producethe output of showing numerals 0-9. So it is very important to know which pins are which.
Circuit Schematic
The schematic for the 7 segment LED display connected to the arduino is shown below.
The connections are fairly simple. We utilize 8 digital pins of the arduino and the ground terminal.
The written form of the above schematic is shown below for the pin connections.
7Segment LED Display Pin | Connectsto Arduino Digital Terminal ... |
a | 2 |
b | 3 |
c | 4 |
d | 6 |
e | 7 |
f | 9 |
g | 8 |
DP | 5 |
Note that the common cathode terminals connect to the ground terminal of the arduino.
Code
const byte alphabet[16]= {
B11101110,
B00111110,
B10011100,
B00011010,
B01111010,
B10011110,
B10001110,
B01101110,
B00101110,
B00011100,
B01100000,
B11111100,
B00111010,
B11001110,
B10110110,
B00000000,
};
const int segmentPins[8]= { 5,8,9,7,6,4,3,2 };
void setup()
{
for (int i=0; i < 8; i++)
{
pinMode(segmentPins[i], OUTPUT);
}
}
void loop()
{
for (int i=0; i <=15; i++)
{
showDigit(i);
delay(1000);
}
delay(2000);
}
void showDigit (int number)
{
boolean isBitSet;
for (int segment=0; segment < 15; segment++)
{
isBitSet= bitRead(alphabet[number], segment);
digitalWrite(segmentPins[segment], isBitSet);
}
}
The first block of code creates a byte named alphabet which store all the code needed to create the numbers 0-9 on the LED with a blank at the end. The 11 characters are 0-9 and a blank.
The second block of code creates a constant integer called segmentPins which assigns the pins on the arduino that the 7 segment display is hooked up to.
The third block of code declares all pins on the arduino that the 7 segment LED display is hooked up to as output.
The fourth block of code calls a function called showDigit() which is defined in the next block of code. This function shows the alphabetical characters on the 7 segment LED display. In between each numeral, there is a 1 second delay, as shown in the line delay(1000). At the end of the loop when all characters have been shown, there is a 2-second delay (delay(2000)).
The fifth block of code defines the function showDigit(). This displays the numbers defined in the constant byte alphabet.
To see this circuit in action, watch the following video below.
Related Resources
How to Connect and Read a Keypad with an Arduino
How to Display Text on an HD44780 LCD Using an Arduino
How to Build a USB-powered Device
How to Build a DC Motor Circuit
How to Build a Speaker Circuit with Adjustable Volume
How to Build a Simple Microphone circuit
How to Build a Touch Sensor Circuit
HTML Comment Box is loading comments...