Summary of 80×32 LED matrix display using ATmega32 microcontroller
This article details the construction of an 80x32 pixel LED matrix display using ten SLM1608 units. The project utilizes an ATmega32 microcontroller and a Cirrus Logic CS8900 ethernet interface for high-speed, real-time graphics updates from a PC. It also features optional audio output via a speaker and infrared control through a TSOP1736 receiver. The entire design, including firmware and schematics, is open-source under the GPL license.
Parts used in the LEDMATRIX Display:
- SLM1608 (or SLM1606) LED matrix display units
- ATmega32 microcontroller
- Cirrus Logic CS8900 ethernet chip
- Procyon AVRlib software library
- Simple speaker
- TSOP1736 IR receiver
- TV remote control
- PC with Ethernet connection
- easyToWeb-CS8900-16bit PCB module
The LEDMATRIX interface
News: Now with lcd4linux driver
I recently purchased 10 SLM1608 (SLM1606) LED matrix display units from Ebay (you might also contact the seller directly at [email protected]). These are 16×16 LED matrix units with a green and a red LED per pixel allowing each pixel to be switched to either green, red, amber or off. The goal of this LEDMATRIX project was to build a 80×32 pixel display by arranging the displays in two rows with 5 displays each giving a total of 16*16*2*2*5 = 5120 LEDs to be controlled individually.
Fortunately these displays come with interated controllers and the data can be shifted into a single display using as few as 6 digital signals. By multiplexing some of the select signals all 10 displays can be controlled with a total of ten wires. Using a cheap ATmega32 microcontroller all ten displays can easily be controlled and updated in real time.
This kind of display is usually controlled via RS232. This has the disadvantage of being very slow and the display data is limited to simple text messages only with the microcontroller of the display doing the actual text drawing. Instead of doing it the same way i decided to use an ethernet interface for the LEDMATRIX display. Even the most simple ethernet interface i am using is fast enough to transfer graphics data in realtime from a PC to the display allowing to update the entire screen 50 times a second. The ethernet support of LEDMATRIX is based on the cirrus logic cs8900 chip which is e.g. supported by the free Procyon AVRlib which has been used for this project.
The LEDMATRIX additionally includes a simple speaker allowing to e.g. notify the user of a new message being displayed. Furthermore a TSOP1736 IR receiver can optionally be connected. This device receives and decodes the IR signals used by ordinary TV remote controls. By returning informtion about received IR signals to the controlling PC, the displays contents may e.g. be remotely changed using a simple spare IR remote control.
This whole project is open under the GPL. This means that you get full access to the firmware source code as well as to the schematics and the PC companion software.
Impressions
After startup the display shows the LEDMATRIX splash screen with the firmware version number and the current IP address.
Once the PC is accessing the display any data can be displayed like e.g. a long transparent scroll text with some static small red hearts in the background.
Assembly
The entire device could easily be built with standard wired components … if there wasn’t the cs8900 ethernet controller which is available in SMD technology only. Fortunately, some companies sell this chip ready to use on a simple pcb like e.g. this one (search for a device called easyToWeb-CS8900-16bit). This isn’t the cheapest solution but it allows the entire device to be built manually.
I mounted the ten displays in two rows with five displays each. The five displays of one row share the main control signals (red, green, bright, clock and reset) while the five columns share the select signal. Both rows have seperate red and green signals. This way i can update both displays in a column at once and one column after the other. See the image below for the wiring on the real thing.
For more detail: 80×32 LED matrix display using ATmega32 microcontroller
- How many LEDs are controlled individually?
The project controls a total of 5120 LEDs. - Can the display be updated in real time?
Yes, the ethernet interface allows updating the entire screen 50 times a second. - What type of controller is used for the displays?
An ATmega32 microcontroller is used to control all ten displays. - How is the ethernet support implemented?
It uses the Cirrus Logic CS8900 chip supported by the free Procyon AVRlib. - Can the display contents be changed remotely?
Yes, an optional TSOP1736 IR receiver allows changing content via a TV remote. - Is the project source code available?
Yes, the firmware, schematics, and PC software are open under the GPL. - What happens after the device starts up?
The display shows a splash screen with the firmware version and current IP address. - How are the ten displays wired together?
Five displays in each row share main control signals while columns share select signals.


