Tartalomjegyzék:

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

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

Videó: Hogyan csatlakoztassunk egy MAX7219 meghajtású LED -mátrixot 8x8 ATtiny85 mikrokontrollerrel: 7 lépés
Videó: Hogyan csatlakoztassunk egy ps3 at Wifihez 2024, Július
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: