Sadržaj:

Kako spojiti LED matricu 8x8 sa MAX7219 pogonom sa mikrokontrolerom ATtiny85: 7 koraka
Kako spojiti LED matricu 8x8 sa MAX7219 pogonom sa mikrokontrolerom ATtiny85: 7 koraka

Video: Kako spojiti LED matricu 8x8 sa MAX7219 pogonom sa mikrokontrolerom ATtiny85: 7 koraka

Video: Kako spojiti LED matricu 8x8 sa MAX7219 pogonom sa mikrokontrolerom ATtiny85: 7 koraka
Video: Arduino. Матрица светодиодов 8 на 8 (LED Matrix 8x8) 2024, Novembar
Anonim
Kako spojiti MAX7219 LED matricu 8x8 sa ATtiny85 mikrokontrolerom
Kako spojiti MAX7219 LED matricu 8x8 sa ATtiny85 mikrokontrolerom

Kontroler MAX7219 proizvodi Maxim Integrated, kompaktan je serijski ulazno/izlazni upravljački program za prikaz sa zajedničkom katodom koji može povezati mikrokontrolere sa 64 pojedinačne LED diode, 7-segmentne numeričke LED ekrane do 8 znamenki, ekrane sa stupčastim grafikonom itd. Uključeno na -čip su BCD kod-B dekoder, kola za multipleksno skeniranje, upravljački programi za segmente i znamenke te 8 × 8 statička RAM memorija koja pohranjuje svaku znamenku.

Moduli MAX7219 vrlo su prikladni za upotrebu s mikrokontrolerima kao što je ATtiny85 ili, u našem slučaju Tinusaur ploča.

Korak 1: Hardver

Hardver
Hardver
Hardver
Hardver

Moduli MAX7219 obično izgledaju ovako. Na jednoj strani imaju ulaznu magistralu, a na drugoj izlaznu magistralu. Ovo vam omogućuje da povežete 2 ili više modula, tj. Jedan za drugim, kako biste stvorili složenije postavke.

Moduli koje koristimo mogu se povezati u lanac pomoću 5 malih kratkospojnika. Pogledajte sliku ispod.

Korak 2: Pinout i signali

Modul MAX7219 ima 5 pinova:

  • VCC - snaga (+)
  • GND-uzemljenje (-)
  • DIN - Unos podataka
  • CS - Odabir čipa
  • CLK - Sat

To znači da su nam potrebna 3 pina na strani mikrokontrolera ATtiny85 za upravljanje modulom. To će biti:

  • PB0 - spojen na CLK
  • PB1 - spojen na CS
  • PB2 - spojen na DIN

Ovo je dovoljno za povezivanje s modulom MAX7219 i njegovo programiranje.

Korak 3: Protokol

Protokol
Protokol

Komunikacija s MAX7219 je relativno laka - koristi sinkroni protokol što znači da za svaki podatkovni bit koji šaljemo postoji ciklus takta koji označava prisutnost tog bita podataka.

Drugim riječima, šaljemo 2 paralelne sekvence u bitove - jednu za sat, a drugu za podatke. Ovo softver radi.

Korak 4: Softver

Softver
Softver

Način rada ovog MAX7219 modula je sljedeći:

  • Bajte upisujemo u njegov interni registar.
  • MAX7219 tumači podatke.
  • MAX7219 kontrolira LED diode u matrici.

To također znači da ne moramo stalno kružiti kroz niz LED dioda da bismo ih upalili - za to se brine MAX7219 kontroler. Također bi mogao upravljati intenzitetom LED dioda.

Dakle, za korištenje MAX7219 modula na prikladan način potrebna nam je biblioteka funkcija koja služi u tu svrhu.

Prvo, potrebne su nam neke osnovne funkcije za pisanje u MAX7219 registre.

  • Zapisivanje bajta u MAX7219.
  • Zapisivanje riječi (2 bajta) na MAX7219.

Funkcija koja zapisuje jedan bajt u kontroler izgleda ovako:

void max7219_byte (uint8_t podaci) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Postavimo CLK na LOW ako (podaci & 0x80) // Maskiramo MSB podataka PORTB | = (1 << MAX7219_DIN); // Postavite DIN na HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Postavite DIN na LOW PORTB | = (1 << MAX7219_CLK); // Postavimo CLK na HIGH data << = 1; // Pomicanje ulijevo}}

Sada kada možemo poslati bajtove na MAX7219 možemo početi slati naredbe. To se postiže slanjem 2 bajva - prvi za adresu internog registra i drugi za podatke koje želimo poslati.

U kontroleru MAX7219 postoji više desetaka registriranih.

Slanje naredbe ili riječi u osnovi je slanje 2 uzastopna bajta. Implementacija funkcije je vrlo jednostavna.

void max7219_word (uint8_t adresa, uint8_t podaci) {PORTB & = ~ (1 << MAX7219_CS); // Postavite CS na LOW max7219_byte (adresa); // Slanje adrese max7219_byte (data); // Slanje podataka PORTB | = (1 << MAX7219_CS); // Postavite CS na HIGH PORTB & = ~ (1 << MAX7219_CLK); // Postavite CLK na LOW}

Ovdje je važno napomenuti red u kojem CS signal vraćamo na HIGH - to označava kraj sekvence - u ovom slučaju kraj naredbe. Slična tehnika koristi se pri kontroliranju više od jedne matrice povezane u lanac. Sljedeći korak, prije nego što počnemo uključivati i isključivati LED diode, je inicijalizacija kontrolera MAX7219. To se postiže upisivanjem određenih vrijednosti u određene registre. Radi praktičnosti, prilikom kodiranja mogli smo inicijalizacijski niz staviti u niz.

uint8_t initseq = {0x09, 0x00, // Registar načina dekodiranja, 00 = Bez dekodiranja 0x0a, 0x01, // Registar intenziteta, 0x00.. 0x0f 0x0b, 0x07, // Registar ograničenja skeniranja, 0x07 za prikaz svih linija 0x0c, 0x01, // Registar isključivanja, 0x01 = Normalni rad 0x0f, 0x00, // Registar za testiranje prikaza, 0x00 = Normalni rad};

Samo trebamo poslati 5 gore navedenih naredbi u nizu kao parove adresa/podaci. Sljedeći korak - osvjetljavanje niza LED dioda.

Ovo je vrlo jednostavno - samo pišemo jednu naredbu gdje je prvi bajt adresa (od 0 do 7), a drugi bajt 8 bitova koji predstavljaju 8 LED dioda u redu.

void max7219_row (uint8_t adresa, uint8_t podaci) {if (adresa> = 1 && adresa <= 8) max7219_word (adresa, podaci); }

Važno je napomenuti da će ovo raditi samo za 1 matricu. Ako povežemo više matrica u lanac, sve će prikazati iste podatke. Razlog za to je što nakon slanja naredbe vraćamo CS signal na HIGH što uzrokuje da se svi kontroleri MAX7219 u lancu zaključaju i pokažu što god bila zadnja naredba.

Preporučuje se: