Sommario:
- Passaggio 1: l'hardware
- Passaggio 2: piedinatura e segnali
- Passaggio 3: il protocollo
- Passaggio 4: il software
Video: Come interfacciare una matrice LED 8x8 guidata MAX7219 con il microcontrollore ATtiny85: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Il controller MAX7219 è prodotto da Maxim Integrated è un driver per display a catodo comune di ingresso/uscita seriale compatto che può interfacciare microcontrollori a 64 LED singoli, display LED numerici a 7 segmenti fino a 8 cifre, display con grafici a barre, ecc. Incluso su -chip sono un decodificatore codice BCD-B, circuiti di scansione multiplex, driver per segmenti e cifre e una RAM statica 8×8 che memorizza ogni cifra.
I moduli MAX7219 sono molto comodi da usare con microcontrollori come ATtiny85, o, nel nostro caso, la Tinusaur Board.
Passaggio 1: l'hardware
I moduli MAX7219 di solito hanno questo aspetto. Hanno un bus di ingresso da un lato e un bus di uscita dall'altro. Ciò consente di collegare in cascata 2 o più moduli, ovvero uno dopo l'altro, per creare configurazioni più complicate.
I moduli che stiamo utilizzando sono in grado di collegarsi in catena utilizzando 5 piccoli ponticelli. Vedi l'immagine qui sotto.
Passaggio 2: piedinatura e segnali
Il modulo MAX7219 ha 5 pin:
- VCC – alimentazione (+)
- GND – massa (-)
- DIN – Ingresso dati
- CS – Selezione chip
- CLK – Orologio
Ciò significa che abbiamo bisogno di 3 pin sul lato del microcontrollore ATtiny85 per controllare il modulo. Quelli saranno:
- PB0 – collegato al CLK
- PB1 – connesso al CS
- PB2 – collegato al DIN
Questo è sufficiente per collegarsi al modulo MAX7219 e programmarlo.
Passaggio 3: il protocollo
Comunicare con il MAX7219 è relativamente semplice: utilizza un protocollo sincrono, il che significa che per ogni bit di dati che inviamo c'è un ciclo di clock che indica la presenza di quel bit di dati.
In altre parole, inviamo 2 sequenze parallele ai bit, una per l'orologio e l'altra per i dati. Questo è ciò che fa il software.
Passaggio 4: il software
Il modo in cui funziona questo modulo MAX7219 è questo:
- Scriviamo byte nel suo registro interno.
- MAX7219 interpreta i dati.
- MAX7219 controlla i LED nella matrice.
Ciò significa anche che non dobbiamo girare continuamente attraverso la serie di LED per accenderli: il controller MAX7219 si occupa di questo. Potrebbe anche gestire l'intensità dei LED.
Quindi, per utilizzare i moduli MAX7219 in modo conveniente, abbiamo bisogno di una libreria di funzioni per questo scopo.
Innanzitutto, abbiamo bisogno di alcune funzioni di base per scrivere sui registri MAX7219.
- Scrivere un byte sul MAX7219.
- Scrivere una parola (2 byte) sul MAX7219.
La funzione che scrive un byte nel controller ha questo aspetto:
void max7219_byte(uint8_t data) { for(uint8_t i = 8; i >= 1; i--) { PORTB &= ~(1 << MAX7219_CLK); // Imposta CLK su LOW if (data & 0x80) // Maschera l'MSB dei dati PORTB |= (1 << MAX7219_DIN); // Imposta DIN su HIGH else PORTB &= ~(1 << MAX7219_DIN); // Imposta DIN su LOW PORTB |= (1 << MAX7219_CLK); // Imposta CLK su dati HIGH <<= 1; // Sposta a sinistra } }
Ora che possiamo inviare byte al MAX7219 possiamo iniziare a inviare comandi. Questo viene fatto inviando 2 bye: il primo per l'indirizzo del registro interno e il secondo per i dati che vorremmo inviare.
Ci sono più di una dozzina di registri nel controller MAX7219.
L'invio di un comando, o di una parola, è fondamentalmente l'invio di 2 byte consecutivi. L'implementazione della funzione è molto semplice.
void max7219_word(indirizzo uint8_t, dati uint8_t) { PORTB &= ~(1 << MAX7219_CS); // Imposta CS su LOW max7219_byte(address); // Invio dell'indirizzo max7219_byte(data); // Invio dati PORTB |= (1 << MAX7219_CS); // Imposta CS su HIGH PORTB &= ~(1 << MAX7219_CLK); // Imposta CLK su BASSO }
È importante notare qui la riga in cui riportiamo il segnale CS su HIGH – questo segna la fine della sequenza – in questo caso, la fine del comando. Una tecnica simile viene utilizzata quando si controllano più matrici collegate in una catena. Il passaggio successivo, prima di iniziare ad accendere e spegnere i LED, è inizializzare il controller MAX7219. Questo viene fatto scrivendo determinati valori in determinati registri. Per comodità, durante la codifica potremmo inserire la sequenza di inizializzazione in un array.
uint8_t initseq = { 0x09, 0x00, // Decode-Mode Register, 00 = No decodifica 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 per mostrare tutte le righe 0x0c, 0x01, // Registro di spegnimento, 0x01 = Funzionamento normale 0x0f, 0x00, // Registro di test display, 0x00 = Funzionamento normale };
Abbiamo solo bisogno di inviare i 5 comandi sopra in una sequenza come coppie indirizzo/dati. Passaggio successivo: accendere una fila di LED.
Questo è molto semplice: scriviamo solo un comando dove il 1° byte è l'indirizzo (da 0 a 7) e il 2° byte sono gli 8 bit che rappresentano gli 8 LED nella riga.
void max7219_row(uint8_t address, uint8_t data) { if (address >= 1 && address <= 8) max7219_word(address, data); }
È importante notare che questo funzionerà solo per 1 matrice. Se colleghiamo più matrici in una catena, tutte mostreranno gli stessi dati. La ragione di ciò è che dopo aver inviato il comando riportiamo il segnale CS su HIGH, il che fa sì che tutti i controller MAX7219 nella catena si blocchino e mostrino qualunque sia stato l'ultimo comando.
Consigliato:
Come utilizzare la matrice di punti Max7219 8x8 con "skiiiiD": 9 passaggi
Come utilizzare Max7219 8x8 Dot Matrix con "skiiiD": questa è un'istruzione video di Max7219 8x8 Dot Matrix tramite "skiiiiD" Prima di iniziare, di seguito è riportato un tutorial di base su come utilizzare skiiiDhttps://www.instructables.com/id /Inizio-Inizio-W
Come costruire una matrice LED GRANDE 8x8 (LED MAX7219 10 mm): 9 passaggi (con immagini)
Come costruire una matrice LED 8x8 GRANDE (LED MAX7219 10 mm): hai lavorato con una matrice LED 8x8 già pronta come display? Sono disponibili in varie dimensioni e sono piuttosto interessanti con cui lavorare. Una grande dimensione prontamente disponibile è di circa 60 mm x 60 mm. Tuttavia, se stai cercando una matrice LED già pronta molto più grande
Come interfacciare il modulo GPS (NEO-6m) con Arduino: 7 passaggi (con immagini)
Come interfacciare un modulo GPS (NEO-6m) con Arduino: In questo progetto, ho mostrato come interfacciare un modulo GPS con Arduino UNO. I dati di longitudine e latitudine vengono visualizzati sul display LCD e la posizione può essere visualizzata sull'app. Elenco del materiale Arduino Uno ==> $8 Modulo GPS Ublox NEO-6m ==> $ 15 16 volte
Configurazione dei fusibili del microcontrollore AVR. Creazione e caricamento nella memoria flash del microcontrollore del programma di lampeggio dei LED.: 5 passaggi
Configurazione dei fusibili del microcontrollore AVR. Creazione e caricamento nella memoria flash del microcontrollore del LED lampeggiante Program.: In questo caso creeremo un semplice programma in codice C e lo masterizzeremo nella memoria del microcontrollore. Scriveremo il nostro programma e compileremo il file esadecimale, utilizzando Atmel Studio come piattaforma di sviluppo integrata. Configurare il fusibile bi
Sì - No: una cassetta postale guidata da Arduino: 4 passaggi (con immagini)
Sì - No: una casella di posta guidata da Arduino: in questo progetto ti mostreremo come rendere la tua casella di posta più divertente e utile. Con questa casella di posta, se una lettera è nella tua posta, hai una bella luce che mostra se hai posta e puoi controllare questa casella di posta con bluetooth per automaticamente