Kazalo:

Kako povezati MAX7219 LED matriko 8x8 z mikrokontrolerjem ATtiny85: 7 korakov
Kako povezati MAX7219 LED matriko 8x8 z mikrokontrolerjem ATtiny85: 7 korakov

Video: Kako povezati MAX7219 LED matriko 8x8 z mikrokontrolerjem ATtiny85: 7 korakov

Video: Kako povezati MAX7219 LED matriko 8x8 z mikrokontrolerjem ATtiny85: 7 korakov
Video: Работа с iButton на Arduino. Дубликатор ключей iButton 2024, Julij
Anonim
Kako povezati MAX7219 LED matriko 8x8 z mikrokontrolerjem ATtiny85
Kako povezati MAX7219 LED matriko 8x8 z mikrokontrolerjem ATtiny85

Krmilnik MAX7219 izdeluje Maxim Integrated je kompakten, serijsko vhodno/izhodni gonilnik za skupno katodo, ki bi lahko povezal mikrokrmilnike s 64 posameznimi LED, 7-segmentne številske LED prikazovalnike do 8 mest, prikaze v obliki stolpcev itd. -chip so dekodirnik BCD kode-B, vezje za multipleksno skeniranje, gonilniki segmentov in številk ter 8 × 8 statični RAM, ki shrani vsako številko.

Moduli MAX7219 so zelo priročni za uporabo z mikrokrmilniki, kot je ATtiny85 ali v našem primeru plošča Tinusaur.

1. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Moduli MAX7219 običajno izgledajo tako. Na eni strani imajo vhodno vodilo, na drugi pa izhodno vodilo. To vam omogoča, da povežete 2 ali več modulov, torej enega za drugim, da ustvarite bolj zapletene nastavitve.

Moduli, ki jih uporabljamo, se lahko povežejo v verigo s pomočjo 5 majhnih mostov. Oglejte si spodnjo sliko.

Korak: Pinout in signali

Modul MAX7219 ima 5 zatičev:

  • VCC - moč (+)
  • GND-tla (-)
  • DIN - Vnos podatkov
  • CS - Izbira čipa
  • CLK - Ura

To pomeni, da za krmiljenje modula potrebujemo 3 nožice na strani mikrokrmilnika ATtiny85. To bodo:

  • PB0 - priključen na CLK
  • PB1 - povezan s CS
  • PB2 - priključen na DIN

To zadošča za povezavo z modulom MAX7219 in njegovo programiranje.

3. korak: Protokol

Protokol
Protokol

Komunikacija z MAX7219 je razmeroma enostavna - uporablja sinhroni protokol, kar pomeni, da za vsak podatkovni bit, ki ga pošljemo, obstaja cikel ure, ki označuje prisotnost tega podatkovnega bita.

Z drugimi besedami, pošiljamo 2 vzporedna zaporedja v bite - eno za uro in drugo za podatke. To počne programska oprema.

4. korak: programska oprema

Programska oprema
Programska oprema

Način delovanja tega modula MAX7219 je naslednji:

  • Bajte zapisujemo v njegov notranji register.
  • MAX7219 razlaga podatke.
  • MAX7219 krmili LED v matriki.

To tudi pomeni, da nam ni treba ves čas krožiti po nizu LED, da bi jih prižgali - za to skrbi krmilnik MAX7219. Prav tako bi lahko upravljal intenzivnost LED.

Torej, za uporabo modulov MAX7219 na priročen način potrebujemo knjižnico funkcij za ta namen.

Najprej potrebujemo nekaj osnovnih funkcij za pisanje v registre MAX7219.

  • Pisanje bajta v MAX7219.
  • Pisanje besede (2 bajta) v MAX7219.

Funkcija, ki zapisuje en bajt v krmilnik, izgleda tako:

void max7219_byte (uint8_t podatki) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // CLK nastavimo na LOW if (data & 0x80) // Maskiramo MSB podatkov PORTB | = (1 << MAX7219_DIN); // DIN nastavite na HIGH else PORTB & = ~ (1 << MAX7219_DIN); // DIN nastavite na LOW PORTB | = (1 << MAX7219_CLK); // CLK nastavimo na HIGH data << = 1; // pomik v levo}}

Zdaj, ko lahko pošljemo bajte na MAX7219, lahko začnemo pošiljati ukaze. To storite tako, da pošljete 2 bye - prvi za naslov notranjega registra in drugi za podatke, ki jih želimo poslati.

V krmilniku MAX7219 je več kot ducat registrov.

Pošiljanje ukaza ali besede je v bistvu pošiljanje 2 zaporednih bajtov. Funkcija, ki jo izvaja, je zelo preprosta.

void max7219_word (naslov uint8_t, podatki uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // CS nastavimo na LOW max7219_byte (naslov); // pošiljanje naslova max7219_byte (podatki); // Pošiljanje podatkov PORTB | = (1 << MAX7219_CS); // CS nastavimo na HIGH PORTB & = ~ (1 << MAX7219_CLK); // Nastavi CLK na LOW}

Pri tem je pomembno opozoriti na vrstico, kjer signal CS vrnemo na HIGH - to označuje konec zaporedja - v tem primeru konec ukaza. Podobna tehnika se uporablja pri krmiljenju več kot ene matrike, povezane v verigo. Naslednji korak, preden začnemo vklapljati in izklapljati LED, je inicializirati krmilnik MAX7219. To se naredi s pisanjem določenih vrednosti v določene registre. Za lažje kodiranje lahko zaporedje inicializacije postavimo v matriko.

uint8_t initseq = {0x09, 0x00, // Register načina dekodiranja, 00 = Brez dekodiranja 0x0a, 0x01, // Register intenzivnosti, 0x00.. 0x0f 0x0b, 0x07, // Register omejenega skeniranja, 0x07 za prikaz vseh vrstic 0x0c, 0x01, // Register za zaustavitev, 0x01 = Normalno delovanje 0x0f, 0x00, // Prikaz-testni register, 0x00 = Normalno delovanje};

Moramo poslati zgoraj navedenih 5 ukazov v zaporedju kot par naslovov/podatkov. Naslednji korak - osvetlitev vrstice LED.

To je zelo preprosto - napišemo samo en ukaz, kjer je 1. bajt naslov (od 0 do 7), 2. bajt pa 8 bitov, ki predstavljajo 8 LED v vrstici.

void max7219_row (uint8_t naslov, uint8_t podatki) {if (naslov> = 1 && naslov <= 8) max7219_word (naslov, podatki); }

Pomembno je omeniti, da bo to delovalo samo za 1 matriko. Če v verigo povežemo več matrik, bodo vse prikazale iste podatke. Razlog za to je, da po pošiljanju ukaza umaknemo signal CS nazaj na HIGH, zaradi česar se vsi krmilniki MAX7219 v verigi zaskočijo in prikažejo, kar je bil zadnji ukaz.

Priporočena: