Cuprins:
Video: Cum să interfațați o matrice cu LED-uri conduse MAX7219 8x8 cu microcontrolerul ATtiny85: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Controlerul MAX7219 este fabricat de Maxim Integrated, este un driver de afișaj cu catod comun de intrare / ieșire serial, care ar putea interfața microcontrolerele cu 64 de LED-uri individuale, afișaje numerice cu 7 segmente cu până la 8 cifre, afișaje cu grafice cu bare etc. -chip sunt un decodor BCD cod-B, circuite de scanare multiplex, drivere de segmente și cifre și un RAM static de 8 × 8 care stochează fiecare cifră.
Modulele MAX7219 sunt foarte convenabile de utilizat cu microcontrolere precum ATtiny85 sau, în cazul nostru, cu placa Tinusaur.
Pasul 1: Hardware-ul
Modulele MAX7219 arată de obicei așa. Au o magistrală de intrare pe o parte și magistrală de ieșire pe de altă parte. Acest lucru vă permite să lanțați 2 sau mai multe module, adică unul după altul, pentru a crea configurări mai complicate.
Modulele pe care le folosim sunt capabile să se conecteze într-un lanț folosind 5 jumperi mici. Vezi poza de mai jos.
Pasul 2: Afișare și semnale
Modulul MAX7219 are 5 pini:
- VCC - putere (+)
- GND - sol (-)
- DIN - Introducere date
- CS - Selectarea cipului
- CLK - Ceas
Asta înseamnă că avem nevoie de 3 pini pe partea microcontrolerului ATtiny85 pentru a controla modulul. Acestea vor fi:
- PB0 - conectat la CLK
- PB1 - conectat la CS
- PB2 - conectat la DIN
Acest lucru este suficient pentru conectarea la modulul MAX7219 și programarea acestuia.
Pasul 3: Protocolul
Comunicarea cu MAX7219 este relativ ușoară - folosește un protocol sincron ceea ce înseamnă că pentru fiecare bit de date pe care îl trimitem există un ciclu de ceas care semnifică prezența acelui bit de date.
Cu alte cuvinte, trimitem 2 secvențe paralele către biți - unul pentru ceas și altul pentru date. Asta face software-ul.
Pasul 4: Software-ul
Modul în care funcționează acest modul MAX7219 este următorul:
- Scriem octeți în registrul său intern.
- MAX7219 interpretează datele.
- MAX7219 controlează LED-urile din matrice.
Asta înseamnă, de asemenea, că nu trebuie să circulăm tot timpul prin gama de LED-uri pentru a le aprinde - controlerul MAX7219 se ocupă de asta. De asemenea, ar putea gestiona intensitatea LED-urilor.
Deci, pentru a utiliza modulele MAX7219 într-un mod convenabil, avem nevoie de o bibliotecă de funcții pentru a îndeplini acest scop.
În primul rând, avem nevoie de câteva funcții de bază pentru a scrie în registrele MAX7219.
- Scrierea unui octet pe MAX7219.
- Scrierea unui cuvânt (2 octeți) pe MAX7219.
Funcția care scrie un octet la controler arată astfel:
void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Setați CLK la LOW dacă (date & 0x80) // Mascați MSB-ul datelor PORTB | = (1 << MAX7219_DIN); // Setați DIN la HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Setați DIN la LOW PORTB | = (1 << MAX7219_CLK); // Setați CLK la datele HIGH << = 1; // Shift la stânga}}
Acum că putem trimite octeți către MAX7219 putem începe să trimitem comenzi. Acest lucru se face prin trimiterea a 2 byes - primul pentru adresa registrului intern și al doilea pentru datele pe care am dori să le trimitem.
Există mai mult de o duzină de registre în controlerul MAX7219.
Trimiterea unei comenzi sau a unui cuvânt înseamnă, practic, trimiterea a 2 octeți consecutivi. Funcția de implementare care este foarte simplă.
nul max7219_word (adresa uint8_t, date uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Setați CS la LOW max7219_byte (adresa); // Trimiterea adresei max7219_byte (date); // Trimiterea datelor PORTB | = (1 << MAX7219_CS); // Setați CS la HIGH PORTB & = ~ (1 << MAX7219_CLK); // Setați CLK la LOW}
Este important de notat aici linia în care readucem semnalul CS la HIGH - aceasta marchează sfârșitul secvenței - în acest caz, sfârșitul comenzii. O tehnică similară este utilizată atunci când se controlează mai mult de o matrice conectată într-un lanț. Pasul următor, înainte de a începe aprinderea și oprirea LED-urilor, este inițializarea controlerului MAX7219. Acest lucru se face scriind anumite valori în anumite registre. Pentru comoditate, în timp ce o codăm, am putea pune secvența de inițializare într-o matrice.
uint8_t initseq = {0x09, 0x00, // Decode-Mode Register, 00 = Fără decodare 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 pentru a afișa toate liniile 0x0c, 0x01, // Registre de închidere, 0x01 = Funcționare normală 0x0f, 0x00, // Afișare-registru de testare, 0x00 = Funcționare normală};
Trebuie doar să trimitem cele 5 comenzi de mai sus într-o secvență ca perechi de adrese / date. Pasul următor - aprinderea unui rând de LED-uri.
Acest lucru este foarte simplu - scriem doar o comandă în care primul octet este adresa (de la 0 la 7), iar al doilea octet reprezintă cei 8 biți care reprezintă cei 8 LED-uri din rând.
void max7219_row (uint8_t address, uint8_t data) {if (address> = 1 && address <= 8) max7219_word (adresa, date); }
Este important să rețineți că acest lucru va funcționa numai pentru o matrice. Dacă conectăm mai multe matrice într-un lanț, toate vor arăta aceleași date. Motivul pentru aceasta este că, după trimiterea comenzii, readucem semnalul CS înapoi la HIGH, ceea ce face ca toate controlerele MAX7219 din lanț să se blocheze și să afișeze orice a fost ultima comandă.
Recomandat:
Cum se construiește o matrice LED 8x8 BIG (MAX7219 LED 10mm): 9 pași (cu imagini)
Cum să construiți matrice LED 8x8 BIG (MAX7219 LED 10mm): Ați lucrat cu matrice LED 8x8 gata făcute ca afișaje? Sunt disponibile în diferite dimensiuni și sunt destul de interesante de lucrat. O dimensiune mare ușor disponibilă este de aproximativ 60mm x 60mm. Cu toate acestea, dacă sunteți în căutarea unei matrice de LED-uri mult mai mari gata făcute
Cum să interfațați joystick-ul cu două axe cu Arduino Uno: 5 pași
Cum să interfațăm joystick-ul cu două axe cu Arduino Uno: Aici vom interfața un joystick cu o axă duel cu arduino uno. Acest joystick are doi pini analogici pentru axa x și axa y și un pin digital pentru comutator
Cum să interfațați modulul GPS (NEO-6m) cu Arduino: 7 pași (cu imagini)
Cum să interfațați modulul GPS (NEO-6m) cu Arduino: În acest proiect, am arătat cum să interfațați un modul GPS cu Arduino UNO. Datele pentru longitudine și latitudine sunt afișate pe ecranul LCD și locația poate fi vizualizată pe aplicație. Listă de materiale Arduino Uno == > Modul GPS Ublox NEO-6m $ 8 == > 15 $ 16x
Cum să interfațați un ecran TFT de 4x3”cu un Arduino: 4 pași
Cum să interfațez un afișaj TFT 4x3”cu un Arduino: FocusLCDs.com mi-a trimis un eșantion gratuit de un LCD TFT 4x3” (P / N: E43RG34827LW2M300-R) pentru a încerca. Acesta este un LCD cu matrice activă color (TFT (Thin Film Transistor)) (afișaj cu cristale lichide) care utilizează TFT de siliciu amorf ca dispozitiv de comutare. Acest model este c
Cum să interfațați un LCD 16x4 cu un Arduino: 6 pași
Cum să interfațați un LCD 16x4 cu un Arduino: Introducere Am primit recent câteva mostre LCD gratuite de la prietenii mei de la FocusLCDs.com. Unul dintre acestea este un ecran LCD de 16x4; Cod produs: C164AXBSYLY6WT. Folosește un controler ST7066U (vezi fișa tehnică aici) în locul HD44780 care se găsește în mod obișnuit în ecranele LCD. Eu nu sunt