Obsah:
Video: Jak propojit matici LED řízenou MAX7219 8x8 s mikrokontrolérem ATtiny85: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Řadič MAX7219 vyrábí společnost Maxim Integrated je kompaktní ovladač sériového vstupu/výstupu se společnou katodou, který může propojit mikrokontroléry se 64 jednotlivými LED, 7segmentovými numerickými LED displeji s až 8 číslicemi, sloupcovými grafy atd. -chip jsou BCD kód-B dekodér, multiplexní skenovací obvody, segmentové a číselné ovladače a 8 × 8 statická RAM, která ukládá každou číslici.
Moduly MAX7219 jsou velmi vhodné pro použití s mikrokontroléry, jako je ATtiny85 nebo v našem případě deska Tinusaur.
Krok 1: Hardware
Moduly MAX7219 obvykle vypadají takto. Na jedné straně mají vstupní sběrnici a na druhé výstupní sběrnici. To vám umožní řetězit 2 nebo více modulů, tj. Jeden po druhém, za účelem vytvoření komplikovanějších nastavení.
Moduly, které používáme, se dokážou propojit v řetězci pomocí 5 malých propojek. Viz obrázek níže.
Krok 2: Pinout a signály
Modul MAX7219 má 5 pinů:
- VCC - výkon (+)
- GND-zem (-)
- DIN - Zadávání dat
- CS - Výběr čipu
- CLK - Hodiny
To znamená, že k ovládání modulu potřebujeme 3 piny na straně mikrokontroléru ATtiny85. To budou:
- PB0 - připojeno k CLK
- PB1 - připojeno k CS
- PB2 - připojeno k DIN
To stačí k připojení k modulu MAX7219 a jeho naprogramování.
Krok 3: Protokol
Komunikace s MAX7219 je poměrně snadná - používá synchronní protokol, což znamená, že pro každý odeslaný datový bit existuje hodinový cyklus, který znamená přítomnost tohoto datového bitu.
Jinými slovy, posíláme 2 paralelní sekvence na bity - jednu pro hodiny a druhou pro data. To je to, co software dělá.
Krok 4: Software
Tento modul MAX7219 funguje takto:
- Zapisujeme bajty do jeho interního registru.
- MAX7219 interpretuje data.
- MAX7219 ovládá LED diody v matici.
To také znamená, že nemusíme neustále kroužit v řadě LED diod, abychom je rozsvítili - o to se stará ovladač MAX7219. Mohlo by to také řídit intenzitu LED.
Abychom mohli pohodlně používat moduly MAX7219, potřebujeme k tomu účelu knihovnu funkcí.
Nejprve potřebujeme některé základní funkce, abychom mohli zapisovat do registrů MAX7219.
- Zápis bajtu do MAX7219.
- Zápis slova (2 bajty) do MAX7219.
Funkce, která zapisuje jeden bajt do řadiče, vypadá takto:
neplatné max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Nastavte CLK na LOW if (data & 0x80) // Mask the MSB of the data PORTB | = (1 << MAX7219_DIN); // Nastavit DIN na HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Nastavit DIN na LOW PORTB | = (1 << MAX7219_CLK); // Nastavit CLK na VYSOKÁ data << = 1; // Posun doleva}}
Nyní, když můžeme poslat bajty na MAX7219, můžeme začít odesílat příkazy. To se provádí odesláním 2 bajtů - 1. pro adresu interního registru a 2. pro data, která chceme odeslat.
V řadiči MAX7219 je více než tucet registrů.
Odeslání příkazu nebo slova v zásadě znamená odeslání 2 po sobě jdoucích bytů. Implementace funkce je velmi jednoduchá.
neplatné max7219_word (adresa uint8_t, data uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Nastav CS na LOW max7219_byte (adresa); // Odeslání adresy max7219_byte (data); // Odesílání dat PORTB | = (1 << MAX7219_CS); // Nastav CS na HIGH PORTB & = ~ (1 << MAX7219_CLK); // Nastavit CLK na LOW}
Je důležité si zde všimnout řádku, kde přivedeme signál CS zpět na HIGH - to znamená konec sekvence - v tomto případě konec příkazu. Podobná technika se používá při ovládání více než jedné matice připojené v řetězci. Dalším krokem, než začneme zapínat a vypínat diody LED, je inicializace ovladače MAX7219. To se provádí zápisem určitých hodnot do určitých registrů. Pro pohodlí bychom při jeho kódování mohli dát inicializační sekvenci do pole.
uint8_t initseq = {0x09, 0x00, // Register-Decode-Mode Register, 00 = No decode 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 to show all lines 0x0c, 0x01, // Vypínací registr, 0x01 = normální provoz 0x0f, 0x00, // testovací registr zobrazení, 0x00 = normální provoz};
Potřebujeme poslat výše uvedených 5 příkazů v pořadí jako páry adresa/data. Další krok - rozsvícení řady LED diod.
To je velmi jednoduché - napíšeme pouze jeden příkaz, kde 1. byte je adresa (od 0 do 7) a 2. byte je 8 bitů představujících 8 LED v řádku.
neplatné max7219_row (adresa uint8_t, data uint8_t) {if (adresa> = 1 && adresa <= 8) max7219_word (adresa, data); }
Je důležité si uvědomit, že to bude fungovat pouze pro 1 matici. Pokud spojíme více matic v řetězci, budou všechny zobrazovat stejná data. Důvodem je to, že po odeslání příkazu vrátíme signál CS zpět na HIGH, což způsobí zablokování všech řadičů MAX7219 v řetězci a zobrazení jakéhokoli posledního příkazu.
Doporučuje:
Jak používat bodovou matici Max7219 8x8 s „skiiiD“: 9 kroků
Jak používat Max7219 8x8 Dot Matrix s „skiiiD“: Toto je video instrukce Max7219 8x8 Dot Matrix přes „skiiiD“Před začátkem níže je základní návod, jak používat skiiiDhttps: //www.instructables.com/id /Začínáme-W
Jak vytvořit 8x8 VELKOU LED matici (MAX7219 LED 10 mm): 9 kroků (s obrázky)
Jak vytvořit 8x8 VELKOU LED matici (MAX7219 LED 10 mm): Pracovali jste s již připravenou maticí 8x8 LED jako displeje? Přicházejí v různých velikostech a je docela zajímavé s nimi pracovat. Velká snadno dostupná velikost je přibližně 60 mm x 60 mm. Pokud však hledáte mnohem větší hotovou matici LED
Jak propojit dvouosý joystick s Arduino Uno: 5 kroků
Jak propojit dvouosý joystick s Arduino Uno: Zde propojíme jeden joystick duelové osy s arduino uno. Tento joystick má dva analogové piny pro osu x a osu y a jeden digitální pin pro přepínač
Jak propojit modul GPS (NEO-6m) s Arduino: 7 kroků (s obrázky)
Jak propojit modul GPS (NEO-6m) s Arduino: V tomto projektu jsem ukázal, jak propojit modul GPS s Arduino UNO. Údaje o zeměpisné délce a šířce se zobrazují na LCD displeji a polohu lze zobrazit v aplikaci. Seznam materiálu Arduino Uno == > 8 $ GPS modul Ublox NEO-6m GPS == > 15 $ 16x
Jak propojit 16x4 LCD s Arduinem: 6 kroků
Jak propojit 16x4 LCD s Arduinem: Úvod Nedávno jsem obdržel nějaké bezplatné vzorky LCD od svých přátel na FocusLCDs.com. Jedním z nich je LCD 16x4; P/N: C164AXBSYLY6WT. Používá ovladač ST7066U (viz technický list zde) namísto HD44780, který se běžně vyskytuje v LCD stíněních. Nejsem