Hogyan csatlakoztassunk egy MAX7219 meghajtású LED -mátrixot 8x8 ATtiny85 mikrokontrollerrel: 7 lépés
Hogyan csatlakoztassunk egy MAX7219 meghajtású LED -mátrixot 8x8 ATtiny85 mikrokontrollerrel: 7 lépés
Anonim
Hogyan kell csatlakoztatni egy MAX7219 meghajtású LED mátrixot 8x8 ATtiny85 mikrokontrollerrel
Hogyan kell csatlakoztatni egy MAX7219 meghajtású LED mátrixot 8x8 ATtiny85 mikrokontrollerrel

A MAX7219 vezérlőt a Maxim gyártja. Integrált, kompakt, soros bemeneti/kimeneti közös katódos megjelenítő-illesztőprogram, amely a mikrovezérlőket 64 egyedi LED-hez, 7 szegmenses, legfeljebb 8 számjegyű LED-kijelzőhöz, oszlopdiagramos kijelzőhöz stb. Csatlakoztathatja. -chip egy BCD kód-B dekódoló, multiplex szkennelési áramkör, szegmens- és számjegy-illesztőprogramok, valamint egy 8 × 8-as statikus RAM, amely minden számjegyet tárol.

A MAX7219 modulok nagyon kényelmesen használhatók olyan mikrovezérlőkkel, mint az ATtiny85, vagy esetünkben a Tinusaur Board.

1. lépés: A hardver

A hardver
A hardver
A hardver
A hardver

A MAX7219 modulok általában így néznek ki. Az egyik oldalon bemeneti busz, a másikon kimeneti busz van. Ez lehetővé teszi a 2 vagy több modul láncának szétválasztását, azaz egymás után, bonyolultabb beállítások létrehozása érdekében.

Az általunk használt modulok 5 kis jumper segítségével láncba köthetők. Lásd az alábbi képet.

2. lépés: Pinout és jelek

A MAX7219 modul 5 tűvel rendelkezik:

  • VCC - teljesítmény (+)
  • GND-föld (-)
  • DIN - Adatbevitel
  • CS - Chip select
  • CLK - Óra

Ez azt jelenti, hogy a modul vezérléséhez 3 csapra van szükségünk az ATtiny85 mikrokontroller oldalán. Ezek lesznek:

  • PB0 - csatlakozik a CLK -hoz
  • PB1 - csatlakozik a CS -hez
  • PB2 - csatlakozik a DIN -hez

Ez elegendő a MAX7219 modulhoz való csatlakozáshoz és programozásához.

3. lépés: A protokoll

A jegyzőkönyv
A jegyzőkönyv

A MAX7219 kommunikációja viszonylag egyszerű - szinkron protokollt használ, ami azt jelenti, hogy minden küldött adatbithez van egy órajel, amely jelzi az adott bit jelenlétét.

Más szóval, 2 párhuzamos sorozatot küldünk bitekre - egyet az órára, a másikat az adatokra. Ezt teszi a szoftver.

4. lépés: A szoftver

A szoftver
A szoftver

Ez a MAX7219 modul így működik:

  • Bájtokat írunk a belső regiszterébe.
  • A MAX7219 értelmezi az adatokat.
  • A MAX7219 vezérli a mátrix LED -jeit.

Ez azt is jelenti, hogy nem kell folyamatosan körbejárnunk a LED -ek tömbjét, hogy felgyújtsuk őket - a MAX7219 vezérlő gondoskodik erről. Ez is kezelheti a LED -ek intenzitását.

Tehát a MAX7219 modulok kényelmes használatához szükségünk van egy függvénykönyvtárra, amely ezt a célt szolgálja.

Először is szükségünk van néhány alapvető funkcióra ahhoz, hogy írjunk a MAX7219 regiszterekhez.

  • Bájt írása a MAX7219 -be.
  • Egy szó (2 bájt) írása a MAX7219 -be.

A függvény, amely egy bájtot ír a vezérlőhöz, így néz ki:

void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Állítsa a CLK -t LOW -ra, ha (data & 0x80) // Maszkolja az adatok MSB -jét PORTB | = (1 << MAX7219_DIN); // A DIN beállítása HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Állítsa a DIN értéket LOW PORTB | = (1 << MAX7219_CLK) értékre; // A CLK beállítása HIGH data << = 1; // Shift balra}}

Most, hogy bájtokat tudunk küldeni a MAX7219 -re, elkezdhetjük a parancsok küldését. Ez 2 bájt elküldésével történik - az első a belső regiszter címe, a második pedig az elküldeni kívánt adatok.

A MAX7219 vezérlőben több mint egy tucat regiszter található.

Egy parancs vagy szó küldése alapvetően 2 egymást követő bájt küldését jelenti. A funkció megvalósítása nagyon egyszerű.

void max7219_word (uint8_t cím, uint8_t adatok) {PORTB & = ~ (1 << MAX7219_CS); // A CS beállítása LOW max7219_byte (cím); // A cím küldése max7219_byte (adatok); // Az adatok küldése PORTB | = = (1 << MAX7219_CS); // A CS beállítása HIGH PORTB & = ~ (1 << MAX7219_CLK); // A CLK beállítása LOW értékre}

Itt fontos megjegyezni azt a sort, ahol visszahelyezzük a CS jelet a HIGH -ba - ez jelzi a sorozat végét - jelen esetben a parancs végét. Hasonló technikát alkalmaznak, ha egynél több láncba kapcsolt mátrixot vezérelnek. A következő lépés, mielőtt elkezdjük be- és kikapcsolni a LED -eket, a MAX7219 vezérlő inicializálása. Ez úgy történik, hogy bizonyos értékeket bizonyos regiszterekbe ír. A kényelem érdekében kódolás közben az inicializálási sorrendet egy tömbbe helyezhetjük.

uint8_t initseq = {0x09, 0x00, // Decode-Mode Register, 00 = No decode 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 az összes sor megjelenítéséhez 0x0c, 0x01, // Leállítási regiszter, 0x01 = Normál működés 0x0f, 0x00, // Kijelző-teszt regiszter, 0x00 = Normál működés};

Csak el kell küldenünk a fenti 5 parancsot sorrendben cím/adat párként. Következő lépés - egy sor LED világítása.

Ez nagyon egyszerű - csak egy parancsot írunk, ahol az első bájt a cím (0 -tól 7 -ig), a második bájt pedig a 8 bit, amely a sor 8 LED -jét képviseli.

void max7219_row (uint8_t cím, uint8_t adatok) {if (cím> = 1 && cím <= 8) max7219_word (cím, adat); }

Fontos megjegyezni, hogy ez csak 1 mátrix esetén fog működni. Ha több mátrixot kapcsolunk össze egy láncban, akkor mind ugyanazokat az adatokat jeleníti meg. Ennek az az oka, hogy a parancs elküldése után visszaállítjuk a CS jelet a HIGH -ra, ami a lánc összes MAX7219 vezérlőjét reteszeli, és azt mutatja, hogy mi volt az utolsó parancs.

Ajánlott: