Sisällysluettelo:

MAX7219 -ohjattavan LED -matriisin 8x8 liittäminen ATtiny85 -mikrokontrolleriin: 7 vaihetta
MAX7219 -ohjattavan LED -matriisin 8x8 liittäminen ATtiny85 -mikrokontrolleriin: 7 vaihetta

Video: MAX7219 -ohjattavan LED -matriisin 8x8 liittäminen ATtiny85 -mikrokontrolleriin: 7 vaihetta

Video: MAX7219 -ohjattavan LED -matriisin 8x8 liittäminen ATtiny85 -mikrokontrolleriin: 7 vaihetta
Video: Светодиодные матрицы на max7219 2024, Heinäkuu
Anonim
Kuinka liittää MAX7219 -käyttöinen LED -matriisi 8x8 ATtiny85 -mikrokontrollerilla
Kuinka liittää MAX7219 -käyttöinen LED -matriisi 8x8 ATtiny85 -mikrokontrollerilla

MAX7219-ohjaimen on valmistanut Maxim Integrated on pienikokoinen sarjatulo/-lähtöinen yhteisen katodin näytönohjain, joka voi liittää mikro-ohjaimet 64 yksittäiseen LED-valoon, 7-segmenttiset numeeriset LED-näytöt, joissa on enintään 8 numeroa, pylväsdiagrammit jne. -piiri on BCD-koodi-B-dekooderi, multiplex-skannauspiiri, segmentti- ja numero-ohjaimet ja 8 × 8 staattinen RAM, joka tallentaa jokaisen numeron.

MAX7219 -moduuleja on erittäin kätevä käyttää mikro -ohjaimien, kuten ATtiny85, tai meidän tapauksessamme Tinusaur Boardin kanssa.

Vaihe 1: Laitteisto

Laitteisto
Laitteisto
Laitteisto
Laitteisto

MAX7219 -moduulit näyttävät yleensä tältä. Niillä on tuloväylä toisella puolella ja lähtöväylä toisella puolella. Tämän avulla voit ketjuttaa 2 tai useampia moduuleja, eli yksi toisensa jälkeen, monimutkaisempien asetusten luomiseksi.

Käyttämämme moduulit pystyvät kytkeytymään ketjuun käyttämällä 5 pientä hyppääjää. Katso alla oleva kuva.

Vaihe 2: Pinout ja signaalit

MAX7219 -moduulissa on 5 nastaa:

  • VCC - teho (+)
  • GND-maa (-)
  • DIN - Tietojen syöttö
  • CS - Sirun valinta
  • CLK - Kello

Tämä tarkoittaa, että tarvitsemme 3 nastaa ATtiny85 -mikrokontrollerin puolella ohjaamaan moduulia. Niitä tulee olemaan:

  • PB0 - kytketty CLK: hon
  • PB1 - kytketty CS: ään
  • PB2 - DIN -liitäntä

Tämä riittää muodostamaan yhteyden MAX7219 -moduuliin ja ohjelmoimaan sen.

Vaihe 3: Protokolla

Pöytäkirja
Pöytäkirja

Kommunikointi MAX7219: n kanssa on suhteellisen helppoa - se käyttää synkronista protokollaa, mikä tarkoittaa, että jokaiselle lähettämällemme databitille on kellosykli, joka merkitsee kyseisen tietobitin läsnäoloa.

Toisin sanoen lähetämme biteille kaksi rinnakkaista sekvenssiä - yksi kellolle ja toinen datalle. Ohjelmisto tekee tämän.

Vaihe 4: Ohjelmisto

Ohjelmisto
Ohjelmisto

Tämä MAX7219 -moduuli toimii seuraavasti:

  • Kirjoitamme tavuja sen sisäiseen rekisteriin.
  • MAX7219 tulkitsee tiedot.
  • MAX7219 ohjaa matriisin LED -valoja.

Tämä tarkoittaa myös sitä, että meidän ei tarvitse kiertää koko ajan LED -valoja niiden sytyttämiseksi - MAX7219 -ohjain huolehtii siitä. Se voisi myös hallita LEDien voimakkuutta.

