Von Sure Electronics habe ich mir kürzlich vier LED Matrix Displays gekauft, die P4 32X8 3208 Red LED Dot Matrix Unit Board SPI Like

So ein Display besteht dabei aus einer Matrix von 32x8 LEDs, hat ein serielles Interface, und vier dieser Displays lassen sich hintereinander schalten. Die Verarbeitungsqualität ist nicht überragend, aber ordentlich und für den geringen Preis hatte ich eigentlich deutlich schlechtere Ware erwartet.

Ursprünglich hatte ich vor mittels eines kleinen Mikrocontrollers eine Art Display für den PC zu bauen. Also Strings und einfache Kommandos per RS232 an den Controller schicken, und der steuert dann wiederum die Displays an. Mit Scrolleffekten usw. Allerdings hat sich jetzt eine bessere Aufgabe ergeben, deswegen veröffentliche ich hier die bisher entstandene Dokumentation und den Code dazu. Vielleicht kann es jemand brauchen, die Routinen sind halbwegs universell gehalten und sollten sich einfach an andere Zielsysteme anpassen lassen.

Anschluss an den Mikrocontroller

Für den Aufbau kam ein Arduino Pro Mini 328 zum Einsatz, ein kleines Board mit einem ATMega328, 5V Betriebsspannung und 16MHz Takt. Alle für den Prozessor absolut nötige Peripherie ist auf dem kleinen etwa 35x18mm grossen Board vorhanden, deswegen setze ich es gerne für schnelle Testaufbauten ein. Den Arduino-Bootloader werfe ich dabei üblicherweise runter, da ich die Dinger meist per ISP oder JTAG programmiere brauche ich den ja nicht.

Die Verbindungen zwischen dem ProMini-Board und einem Display:

D2 -> CS1
D3 -> CS2
D4 -> CS3
D5 -> CS4
D6 -> WR
D7 -> RD
D8 -> DATA
GND -> GND
VCC -> +5V

Alle weiteren Displays werden einfach an dem ersten Display angeschlossen. Die Reihenfolge ist dabei egal, die Leitungen sind alle 1:1 durchverbunden.

Software

Die ganze C-Software kann man sich hier herunterladen. Eine kurze Übersicht der Dateien:

display/display_hw.c - Die Routinen für die direkte Ansteuerung der einzelnen Displays
display/display.c - Ansteuerroutinen für die kompletten Displays
hw/hw.c -Initialisierung der Ports
main/main.c -Die Hauptroutine. Enthält auch den anzuzeigenden Text und die Scroll-Routine
includes/display_hw.h - Header für display_hw.c, enthält auch die Konfiguration der Ports an denen die Displays angeschlossen sind
includes/display.h - Header für display.c
includes/hw.h - Header für hw.c
Release/* - Makefiles für die Erstellung

Um die Hexcodes für die darzustellenden Zeichen einfacher zu erstellen zu können, habe ich mir noch eine Tabelle in OpenOffice gebaut in der man das recht einfach inkl. Vorschau erledigen kann. Wer will kann sich das Dokument dann hier herunterladen.

Next Post Previous Post