Scrolling text display


Scrolling text display (aka LedDisp) is a led matrix display that shows text either from a computer or from the built-in memory. The display is controlled by an Atmel AVR-family microcontroller, AT 90S2313. See here for detailed description of the hardware operation.


  • Updated some obsolete code in the firmware. It now compiles with new versions of WinAVR.
  • Fixed an error in the layout image. In the previous version the wires TxD and RxD were swapped. I'm sorry if someone had trouble with this mistake.
  • Version 1.0.1 of the LedDisp firmware released. Optimized some code. Only minor changes.
  • Version 1.0.1 of the LedDisp software released.
  • Added some images of the prototype


    Features (firmware v.1.0):
    Note: Once you have constructed the device, you must write a font in its memory for the display to show anything meaningful. Both static and dynamic text modes use the internal font to transform the character codes to visible characters.


    - Schematics, PCB and component layout: - Firmware (for AT90S2313):
    - Extra:



    Features (v.1.0.1): (Here are listed the changes from the previous version)


    - LedDisp for Windows binary: - LedDisp for Windows source code:

    Known bugs:
    If you have found any bad behavior in this program, please let me know.

    Hardware operation


    The display has seven rows containing 50 LEDs each. The display controller consists of seven transistors and seven 8-bit shift registers which all are controlled by the MCU (AT90S2313). Each transistor drives one row selecting whether it’s enabled or not. The shift registers are chained together, so their serial input is converted to parallel output of 56 bits, 50 of which is used to drive the columns. The last six bits remain unused.

    The MCU updates the screen a single row at a time. While displaying one row, it feeds the contents of the next row to the shift registers. After that it disables the current row, enables the next one and commands the shift registers to show their data on the outputs. This cycle is performed hundreds of times in a second forming the whole image on the display.

    The device has an EEPROM memory of 2 kilobytes (24c16) that is used to store the static text and the font. The contents of the memory is read and written by the MCU that either follows the commands received via the computer interface or works independently reading the static text and showing it on the display over and over again.

    Computer interface

    The computer serial interface uses the normal UART (with 9600bps, 8 bit, 1 stop bit, no parity) to communicate with the computer software. The device keeps sending the state of its receive buffer to the computer: each byte sent tells how many bytes of free space there is in the buffer. If the device receives a byte from the computer, it checks whether it is a command byte. If not, the byte is considered to be a text character and the corresponding character image in the EEPROM will be shown on the display. If a command is recognized, the MCU will act as asked. In a case of serial buffer overflow, the extra bytes are ignored.

    Updated: [15.11.2005]

    Tuomas Tuononen
    t u o m a s . t u o n o n e n @ g m a i l . c o m