This LED Dot Matrix Scrolling Display uses three 8x8 LED matrices connected together to scroll a message. The message can be customized and is displayed in three different colors and scrolled at variable speeds based on the software programming.
Device Demo |
This project was inspired by a similar one described here, which is based on a smaller and monochromatic 8x20 display. Our 8x24 points device is tricolor, consists of three 8x8 LED matrices, an LED driver associated with each matrix, 8 MOSFETs, the ATTiny44 microcontroller, a DC/DC converter, and is powered by an AC adapter.
Schematic | Front view | Back view | ||
Each matrix dot is capable of displaying 2 colors: red and green. If both LEDs are on, the resulting color is close to orange, so the matrix is actually 3-color. Each matrix is connected to a 16-bit LED driver (TLC5925). This driver controls the outputs to each of the 8 columns of its associated LED matrix, 2 pins per column, 1 for each color. The 620 Ohm resistors determine the current sinked by each column, which is about 35 mA per LED. Each driver also contains a shift register serially connected to the next driver (port OE of the first driver goes to port LE of the next driver). Loading the data is done by the microcontroller via SPY interface.
The rows of the LED matrices are sourced by 8 MOSFETs (FDC6312P), one per row. When the MOSFET gate is grounded, the corresponding row is displayed. This way we achieved sufficient display brightness. Only one row is displayed at a time for about 0.5 msec, so they seem to be on all the time. The display refresh frequency is thus about 250 Hz, which eliminates any flickering.
The device is powered by a 9V AC adapter. The AC voltage is rectified by the diode bridge and filtered out by the 2200 μF capacitor. The obtained DC voltage is converted into 5 VDC by the DC/DC converter. The average current consumption from a 9 VDC supply by displaying the above sentence is about 450 mA. Due to a high efficiency of the converter no its element is noticeably warm. This also concerns the display drivers.
This display uses assembly language programming. The message to be used and font of the message are programmed into the instruction memory. Each character is displayed by 8 8-bit binary values, one for each row. The last three bits of each font character are 0, with one of them being a space between characters and the other two are ignored by the program. Because the display is two-color, the program must convert the 6 font matrix bits into 12 bits carrying the color information. Zeros are converted to double zeros because that LED should be turned off, while ones are converted based on the color being displayed (11 displays orange, 10 displays green, 01 displays red). The program works by repeatedly rotating through the rows 1 by 1 flickering them until all 8 rows have been lit up. It continues to do this until it is time to scroll the display. Then the data is shifted over one column, with the last column leaving the display and a new column entering the display. It then refreshes the rows over and over again until the next time to scroll.
The program displays the current portion of the string by using a 5-character "window". Each character consists of 5x8 dots with an extra column for spacing. The display can contain up to 4 full characters at any one time, but if a portion of one character is being displayed, this means a portion of a fifth character will also be displayed. Therefore, the window looks at 5 characters at any one time by loading a character whenever a character drops off the display. When a character is loaded, the conversion from 6-bits to 12-bits as described above occurs. Two bits are sent to the first LED driver every shift. Each storage spot rotates its bits to the next, with the last driver dropping its last two bits. The display then goes back to displayed the characters row by row until another shift occurs. When the window reaches the end of the message and concludes, the color is changed and the program starts from the beginning.
If I had the ability to start this project over with the knowledge I had gained from creating this display, I would love to make it much larger. With 6 or more matrices, a much longer portion of a message could be displayed at one time. Also, more effects with the colors created by the LEDs would be implemented, such as multi-colored lettering or even a shimmering effect as the letter scrolls across the screen. With a three color LED matrix, all colors could be possible by fluctuating the voltage. Also, more characters in the font, such as special characters, lower-case and other symbols could be programmed into the code with a larger microcontroller. Finally, a user interface program with USB connection would allow anyone to choose a string and any effects they want to add and have the program change based on those options.
Last modified:Mon, Jan 23, 2023.