Orodha ya maudhui:

Jinsi ya Kuingiliana na Matrix 8x8 inayoendeshwa na MAX7219 Na ATtiny85 Microcontroller: Hatua 7
Jinsi ya Kuingiliana na Matrix 8x8 inayoendeshwa na MAX7219 Na ATtiny85 Microcontroller: Hatua 7

Video: Jinsi ya Kuingiliana na Matrix 8x8 inayoendeshwa na MAX7219 Na ATtiny85 Microcontroller: Hatua 7

Video: Jinsi ya Kuingiliana na Matrix 8x8 inayoendeshwa na MAX7219 Na ATtiny85 Microcontroller: Hatua 7
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Julai
Anonim
Jinsi ya Kuingiliana na Matrix 8x8 inayoendeshwa na MAX7219 Na ATtiny85 Microcontroller
Jinsi ya Kuingiliana na Matrix 8x8 inayoendeshwa na MAX7219 Na ATtiny85 Microcontroller

Mdhibiti wa MAX7219 hutengenezwa na Maxim Jumuishi ni kompakt, pembejeo la serial / dereva wa kawaida-cathode dereva anayeweza kuidhibiti wadhibiti kwa LED za kibinafsi za 64, sehemu-7 za maonyesho ya nambari za LED za hadi tarakimu 8, maonyesho ya bar-graph, n.k. pamoja na -chip ni kificho cha BCD kificho-B, mizunguko ya skanisho nyingi, sehemu na madereva ya tarakimu na 8 × 8 tuli ya RAM ambayo huhifadhi kila tarakimu.

Moduli za MAX7219 ni rahisi sana kutumia na wadhibiti wadogo kama ATtiny85, au, kwa upande wetu Bodi ya Tinusaur.

Hatua ya 1: Vifaa

Vifaa
Vifaa
Vifaa
Vifaa

Moduli MAX7219 kawaida huonekana kama hii. Wana basi ya kuingiza upande mmoja na basi ya pato kwa upande mwingine. Hii hukuruhusu kuweka mnyororo wa moduli 2 au moduli zaidi, kwa mfano, moja baada ya nyingine, ili kuunda usanidi ngumu zaidi.

Moduli ambazo tunatumia zinauwezo wa kuunganisha kwenye mlolongo kwa kutumia viruka 5 vidogo. Tazama picha hapa chini.

Hatua ya 2: Pinout na Ishara

Moduli ya MAX7219 ina pini 5:

  • VCC - nguvu (+)
  • GND - ardhi (-)
  • DIN - Uingizaji wa data
  • CS - Chip chagua
  • CLK - Saa

Hiyo inamaanisha kuwa tunahitaji pini 3 kwa upande wa ATtiny85 microcontroller kudhibiti moduli. Hizo zitakuwa:

  • PB0 - imeunganishwa na CLK
  • PB1 - imeunganishwa na CS
  • PB2 - imeunganishwa na DIN

Hii ni ya kutosha kuungana na moduli ya MAX7219 na kuipanga.

Hatua ya 3: Itifaki

Itifaki
Itifaki

Kuwasiliana na MAX7219 ni rahisi sana - hutumia itifaki inayolingana ambayo inamaanisha kuwa kwa kila data kidogo tunayotuma kuna mzunguko wa saa ambao unaashiria uwepo wa data hiyo kidogo.

Kwa maneno mengine, tunatuma mfuatano 2 unaofanana kwa bits - moja kwa saa na nyingine kwa data. Hii ndio programu inafanya.

Hatua ya 4: Programu

Programu
Programu

Njia ambayo moduli hii ya MAX7219 inafanya kazi ni hii:

  • Tunaandika ka kwa rejista yake ya ndani.
  • MAX7219 hutafsiri data.
  • MAX7219 inadhibiti LED kwenye tumbo.

Hiyo inamaanisha pia kwamba sio lazima tuzunguke kupitia safu ya LED kila wakati ili kuwasha - mtawala wa MAX7219 anajali hiyo. Inaweza pia kudhibiti ukubwa wa LEDs.

Kwa hivyo, kutumia moduli za MAX7219 kwa njia rahisi tunahitaji maktaba ya kazi kutimiza kusudi hilo.

Kwanza, tunahitaji kazi kadhaa za msingi ili kuandika kwa rejista za MAX7219.

  • Kuandika baiti kwa MAX7219.
  • Kuandika neno (2 ka) kwa MAX7219.

Kazi inayoandika baiti moja kwa mdhibiti inaonekana kama hii:

batili max7219_byte (data uint8_t) {kwa (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Weka CLK hadi chini ikiwa (data & 0x80) // Ficha MSB ya data PORTB | = (1 << MAX7219_DIN); // Weka DIN kwa HIGH nyingine PORTB & = ~ (1 << MAX7219_DIN); // Weka DIN kwenye PORTB ya chini | = (1 << MAX7219_CLK); // Weka CLK kwa data ya juu << = 1; // Shift kushoto}}

Sasa kwa kuwa tunaweza kutuma kaiti kwa MAX7219 tunaweza kuanza kutuma amri. Hii imefanywa kwa kutuma vidole 2 - 1 kwa anwani ya rejista ya ndani na ya 2 kwa data ambayo tungependa kutuma.

Kuna zaidi ya dazeni ya rejista katika kidhibiti cha MAX7219.

Kutuma amri, au neno, kimsingi ni kutuma kaiti 2 mfululizo. Utekelezaji wa kazi hiyo ni rahisi sana.

batili max7219_word (anwani ya uint8_t, data uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Weka CS kwa LOW max7219_byte (anwani); // Kutuma anwani max7219_byte (data); // Kutuma data PORTB | = (1 << MAX7219_CS); // Weka CS kwa HIGH PORTB & = ~ (1 << MAX7219_CLK); // Weka CLK kuwa CHINI}

Ni muhimu kutambua hapa mstari ambapo tunaleta ishara ya CS kurudi HIGH - hii inaashiria mwisho wa mlolongo - katika kesi hii, mwisho wa amri. Mbinu kama hiyo hutumiwa wakati wa kudhibiti zaidi tumbo moja iliyounganishwa kwenye mnyororo. Hatua inayofuata, kabla ya kuanza kuwasha na kuzima LED, ni kuanzisha mtawala wa MAX7219. Hii imefanywa kwa kuandika maadili fulani kwa madaftari fulani. Kwa urahisi, wakati tunaiandika tunaweza kuweka mlolongo wa uanzishaji katika safu.

uint8_t initseq] 0x0c, 0x01, // Daftari la Kuzima, 0x01 = Operesheni ya Kawaida 0x0f, 0x00, // Rejista ya Jaribio la Kuonyesha, 0x00 = Operesheni ya Kawaida};

Tunahitaji tu kutuma amri 5 hapo juu kwa mlolongo kama jozi za anwani / data. Hatua inayofuata - kuwasha safu za LED.

Hii ni rahisi sana - tunaandika tu amri moja ambapo 1 byte ni anwani (kutoka 0 hadi 7) na baiti ya 2 ni bits 8 zinazowakilisha LED 8 mfululizo.

void max7219_row (anwani ya uint8_t, data uint8_t) {ikiwa (anwani> = 1 && anwani <= 8) max7219_word (anwani, data); }

Ni muhimu kutambua kwamba hii itafanya kazi kwa tumbo 1 tu. Ikiwa tutaunganisha matrices zaidi katika mnyororo wote wataonyesha data sawa. Sababu ya hii ni kwamba baada ya kutuma agizo tunaleta ishara ya CS tena kwa HIGH ambayo inasababisha vidhibiti vyote vya MAX7219 kwenye mnyororo kukwama na kuonyesha chochote amri ya mwisho ilikuwa.

Ilipendekeza: