Inhaltsverzeichnis:
- Schritt 1: Die Hardware
- Schritt 2: Pinbelegung und Signale
- Schritt 3: Das Protokoll
- Schritt 4: Die Software
Video: So verbinden Sie eine MAX7219-gesteuerte LED-Matrix 8x8 mit dem ATtiny85-Mikrocontroller - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Der MAX7219-Controller wird von Maxim Integrated hergestellt und ist ein kompakter serieller Ein-/Ausgangs-Anzeigetreiber mit gemeinsamer Kathode, der Mikrocontroller mit 64 einzelnen LEDs, numerischen 7-Segment-LED-Anzeigen mit bis zu 8 Stellen, Balkendiagrammen usw. verbinden kann -Chip sind ein BCD-Code-B-Decoder, eine Multiplex-Scan-Schaltung, Segment- und Zifferntreiber und ein statischer 8×8-RAM, der jede Ziffer speichert.
Die MAX7219-Module lassen sich sehr bequem mit Mikrocontrollern wie ATtiny85 oder in unserem Fall dem Tinusaur Board verwenden.
Schritt 1: Die Hardware
Die MAX7219-Module sehen normalerweise so aus. Sie haben auf der einen Seite einen Eingangsbus und auf der anderen einen Ausgangsbus. Auf diese Weise können Sie 2 oder mehr Module, d. h. hintereinander, verketten, um kompliziertere Setups zu erstellen.
Die von uns verwendeten Module können mit 5 kleinen Jumpern in einer Kette verbunden werden. Siehe das Bild unten.
Schritt 2: Pinbelegung und Signale
Das Modul MAX7219 hat 5 Pins:
- VCC – Leistung (+)
- GND – Masse (-)
- DIN – Dateneingabe
- CS – Chipauswahl
- CLK – Uhr
Das bedeutet, dass wir 3 Pins auf der Seite des ATtiny85-Mikrocontrollers benötigen, um das Modul zu steuern. Das werden sein:
- PB0 – verbunden mit dem CLK
- PB1 – verbunden mit der CS
- PB2 – angeschlossen an DIN
Dies reicht aus, um das Modul MAX7219 anzuschließen und zu programmieren.
Schritt 3: Das Protokoll
Die Kommunikation mit dem MAX7219 ist relativ einfach – er verwendet ein synchrones Protokoll, d. h. für jedes gesendete Datenbit gibt es einen Taktzyklus, der das Vorhandensein dieses Datenbits anzeigt.
Mit anderen Worten, wir senden 2 parallele Sequenzen an Bits – eine für die Uhr und eine andere für die Daten. Das macht die Software.
Schritt 4: Die Software
Die Funktionsweise dieses MAX7219-Moduls ist wie folgt:
- Wir schreiben Bytes in sein internes Register.
- MAX7219 interpretiert die Daten.
- MAX7219 steuert die LEDs in der Matrix.
Das bedeutet auch, dass wir nicht ständig durch die LED-Anordnung kreisen müssen, um sie zum Leuchten zu bringen – dafür sorgt der Controller MAX7219. Es könnte auch die Intensität der LEDs verwalten.
Um die MAX7219-Module bequem nutzen zu können, benötigen wir daher eine Funktionsbibliothek, die diesem Zweck dient.
Zunächst benötigen wir einige Grundfunktionen, um in die MAX7219-Register zu schreiben.
- Schreiben eines Bytes in den MAX7219.
- Schreiben eines Wortes (2 Bytes) in den MAX7219.
Die Funktion, die ein Byte in den Controller schreibt, sieht so aus:
Void max7219_byte (uint8_t data) { for(uint8_t i = 8; i >= 1; i--) { PORTB &= ~(1 << MAX7219_CLK); // CLK auf LOW setzen if (data & 0x80) // MSB der Daten maskieren PORTB |= (1 << MAX7219_DIN); // DIN auf HIGH setzen sonst PORTB &= ~(1 << MAX7219_DIN); // Setze DIN auf LOW PORTB |= (1 << MAX7219_CLK); // Setze CLK auf HIGH Daten <<= 1; // Nach links verschieben } }
Nachdem wir nun Bytes an den MAX7219 senden können, können wir mit dem Senden von Befehlen beginnen. Dies geschieht durch Senden von 2 Byes – 1 für die Adresse des internen Registers und das 2 für die Daten, die wir senden möchten.
Es gibt mehr als ein Dutzend Register im MAX7219-Controller.
Das Senden eines Befehls oder eines Wortes ist im Grunde das Senden von 2 aufeinanderfolgenden Bytes. Die Funktion, die das implementiert, ist sehr einfach.
void max7219_word(uint8_t Adresse, uint8_t Daten) { PORTB &= ~(1 << MAX7219_CS); // CS auf LOW setzen max7219_byte (Adresse); // Senden der Adresse max7219_byte(data); // Senden der Daten PORTB |= (1 << MAX7219_CS); // CS auf HIGH PORTB setzen &= ~(1 << MAX7219_CLK); // CLK auf LOW setzen }
Es ist wichtig, hier die Zeile zu beachten, in der wir das CS-Signal wieder auf HIGH bringen – dies markiert das Ende der Sequenz – in diesem Fall das Ende des Befehls. Eine ähnliche Technik wird verwendet, wenn mehr als eine in einer Kette verbundene Matrix gesteuert wird. Der nächste Schritt, bevor wir mit dem Ein- und Ausschalten der LEDs beginnen, besteht darin, den MAX7219-Controller zu initialisieren. Dies geschieht durch Schreiben bestimmter Werte in bestimmte Register. Der Einfachheit halber könnten wir beim Codieren die Initialisierungssequenz in ein Array einfügen.
uint8_t initseq = { 0x09, 0x00, // Decode-Mode Register, 00 = Keine Decodierung 0x0a, 0x01, // Intensitätsregister, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 um alle Zeilen anzuzeigen 0x0c, 0x01, // Shutdown-Register, 0x01 = Normalbetrieb 0x0f, 0x00, // Display-Test-Register, 0x00 = Normalbetrieb };
Wir müssen nur die 5 obigen Befehle nacheinander als Adress-/Datenpaare senden. Nächster Schritt – Aufleuchten einer Reihe von LEDs.
Dies ist sehr einfach – wir schreiben nur einen Befehl, wobei das 1. Byte die Adresse (von 0 bis 7) ist und das 2. Byte die 8 Bits sind, die die 8 LEDs in der Reihe darstellen.
Void max7219_row (uint8_t Adresse, uint8_t Daten) { if (Adresse >= 1 && Adresse <= 8) max7219_word (Adresse, Daten); }
Es ist wichtig zu beachten, dass dies nur für 1 Matrix funktioniert. Wenn wir mehr Matrizen in einer Kette verbinden, zeigen sie alle die gleichen Daten. Der Grund dafür ist, dass wir nach dem Senden des Befehls das CS-Signal wieder auf HIGH bringen, was dazu führt, dass alle MAX7219-Controller in der Kette verriegeln und anzeigen, was der letzte Befehl war.
Empfohlen:
Verbinden eines GPS-Moduls mit dem Raspberry Pi: Dashcam Teil 2: 3 Schritte
Anbindung eines GPS-Moduls an den Raspberry Pi: Dashcam Teil 2: Dies ist Teil 2 des Dashcam-Projekts und in diesem Beitrag erfahren Sie, wie Sie ein GPS-Modul an den Raspberry Pi anschließen. Wir verwenden dann die GPS-Daten und fügen sie dem Video als Textüberlagerung hinzu. Bitte lesen Sie Teil 1 über den untenstehenden Link, bevor Sie
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Erfahren Sie, wie Sie mit PROCESSING eine Echtzeitschnittstelle in ARDUINO erstellen !!!!): 5 Schritte (mit Bildern)
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Learn How to Make a Real Time Interface in ARDUINO Using PROCESSING !!!!): Ein SCARA-Roboter ist eine sehr beliebte Maschine in der Industriewelt. Der Name steht sowohl für Selective Compliant Assembly Robot Arm als auch für Selective Compliant Articulated Robot Arm. Es ist im Grunde ein Roboter mit drei Freiheitsgraden, da er die ersten beiden Displ
Raspberry Pi mit dem mobilen Bildschirm verbinden – wikiHow
So verbinden Sie Raspberry Pi mit dem mobilen Bildschirm: Haben Sie einen Raspberry Pi, aber keinen Monitor. Was werden Sie dann tun, werden Sie einen Monitor kaufen, vielleicht werden Sie nur eine Sekunde warten……. ….! Wird dieser Monitor mit Wechselstrom betrieben? aber was wenn man zugreifen will (starten, programmieren
So verbinden Sie eine Kinect: 8 Schritte
So schließen Sie ein Kinect an: Microsofts Kinect ist ein vielseitiges Multimedia-Eingabegerät, das als 3D-Scanner verwendet werden kann. Ursprünglich wurde es als Erweiterung der Xbox-Spielekonsole auf den Markt gebracht. Wir beschreiben, wie Sie eine Kinect mit Ihrem Windows-PC verbinden. Nintendos Wii-Spielekonsole i
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Hinzugefügte Informationen: 4 Schritte
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen … Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Zusätzliche Informationen: Wenn Sie jemals auf eine Website gehen und ein Lied abspielen, das Sie mögen und es wollen, dann ist hier das anweisbare für Sie, nicht meine Schuld, wenn Sie etwas durcheinander bringen (nur so wird es passieren, wenn Sie ohne Grund anfangen, Dinge zu löschen) ) Ich konnte Musik für