Joten voidaksemme käyttää MAX7219 -moduuleja kätevällä tavalla, tarvitsemme funktiokirjaston tätä tarkoitusta varten.

Ensinnäkin tarvitsemme joitain perustoimintoja kirjoittaaksemme MAX7219 -rekistereihin.

  • Tavun kirjoittaminen MAX7219: ään.
  • Sanan kirjoittaminen (2 tavua) MAX7219: lle.

Toiminto, joka kirjoittaa yhden tavun ohjaimeen, näyttää tältä:

void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Aseta CLK arvoksi LOW jos (data & 0x80) // Peitä datan MSB PORTB | = (1 << MAX7219_DIN); // Aseta DIN -arvoksi HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Aseta DIN -asetukseksi LOW PORTB | = (1 << MAX7219_CLK); // Aseta CLK arvoksi HIGH data << = 1; // Vaihto vasemmalle}}

Nyt kun voimme lähettää tavuja MAX7219 -laitteeseen, voimme aloittaa komentojen lähettämisen. Tämä tehdään lähettämällä 2 tavua - ensimmäinen sisäisen rekisterin osoitteelle ja toinen tiedoille, jotka haluamme lähettää.

MAX7219 -ohjaimessa on yli tusina rekisteriä.

Komennon tai sanan lähettäminen on pohjimmiltaan kahden peräkkäisen tavun lähettäminen. Toiminnon toteuttaminen on hyvin yksinkertaista.

void max7219_word (uint8_t -osoite, uint8_t -tiedot) {PORTB & = ~ (1 << MAX7219_CS); // Aseta CS arvoksi LOW max7219_byte (osoite); // Osoitteen lähettäminen max7219_byte (data); // Tietojen lähettäminen PORTB | = (1 << MAX7219_CS); // Aseta CS asetukseksi HIGH PORTB & = ~ (1 << MAX7219_CLK); // Aseta CLK -arvoksi LOW}

On tärkeää huomata tässä rivi, jossa tuomme CS -signaalin takaisin HIGH - tämä merkitsee jakson loppua - tässä tapauksessa komennon loppua. Samanlaista tekniikkaa käytetään, kun ohjataan useampaa kuin yhtä ketjuun kytkettyä matriisia. Seuraava vaihe, ennen kuin aloitamme LED -valojen sytyttämisen ja sammuttamisen, on MAX7219 -ohjaimen alustaminen. Tämä tehdään kirjoittamalla tietyt arvot tiettyihin rekistereihin. Kätevyyden vuoksi koodatessamme voisimme laittaa alustusjärjestyksen matriisiin.

uint8_t initseq = {0x09, 0x00, // Dekooditilarekisteri, 00 = Ei dekoodausta 0x0a, 0x01, // Intensiteettirekisteri, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 näyttää kaikki rivit 0x0c, 0x01, // Sammutusrekisteri, 0x01 = Normaalikäyttö 0x0f, 0x00, // Näytön testirekisteri, 0x00 = Normaali toiminta};

Meidän on vain lähetettävä yllä olevat 5 komentoa järjestyksessä osoite/datapareina. Seuraava vaihe - LED -valojen sytyttäminen.

Tämä on hyvin yksinkertaista - kirjoitamme vain yhden komennon, jossa ensimmäinen tavu on osoite (0-7) ja toinen tavu on 8 bittiä, jotka edustavat rivin 8 LEDiä.

void max7219_row (uint8_t -osoite, uint8_t -tiedot) {if (address> = 1 && address <= 8) max7219_word (osoite, data); }

On tärkeää huomata, että tämä toimii vain yhdellä matriisilla. Jos yhdistämme ketjuun enemmän matriiseja, ne kaikki näyttävät samat tiedot. Syynä tähän on se, että komennon lähettämisen jälkeen tuomme CS -signaalin takaisin HIGH: iin, mikä saa kaikki ketjun MAX7219 -ohjaimet lukkiutumaan ja näyttämään mitä tahansa viimeistä komentoa.

Suositeltava: