Satura rādītājs:

Kā savienot ar MAX7219 vadāmu LED matricu 8x8 ar ATtiny85 mikrokontrolleri: 7 soļi
Kā savienot ar MAX7219 vadāmu LED matricu 8x8 ar ATtiny85 mikrokontrolleri: 7 soļi

Video: Kā savienot ar MAX7219 vadāmu LED matricu 8x8 ar ATtiny85 mikrokontrolleri: 7 soļi

Video: Kā savienot ar MAX7219 vadāmu LED matricu 8x8 ar ATtiny85 mikrokontrolleri: 7 soļi
Video: Светодиодный DVD-дисплей и Arduino Nano (основы семисегментного светодиодного дисплея) 2024, Jūnijs
Anonim
Kā savienot ar MAX7219 vadāmu LED matricu 8x8 ar ATtiny85 mikrokontrolleri
Kā savienot ar MAX7219 vadāmu LED matricu 8x8 ar ATtiny85 mikrokontrolleri

MAX7219 kontrolieri ražo uzņēmums Maxim Integrated ir kompakts, sērijveida ieejas/izejas kopējā katoda displeja draiveris, kas var savienot mikrokontrolleru ar 64 atsevišķām gaismas diodēm, 7 segmentu ciparu LED displejiem līdz 8 cipariem, joslu diagrammas displejiem utt. -čips ir BCD koda B dekodētājs, multipleksās skenēšanas shēmas, segmentu un ciparu draiveri un 8 × 8 statiskā RAM, kas saglabā katru ciparu.

MAX7219 moduļus ir ļoti ērti lietot ar tādiem mikrokontrolleriem kā ATtiny85 vai, mūsu gadījumā, ar Tinusaur Board.

1. darbība: aparatūra

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

MAX7219 moduļi parasti izskatās šādi. Viņiem ir ieejas kopne vienā pusē un izejas kopne otrā. Tas ļauj jums ieslēgt 2 vai vairāk moduļu ķēdi, t.i., vienu pēc otra, lai izveidotu sarežģītākus iestatījumus.

Mūsu izmantotie moduļi ir savienojami ķēdē, izmantojot 5 mazus džemperus. Skatiet attēlu zemāk.

2. darbība. Pinout un signāli

MAX7219 modulim ir 5 tapas:

  • VCC - jauda (+)
  • GND-zeme (-)
  • DIN - datu ievade
  • CS - mikroshēmas izvēle
  • CLK - pulkstenis

Tas nozīmē, ka, lai kontrolētu moduli, mums ir nepieciešami 3 tapas mikrokontrollera pusē ATtiny85. Tie būs:

  • PB0 - savienots ar CLK
  • PB1 - savienots ar CS
  • PB2 - savienots ar DIN

Tas ir pietiekami, lai izveidotu savienojumu ar moduli MAX7219 un to ieprogrammētu.

3. solis: protokols

Protokols
Protokols

Saziņa ar MAX7219 ir salīdzinoši vienkārša - tajā tiek izmantots sinhronais protokols, kas nozīmē, ka katram nosūtītajam datu bitam ir noteikts pulksteņa cikls, kas norāda uz šī datu bita klātbūtni.

Citiem vārdiem sakot, mēs nosūtām uz bitiem 2 paralēlas secības - vienu pulkstenim un otru datiem. To dara programmatūra.

4. solis: programmatūra

Programmatūra
Programmatūra

Šis MAX7219 modulis darbojas šādi:

  • Mēs ierakstām baitus tā iekšējā reģistrā.
  • MAX7219 interpretē datus.
  • MAX7219 kontrolē gaismas diodes matricā.

Tas nozīmē arī to, ka mums nav visu laiku jāapmeklē gaismas diodes, lai tās iedegtos - par to rūpējas MAX7219 kontrolieris. Tas varētu arī pārvaldīt gaismas diožu intensitāti.

Tātad, lai ērti izmantotu MAX7219 moduļus, mums ir nepieciešama šo funkciju bibliotēka.

Pirmkārt, mums ir nepieciešamas dažas pamatfunkcijas, lai ierakstītu reģistros MAX7219.

  • Ieraksta baitu uz MAX7219.
  • Vārda (2 baiti) ierakstīšana MAX7219.

Funkcija, kas kontrolierim raksta vienu baitu, izskatās šādi:

void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Iestatiet CLK uz LOW, ja (dati & 0x80) // Maskējiet datu MSB PORTB | = (1 << MAX7219_DIN); // Iestatīt DIN uz HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Iestatiet DIN uz LOW PORTB | = (1 << MAX7219_CLK); // Iestatīt CLK uz HIGH data << = 1; // Shift pa kreisi}}

Tagad, kad mēs varam nosūtīt baitus uz MAX7219, mēs varam sākt sūtīt komandas. Tas tiek darīts, nosūtot 2 baitus - pirmais iekšējā reģistra adresei un otrais - datiem, kurus mēs vēlētos nosūtīt.

MAX7219 kontrollerī ir vairāk nekā ducis reģistra.

Komandas vai vārda nosūtīšana būtībā ir 2 secīgu baitu nosūtīšana. Funkcijas ieviešana ir ļoti vienkārša.

void max7219_word (uint8_t adrese, uint8_t dati) {PORTB & = ~ (1 << MAX7219_CS); // Iestatīt CS uz LOW max7219_byte (adrese); // Adreses sūtīšana max7219_byte (dati); // Datu nosūtīšana PORTB | = (1 << MAX7219_CS); // Iestatiet CS uz HIGH PORTB & = ~ (1 << MAX7219_CLK); // Iestatīt CLK uz LOW}

Šeit ir svarīgi atzīmēt līniju, kurā mēs atgriežam CS signālu HIGH - tas iezīmē secības beigas - šajā gadījumā komandas beigas. Līdzīga metode tiek izmantota, kontrolējot vairāk nekā vienu ķēdē savienotu matricu. Nākamais solis, pirms sākam ieslēgt un izslēgt gaismas diodes, ir inicializēt MAX7219 kontrolieri. Tas tiek darīts, ierakstot noteiktas vērtības noteiktos reģistros. Ērtības labad, kodējot to, mēs varētu ievietot inicializācijas secību masīvā.

uint8_t initseq = {0x09, 0x00, // Atšifrēšanas režīma reģistrs, 00 = Bez atšifrēšanas 0x0a, 0x01, // Intensitātes reģistrs, 0x00.. 0x0f 0x0b, 0x07, // Skenēšanas ierobežojumu reģistrs, 0x07, lai parādītu visas rindas 0x0c, 0x01, // Izslēgšanas reģistrs, 0x01 = Normal Operation 0x0f, 0x00, // Display-Test Register, 0x00 = Normal Operation};

Mums vienkārši jāsūta 5 iepriekš minētās komandas secībā kā adreses/datu pāri. Nākamais solis - iedegt gaismas diožu rindu.

Tas ir ļoti vienkārši - mēs vienkārši uzrakstām vienu komandu, kur pirmais baits ir adrese (no 0 līdz 7), bet otrais baits ir 8 biti, kas attēlo 8 gaismas diodes rindā.

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

Ir svarīgi atzīmēt, ka tas darbosies tikai 1 matricai. Ja mēs ķēdē savienojam vairāk matricu, tie visi parāda vienādus datus. Iemesls tam ir tas, ka pēc komandas nosūtīšanas mēs atgriežam CS signālu HIGH, kas liek visiem ķēdes MAX7219 kontrolieriem bloķēties un parādīt pēdējo komandu.

Ieteicams: