Turinys:

Kaip sujungti MAX7219 varomą LED matricą 8x8 su ATtiny85 mikrovaldikliu: 7 žingsniai
Kaip sujungti MAX7219 varomą LED matricą 8x8 su ATtiny85 mikrovaldikliu: 7 žingsniai

Video: Kaip sujungti MAX7219 varomą LED matricą 8x8 su ATtiny85 mikrovaldikliu: 7 žingsniai

Video: Kaip sujungti MAX7219 varomą LED matricą 8x8 su ATtiny85 mikrovaldikliu: 7 žingsniai
Video: Kaip sujungti akis į ratą 2024, Liepa
Anonim
Kaip prijungti MAX7219 varomą LED matricą 8x8 su ATtiny85 mikrovaldikliu
Kaip prijungti MAX7219 varomą LED matricą 8x8 su ATtiny85 mikrovaldikliu

MAX7219 valdiklį gamina „Maxim Integrated“yra kompaktiška, nuoseklaus įvesties/išvesties bendrojo katodo ekrano tvarkyklė, galinti prijungti mikrovaldiklius prie 64 atskirų šviesos diodų, 7 segmentų skaitmeniniai LED ekranai iki 8 skaitmenų, juostiniai grafikai ir kt. -mikroschema yra BCD kodo B dekoderis, daugybinio nuskaitymo grandinė, segmentų ir skaitmenų tvarkyklės ir 8 × 8 statinė RAM, kurioje saugomi kiekvienas skaitmuo.

MAX7219 modulius labai patogu naudoti su tokiais mikrovaldikliais kaip ATtiny85 arba, mūsų atveju, su Tinusaur Board.

1 žingsnis: Aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra

MAX7219 moduliai paprastai atrodo taip. Jie turi įvesties magistralę vienoje pusėje ir išvesties magistralę kitoje. Tai leidžia sujungti 2 ar daugiau modulių grandinę, t. Y. Vieną po kitos, kad būtų sukurtos sudėtingesnės sąrankos.

Mūsų naudojami moduliai gali būti sujungti grandine naudojant 5 mažus trumpiklius. Žiūrėkite paveikslėlį žemiau.

2 žingsnis: „Pinout“ir signalai

MAX7219 modulis turi 5 kaiščius:

  • VCC - galia (+)
  • GND-žemė (-)
  • DIN - duomenų įvedimas
  • CS - lusto pasirinkimas
  • CLK - laikrodis

Tai reiškia, kad moduliui valdyti mums reikia 3 kaiščių ATtiny85 mikrovaldiklio pusėje. Tai bus:

  • PB0 - prijungtas prie CLK
  • PB1 - prijungtas prie CS
  • PB2 - prijungtas prie DIN

To pakanka norint prisijungti prie MAX7219 modulio ir jį užprogramuoti.

3 žingsnis: protokolas

Protokolas
Protokolas

Bendravimas su MAX7219 yra gana lengvas - jame naudojamas sinchroninis protokolas, o tai reiškia, kad kiekvienam siunčiamam duomenų bitui yra nustatytas laikrodžio ciklas, kuris reiškia, kad yra tas duomenų bitas.

Kitaip tariant, bitams siunčiame 2 lygiagrečias sekas - vieną laikrodžiui, kitą - duomenims. Tai daro programinė įranga.

4 žingsnis: programinė įranga

Programinė įranga
Programinė įranga

Šis MAX7219 modulis veikia taip:

  • Į vidinį registrą įrašome baitus.
  • MAX7219 interpretuoja duomenis.
  • MAX7219 valdo matricos šviesos diodus.

Tai taip pat reiškia, kad mums nereikia visą laiką sukti šviesos diodų masyvo, kad juos užsidegtume - MAX7219 valdiklis tuo rūpinasi. Tai taip pat galėtų valdyti šviesos diodų intensyvumą.

Taigi, norėdami patogiai naudoti MAX7219 modulius, mums reikia tam reikalingų funkcijų bibliotekos.

Pirma, mums reikia kai kurių pagrindinių funkcijų, kad galėtume rašyti į MAX7219 registrus.

  • Įrašomas baitas į MAX7219.
  • Žodžio (2 baitų) įrašymas į MAX7219.

Funkcija, kuri valdikliui rašo vieną baitą, atrodo taip:

void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Nustatykite CLK į LOW, jei (duomenys & 0x80) // Užmaskuokite duomenų MSB PORTB | = (1 << MAX7219_DIN); // Nustatykite DIN į HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Nustatykite DIN į LOW PORTB | = (1 << MAX7219_CLK); // Nustatykite CLK į HIGH data << = 1; // Perkelti į kairę}}

Dabar, kai galime siųsti baitus į MAX7219, galime pradėti siųsti komandas. Tai daroma siunčiant 2 byes - 1 - vidinio registro adresas ir 2 - duomenys, kuriuos norėtume siųsti.

MAX7219 valdiklyje yra daugiau nei keliolika registrų.

Komandos ar žodžio siuntimas iš esmės yra 2 baitų iš eilės siuntimas. Funkcijos įgyvendinimas yra labai paprastas.

void max7219_word (uint8_t adresas, uint8_t duomenys) {PORTB & = ~ (1 << MAX7219_CS); // Nustatykite CS į LOW max7219_byte (adresas); // Siunčiamas adresas max7219_byte (duomenys); // Duomenų siuntimas PORTB | = (1 << MAX7219_CS); // Nustatykite CS į HIGH PORTB & = ~ (1 << MAX7219_CLK); // Nustatyti CLK kaip LOW}

Čia svarbu pažymėti eilutę, kurioje CS signalas grąžinamas į HIGH - tai žymi sekos pabaigą - šiuo atveju komandos pabaigą. Panaši technika naudojama valdant daugiau nei vieną grandinę sujungtą matricą. Kitas žingsnis, prieš pradedant įjungti ir išjungti šviesos diodus, yra inicijuoti MAX7219 valdiklį. Tai daroma įrašant tam tikras vertes į tam tikrus registrus. Kad būtų patogiau, koduojant galėtume įdėti inicijavimo seką į masyvą.

uint8_t initseq = {0x09, 0x00, // Dekodavimo režimo registras, 00 = Nėra dekodavimo 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07, kad būtų rodomos visos eilutės 0x0c, 0x01, // Išjungimo registras, 0x01 = Įprastas veikimas 0x0f, 0x00, // Rodymo testų registras, 0x00 = Įprastas veikimas};

Mes tiesiog turime išsiųsti 5 aukščiau pateiktas komandas iš eilės kaip adreso/duomenų poros. Kitas žingsnis - apšviesti šviesos diodų eilutę.

Tai labai paprasta - mes tiesiog parašome vieną komandą, kurioje 1 baitas yra adresas (nuo 0 iki 7), o antrasis baitas yra 8 bitai, vaizduojantys 8 šviesos diodus iš eilės.

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

Svarbu pažymėti, kad tai veiks tik 1 matricai. Jei grandinėje sujungsime daugiau matricų, jos visos rodys tuos pačius duomenis. Priežastis ta, kad išsiuntę komandą CS signalą grąžiname į HIGH, todėl visi grandinės MAX7219 valdikliai užsifiksuoja ir parodo paskutinę komandą.

Rekomenduojamas: