Sisukord:

Kuidas liidestada MAX7219 juhitavat LED -maatriksit 8x8 ATtiny85 mikrokontrolleriga: 7 sammu
Kuidas liidestada MAX7219 juhitavat LED -maatriksit 8x8 ATtiny85 mikrokontrolleriga: 7 sammu
Anonim
Kuidas liidestada MAX7219 juhitavat LED -maatriksit 8x8 ATtiny85 mikrokontrolleriga
Kuidas liidestada MAX7219 juhitavat LED -maatriksit 8x8 ATtiny85 mikrokontrolleriga

MAX7219 kontrolleri on tootnud ettevõte Maxim Integrated on kompaktne jadase sisend/väljundiga ühise katoodiga kuvaridraiver, mis võib ühendada mikrokontrollereid 64 üksiku LED-iga, 7-segmendiline numbriline LED-ekraan kuni 8-kohaline, tulpdiagramm jne. -kiip on BCD kood-B dekooder, multipleksskaneering, segmendi- ja numbridraiverid ning 8 × 8 staatiline muutmälu, mis salvestab iga numbri.

MAX7219 mooduleid on väga mugav kasutada selliste mikrokontrolleritega nagu ATtiny85 või meie puhul Tinusaur Board.

Samm: riistvara

Riistvara
Riistvara
Riistvara
Riistvara

Tavaliselt näevad MAX7219 moodulid välja sellised. Nende ühel küljel on sisendbuss ja teisel pool väljundsiin. See võimaldab keerukamate seadistuste loomiseks kahe või enama mooduli ketti, st üksteise järel.

Meie kasutatavad moodulid on võimelised ahelasse ühendama, kasutades 5 väikest džemprit. Vaadake allolevat pilti.

2. samm: pinout ja signaalid

MAX7219 moodulil on 5 kontakti:

  • VCC - võimsus (+)
  • GND-jahvatatud (-)
  • DIN - andmete sisestamine
  • CS - kiibi valimine
  • CLK - Kell

See tähendab, et vajame mooduli juhtimiseks ATtiny85 mikrokontrolleri poolel 3 tihvti. Need saavad olema:

  • PB0 - ühendatud CLK -ga
  • PB1 - ühendatud CS -iga
  • PB2 - ühendatud DIN -iga

Sellest piisab MAX7219 mooduliga ühenduse loomiseks ja selle programmeerimiseks.

3. samm: protokoll

Protokoll
Protokoll

MAX7219 -ga suhtlemine on suhteliselt lihtne - see kasutab sünkroonset protokolli, mis tähendab, et iga saadetud andmebiti jaoks on kellatsükkel, mis tähistab selle andmebiti olemasolu.

Teisisõnu, me saadame bitti 2 paralleelset järjestust - üks kella ja teine andmete jaoks. Seda teeb tarkvara.

Samm 4: Tarkvara

Tarkvara
Tarkvara

See MAX7219 moodul töötab järgmiselt.

  • Me kirjutame baite selle siseregistrisse.
  • MAX7219 tõlgendab andmeid.
  • MAX7219 juhib maatriksi LED -e.

See tähendab ka seda, et me ei pea kogu aeg ringlema LED -de ringis, et neid süüdata - MAX7219 kontroller hoolitseb selle eest. See võib hallata ka valgusdioodide intensiivsust.

Niisiis, MAX7219 moodulite mugavaks kasutamiseks vajame selle eesmärgi täitmiseks funktsioonide kogu.

Esiteks vajame MAX7219 registritesse kirjutamiseks mõningaid põhifunktsioone.

  • Baidi kirjutamine MAX7219 -le.
  • Sõna (2 baiti) kirjutamine seadmele MAX7219.

Funktsioon, mis kirjutab kontrollerile ühe baidi, näeb välja selline:

tühine max7219_bait (uint8_t andmed) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Määra CLK väärtuseks LOW, kui (andmed & 0x80) // Maskeeri andmete MSB PORTB | = (1 << MAX7219_DIN); // Määra DIN väärtuseks HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Määra DIN väärtuseks LOW PORTB | = (1 << MAX7219_CLK); // Määra CLK väärtuseks HIGH data << = 1; // Nihutamine vasakule}}

Nüüd, kui saame baiti MAX7219 -le saata, võime alustada käskude saatmist. Selleks saatke 2 baiti - esimene siseregistri aadressi jaoks ja teine andmete jaoks, mida soovime saata.

MAX7219 kontrolleris on rohkem kui tosin registrit.

Käsu või sõna saatmine on põhimõtteliselt 2 järjestikuse baidi saatmine. Funktsiooni rakendamine on väga lihtne.

tühine max7219_word (uint8_t aadress, uint8_t andmed) {PORTB & = ~ (1 << MAX7219_CS); // Määra CS väärtuseks LOW max7219_byte (aadress); // Aadressi saatmine max7219_byte (andmed); // Andmete saatmine PORTB | = (1 << MAX7219_CS); // Määra CS väärtuseks HIGH PORTB & = ~ (1 << MAX7219_CLK); // Määra CLK väärtuseks LOW}

Siin on oluline märkida rida, kus me CS -signaali tagasi HIGH -i tagasi toome - see tähistab jada lõppu - antud juhul käsu lõppu. Sarnast tehnikat kasutatakse ka ühe ahelaga ühendatud maatriksi juhtimisel. Järgmine samm, enne kui hakkame LED -e sisse ja välja lülitama, on MAX7219 kontrolleri initsialiseerimine. Seda tehakse teatud väärtuste kirjutamisega teatud registritesse. Mugavuse huvides võiksime selle kodeerimise ajal panna initsialiseerimisjärjestuse massiivi.

uint8_t initseq = {0x09, 0x00, // Dekodeerimisrežiimi register, 00 = dekodeerimine puudub 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 kõigi ridade kuvamiseks 0x0c, 0x01, // Seiskamisregister, 0x01 = Normaalne töö 0x0f, 0x00, // Kuva-testregister, 0x00 = Tavaline töö};

Peame lihtsalt saatma ülaltoodud 5 käsku järjestikku aadressi/andmepaaridena. Järgmine samm - LED -ide süütamine.

See on väga lihtne - kirjutame lihtsalt ühe käsu, kus esimene bait on aadress (0 kuni 7) ja teine bait on 8 bitti, mis esindavad rea 8 LED -i.

tühine max7219_row (uint8_t aadress, uint8_t andmed) {if (aadress> = 1 && aadress <= 8) max7219_word (aadress, andmed); }

Oluline on märkida, et see töötab ainult ühe maatriksi puhul. Kui ühendame ahelasse rohkem maatriksit, näitavad need kõik samu andmeid. Selle põhjuseks on asjaolu, et pärast käsu saatmist toome CS -signaali tagasi HIGH -i, mis paneb kõik ahela MAX7219 kontrollerid lukustuma ja näitama, mis viimane käsk oli.

Soovitan: