Përmbajtje:

Si të ndërlidhni një matricë LED të drejtuar MAX7219 8x8 me mikrokontrollues ATtiny85: 7 hapa
Si të ndërlidhni një matricë LED të drejtuar MAX7219 8x8 me mikrokontrollues ATtiny85: 7 hapa

Video: Si të ndërlidhni një matricë LED të drejtuar MAX7219 8x8 me mikrokontrollues ATtiny85: 7 hapa

Video: Si të ndërlidhni një matricë LED të drejtuar MAX7219 8x8 me mikrokontrollues ATtiny85: 7 hapa
Video: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 2024, Korrik
Anonim
Si të ndërlidhni një matricë LED të drejtuar MAX7219 8x8 me mikrokontrollues ATtiny85
Si të ndërlidhni një matricë LED të drejtuar MAX7219 8x8 me mikrokontrollues ATtiny85

Kontrolluesi MAX7219 është prodhuar nga Maxim Integrated është kompakt, hyrje/dalje serike drejtues i ekranit të katodës së zakonshme që mund të ndërlidhë mikrokontrolluesit me 64 LED individuale, ekrane LED me numra 7 segmentesh deri në 8 shifra, ekrane me shirita, etj. Të përfshira në -çipi është një dekoder kodik B-BCD, qark skanimi me shumë pleks, drejtues segmentesh dhe shifrash dhe një RAM statik 8 × 8 që ruan çdo shifër.

Modulet MAX7219 janë shumë të përshtatshëm për t'u përdorur me mikrokontrollues të tillë si ATtiny85, ose, në rastin tonë Bordi Tinusaur.

Hapi 1: Hardueri

Hardueri
Hardueri
Hardueri
Hardueri

Modulet MAX7219 zakonisht duken kështu. Ata kanë një autobus hyrës në njërën anë dhe autobus dalës në anën tjetër. Kjo ju lejon të lidhni zinxhir 2 ose më shumë module, domethënë njëri pas tjetrit, në mënyrë që të krijoni konfigurime më të komplikuara.

Modulet që ne po përdorim janë të aftë të lidhen në një zinxhir duke përdorur 5 kërcyes të vegjël. Shikoni foton më poshtë.

Hapi 2: Pinout dhe Sinjalet

Moduli MAX7219 ka 5 kunja:

  • VCC - fuqia (+)
  • GND-terren (-)
  • DIN - Futja e të dhënave
  • CS - Chip select
  • CLK - Ora

Kjo do të thotë që ne kemi nevojë për 3 kunja në anën e mikrokontrolluesit ATtiny85 për të kontrolluar modulin. Ato do të jenë:

  • PB0 - i lidhur me CLK
  • PB1 - i lidhur me CS
  • PB2 - i lidhur me DIN

Kjo është e mjaftueshme për t'u lidhur me modulin MAX7219 dhe për ta programuar atë.

Hapi 3: Protokolli

Protokolli
Protokolli

Komunikimi me MAX7219 është relativisht i lehtë - ai përdor një protokoll sinkron që do të thotë se për çdo bit të dhënash që dërgojmë ka një cikël sahati që nënkupton praninë e atij biti të të dhënave.

Me fjalë të tjera, ne dërgojmë 2 sekuenca paralele në bit - një për orën dhe një tjetër për të dhënat. Kjo është ajo që bën softueri.

Hapi 4: Softueri

Softueri
Softueri

Mënyra se si funksionon ky modul MAX7219 është kjo:

  • Ne shkruajmë byte në regjistrin e tij të brendshëm.
  • MAX7219 interpreton të dhënat.
  • MAX7219 kontrollon LED -të në matricë.

Kjo gjithashtu do të thotë që ne nuk duhet të rrethohemi nëpër grupin e LED -ve gjatë gjithë kohës në mënyrë që t'i ndriçojmë ato - kontrolluesi MAX7219 kujdeset për këtë. Gjithashtu mund të menaxhojë intensitetin e LED -ve.

Pra, për të përdorur modulet MAX7219 në një mënyrë të përshtatshme, ne kemi nevojë për një bibliotekë të funksioneve për t'i shërbyer atij qëllimi.

Së pari, ne kemi nevojë për disa funksione themelore në mënyrë që të shkruajmë në regjistrat MAX7219.

  • Shkrimi i një bajti në MAX7219.
  • Shkrimi i një fjale (2 bajt) në MAX7219.

Funksioni që i shkruan një bajt kontrolluesit duket kështu:

pavlefshme max7219_bit (të dhëna uint8_t) {për (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK]; // Vendosni CLK në LOW nëse (të dhëna & 0x80) // Maskoni MSB -në e të dhënave PORTB | = (1 << MAX7219_DIN); // Vendosni DIN në HIGH else PORTB & = ~ (1 << MAX7219_DIN]; // Vendosni DIN në LOW PORTB | = (1 << MAX7219_CLK]; // Vendos CLK në të dhëna HIGH << = 1; // Kalo në të majtë}}

Tani që ne mund të dërgojmë byte në MAX7219 ne mund të fillojmë të dërgojmë komanda. Kjo bëhet duke dërguar 2 bye - e para për adresën e regjistrit të brendshëm dhe e dyta për të dhënat që duam të dërgojmë.

Ka më shumë se një duzinë regjistrash në kontrolluesin MAX7219.

Dërgimi i një komande, ose një fjale, është në thelb dërgimi i 2 bajtëve të njëpasnjëshëm. Funksioni që zbatohet është shumë i thjeshtë.

pavlefshme max7219_word (adresa uint8_t, të dhëna uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Vendosni CS në LOW max7219_byte (adresa); // Dërgimi i adresës max7219_byte (të dhëna); // Dërgimi i të dhënave PORTB | = (1 << MAX7219_CS); // Vendosni CS në HIGH PORTB & = ~ (1 << MAX7219_CLK]; // Vendos CLK në LOW}

Isshtë e rëndësishme të theksohet këtu rreshti ku e kthejmë sinjalin CS në HIGH - kjo shënon fundin e sekuencës - në këtë rast, fundin e komandës. Një teknikë e ngjashme përdoret kur kontrolloni më shumë se një matricë të lidhur në një zinxhir. Hapi tjetër, para se të fillojmë të ndezim dhe fikim LED -të, është të fillojmë kontrolluesin MAX7219. Kjo bëhet duke shkruar vlera të caktuara në regjistra të caktuar. Për lehtësi, gjatë kodimit të tij ne mund të vendosim sekuencën e fillimit në një grup.

uint8_t initseq = {0x09, 0x00, // Regjistro në modalitetin e deshifrimit, 00 = Pa dekodim 0x0a, 0x01, // Regjistri i intensitetit, 0x00.. 0x0f 0x0b, 0x07, // Regjistri i skanimit-limit, 0x07 për të treguar të gjitha rreshtat 0x0c, 0x01, // Regjistri i fikjes, 0x01 = Funksionimi Normal 0x0f, 0x00, // Regjistri i Test-Testit, 0x00 = Funksionimi Normal};

Ne vetëm duhet të dërgojmë 5 komandat e mësipërme në një sekuencë si çifte adresash/të dhënash. Hapi tjetër - ndriçimi i një rreshti LED.

Kjo është shumë e thjeshtë - ne thjesht shkruajmë një komandë ku bajti i parë është adresa (nga 0 në 7) dhe bajti i dytë është 8 bitët që përfaqësojnë 8 LED në rresht.

pavlefshme max7219_row (uint8_t adresa, uint8_t data) {if (adresa> = 1 && adresa <= 8) max7219_word (adresa, të dhënat); }

Shtë e rëndësishme të theksohet se kjo do të funksionojë vetëm për 1 matricë. Nëse lidhim më shumë matrica në një zinxhir, të gjitha do të tregojnë të njëjtat të dhëna. Arsyeja për këtë është se pas dërgimit të komandës ne e kthejmë sinjalin CS në HIGH i cili bën që të gjithë kontrolluesit MAX7219 në zinxhir të fiksohen dhe të tregojnë çfarëdo që ishte komanda e fundit.

Recommended: