Building a text display using Light Emitting Diodes (LEDs) is quite interesting. There are different configurations which these LEDs could be arranged to form a matrix. It could be a 5 x 7 matrix (i.e. 5 columns by 7 rows per character) or an 8 x 8 matrix or a 16 x 16 matrix etc. depending on how detailed or how large you prefer each character to be (pixel density).
For the initial testing, we built a 5 by 7 display matrix by simply laying them on a vero board. All anodes were connected vertically and all the cathodes horizontally. Below is a circuit schematic showing the 5 x 7 configuration.
Figure 1: Showing a 5 x 7 configuration on Proteus design software
The LEDs were placed and soldered onto a Vero board. Later on, it was increased to an 8 x 8 single character display.
Figure 2 (a) and (b): Showing the LED 8 x 8 Matrix on a Vero board.
Next, the LEDs have to display lights individually which sum up to make up a particular character of the alphabet or number in a pixelated format.
Understanding the logic
Figure 3: Circuit schematic of an 8 x 8 LED matrix
All the anodes are connected horizontally to form the rows (R1 to R8) while the cathodes are connected vertically to form the columns (C1 to C8). The reason is to allow for individual addressing of each LED while minimizing the number of input/output pins from what would have summed up to 128 (i.e. 2 pins from each of the 64 LED’s) to just 16 pins (i.e. 8 rows and 8 columns). Each LED is addressed by its row and column number. If R1 is pulled high and C1 is pulled low, it would turn on the topmost left LED. That same logic applies to the other LEDs.
Characters are displayed by fast scanning of either rows or columns. For instance, if we want to display the alphabet A using a 5x7 font as shown in figure 4.
Figure 4: Displaying the alphabet A on a 5 x 7 display matrix.
Suppose, we want to display the alphabet A. We will first select the column C1 (which means C1 is pulled low in this case), and deselect other columns by blocking their ground paths (one way of doing that is by pulling C2 through C5 pins to logic high). Now, the first column is active, and you need to turn on the LEDs in the rows R2 through R7 of this column, which can be done by applying forward bias voltages to these rows. Next, select the column C2 (and deselect all other columns), and apply forward bias to R1 and R5, and so on. Therefore, by scanning across the column quickly (> 100 times per second), and turning on the respective LEDs in each row of that column, the persistence of vision comes in to play, and we perceive the display image as still.
This rapid scanning is achievable using a decade counter (4017) or shift register (74HC595) and a microcontroller that performs the logic (e.g. Atmega328p).
Generally, LED displays are used to scroll text e.g. at the gas/filing station or to display images as well as videos but at a much higher pixel density for clarity.
In our next blog, we will look at the wiring of the 4017 and the programming of the Atmega328p to achieve the scanning effect.