Sadržaj:

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

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

Video: Kako spojiti LED matricu 8x8 s MAX7219 pogonom s mikrokontrolerom ATtiny85: 7 koraka
Video: Как сделать светодиодную матрицу - NE555/CD4017 2024, Srpanj
Anonim
Kako spojiti MAX7219 LED matricu 8x8 s pogonom s ATtiny85 mikrokontrolerom
Kako spojiti MAX7219 LED matricu 8x8 s pogonom s ATtiny85 mikrokontrolerom

Kontroler MAX7219 proizvodi Maxim Integrated, kompaktan je serijski ulazno/izlazni upravljački program za prikaz sa zajedničkom katodom koji može spojiti mikrokontrolere sa 64 pojedinačne LED diode, 7-segmentne numeričke LED zaslone do 8 znamenki, zaslone s grafikonima itd. Uključeno na -čip su BCD kod-B dekoder, sklopovi multipleksnog skeniranja, upravljački programi za segmente i znamenke te 8 × 8 statički RAM koji 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 sabirnicu, a na drugoj izlaznu. To 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 donju sliku.

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

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

Korak 3: Protokol

Protokol
Protokol

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

Drugim riječima, šaljemo 2 paralelne sekvence u bitove - jednu za sat, a drugu za podatke. To 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 upravlja LED diodama u matrici.

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

Dakle, da bismo na prikladan način koristili module MAX7219 potrebna nam je knjižnica funkcija koja služi u tu svrhu.

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

  • 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); // CLK postavimo na LOW ako (podaci & 0x80) // Maskiramo MSB podataka PORTB | = (1 << MAX7219_DIN); // DIN postavite na HIGH else PORTB & = ~ (1 << MAX7219_DIN); // DIN postavite na LOW PORTB | = (1 << MAX7219_CLK); // CLK postavimo 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 bye - 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. Funkcija koja ga implementira vrlo je 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 (podaci); // Slanje podataka PORTB | = (1 << MAX7219_CS); // Postavite CS na HIGH PORTB & = ~ (1 << MAX7219_CLK); // CLK postavite 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 se tehnika koristi 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, tijekom kodiranja mogli bismo niz inicijalizacije staviti u niz.

uint8_t initseq = {0x09, 0x00, // Registar načina dekodiranja, 00 = Nema dekodiranja 0x0a, 0x01, // Registar intenziteta, 0x00.. 0x0f 0x0b, 0x07, // Registar ograničenja skeniranja, 0x07 za prikaz svih redaka 0x0c, 0x01, // Registar za isključivanje, 0x01 = Normalni rad 0x0f, 0x00, // Display-Test Register, 0x00 = Normal Operation};

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

Ovo je vrlo jednostavno - samo napiš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 tome 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čeni: