Obsah:

Jak propojit matici LED řízenou MAX7219 8x8 s mikrokontrolérem ATtiny85: 7 kroků
Jak propojit matici LED řízenou MAX7219 8x8 s mikrokontrolérem ATtiny85: 7 kroků

Video: Jak propojit matici LED řízenou MAX7219 8x8 s mikrokontrolérem ATtiny85: 7 kroků

Video: Jak propojit matici LED řízenou MAX7219 8x8 s mikrokontrolérem ATtiny85: 7 kroků
Video: OpenAlt 2018: Petr Stehlík - WiFi informační LEDový systém 2024, Listopad
Anonim
Jak propojit matici LED řízenou MAX7219 8x8 s mikrokontrolérem ATtiny85
Jak propojit matici LED řízenou MAX7219 8x8 s mikrokontrolérem ATtiny85

Ř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

Hardware
Hardware
Hardware
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

Protokol
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

Software
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: