Բովանդակություն:

Ինչպես միացնել MAX7219 շարժվող LED մատրիցը 8x8 ATtiny85 միկրոկառավարիչով. 7 քայլ
Ինչպես միացնել MAX7219 շարժվող LED մատրիցը 8x8 ATtiny85 միկրոկառավարիչով. 7 քայլ

Video: Ինչպես միացնել MAX7219 շարժվող LED մատրիցը 8x8 ATtiny85 միկրոկառավարիչով. 7 քայլ

Video: Ինչպես միացնել MAX7219 շարժվող LED մատրիցը 8x8 ATtiny85 միկրոկառավարիչով. 7 քայլ
Video: Complete guide to PCA9685 16 channel Servo controller for Arduino with code Version of 5 ( V1) 2024, Հուլիսի
Anonim
Ինչպես միացնել MAX7219 շարժվող LED մատրիցը 8x8 ATtiny85 միկրոկոնտրոլերով
Ինչպես միացնել MAX7219 շարժվող LED մատրիցը 8x8 ATtiny85 միկրոկոնտրոլերով

MAX7219 վերահսկիչը արտադրվում է Maxim Integrated- ի կողմից: Կոմպակտ, սերիական մուտքի/ելքի ընդհանուր կաթոդային ցուցադրման վարորդ, որը կարող է միկրոկառավարիչներին միացնել 64 առանձին LED- ներին, 7 հատվածից մինչև 8 թվանշանի LED թվային էկրաններին, գծապատկերային էկրաններին և այլն: -չիպերը BCD կոդ-B ապակոդավորիչ են, մուլտիպլեքս սկան միացում, հատվածի և թվանշանների շարժիչներ և 8 × 8 ստատիկ RAM, որը պահում է յուրաքանչյուր նիշ:

MAX7219 մոդուլները շատ հարմար են միկրոկոնտրոլերների հետ օգտագործելու համար, ինչպիսիք են ATtiny85- ը, կամ, մեր դեպքում Tinusaur Board- ը:

Քայլ 1: Սարքավորումը

Սարքավորումը
Սարքավորումը
Սարքավորումը
Սարքավորումը

MAX7219 մոդուլները սովորաբար այսպիսի տեսք ունեն: Նրանք մի կողմից ունեն մուտքային ավտոբուս, իսկ մյուս կողմից ՝ ելքային: Սա թույլ է տալիս շաղ տալ 2 կամ ավելի մոդուլ, այսինքն մեկը մյուսի հետևից, ավելի բարդ կարգավորումներ ստեղծելու համար:

Այն մոդուլները, որոնք մենք օգտագործում ենք, ունակ են միացնել շղթայի մեջ `օգտագործելով 5 փոքր թռիչք: Տե՛ս ստորև նկարը:

Քայլ 2: Pinout և ազդանշաններ

MAX7219 մոդուլն ունի 5 կապում.

  • VCC - հզորություն (+)
  • GND-հիմք (-)
  • DIN - Տվյալների մուտքագրում
  • CS - Չիպի ընտրություն
  • CLK - ockամացույց

Դա նշանակում է, որ մեզ անհրաժեշտ է 3 կապում ATtiny85 միկրոկառավարիչի կողմից `մոդուլը վերահսկելու համար: Դրանք կլինեն.

  • PB0 - միացված է CLK- ին
  • PB1 - միացված է CS- ին
  • PB2 - միացված է DIN- ին

Սա բավարար է MAX7219 մոդուլին միանալու և այն ծրագրավորելու համար:

Քայլ 3: Արձանագրություն

Արձանագրությունը
Արձանագրությունը

MAX7219- ի հետ շփումը համեմատաբար հեշտ է. Այն օգտագործում է համաժամանակյա արձանագրություն, ինչը նշանակում է, որ յուրաքանչյուր ուղարկված տվյալների բիտերի համար կա ժամացույցի ցիկլ, որը նշանակում է այդ տվյալների բիթի առկայությունը:

Այլ կերպ ասած, մենք երկու զուգահեռ հաջորդականություն ենք ուղարկում բիթերին `մեկը ժամացույցի համար, մյուսը` տվյալների: Սա այն է, ինչ անում է ծրագրաշարը:

Քայլ 4: Theրագրակազմ

Րագրակազմը
Րագրակազմը

Այս MAX7219 մոդուլի աշխատանքի եղանակը հետևյալն է.

  • Մենք բայթ ենք գրում նրա ներքին գրանցամատյանում:
  • MAX7219- ը մեկնաբանում է տվյալները:
  • MAX7219- ը վերահսկում է մատրիցի LED- ները:

Դա նաև նշանակում է, որ մենք չպետք է անընդհատ պտտվենք LED- ների զանգվածի միջոցով դրանք լուսավորելու համար. MAX7219 կարգավորիչը հոգ է տանում դրա մասին: Այն կարող է նաև կառավարել LED- ների ինտենսիվությունը:

Այսպիսով, MAX7219 մոդուլները հարմարավետ օգտագործելու համար մեզ անհրաժեշտ է գործառույթների գրադարան `այդ նպատակին ծառայելու համար:

Նախ, մեզ անհրաժեշտ են մի քանի հիմնական գործառույթներ, որպեսզի գրենք MAX7219 ռեգիստրներին:

  • Բայտ գրել MAX7219- ին:
  • Բառ գրել (2 բայթ) MAX7219 համարին:

Ֆունկցիան, որը մեկ բայթ է գրում վերահսկիչին, այսպիսին է.

անվավեր max7219_byte (uint8_t տվյալներ) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // CLK- ը սահմանել OWԱOWՐ, եթե (տվյալներ և 0x80) // Դիմակավորել տվյալների MSB- ը PORTB | = (1 << MAX7219_DIN]; // Սահմանել DIN- ը HIGH else PORTB & = ~ (1 << MAX7219_DIN]; // Սահմանել DIN- ը LOW PORTB | = (1 << MAX7219_CLK]; // CLK- ը սահմանել HIGH data << = 1; // Տեղափոխել ձախ}}

Այժմ, երբ մենք կարող ենք բայթ ուղարկել MAX7219- ին, կարող ենք սկսել հրամաններ ուղարկել: Սա արվում է ՝ ուղարկելով 2 բայ ՝ 1 -ին ներքին ռեգիստրի հասցեի համար, և 2 -րդ ՝ այն տվյալների համար, որոնք մենք կցանկանայինք ուղարկել:

MAX7219 վերահսկիչում կա մեկ տասնյակից ավելի գրանցամատյան:

Հրաման կամ բառ ուղարկելը հիմնականում 2 անընդմեջ բայթ է ուղարկում: Այն իրականացնող գործառույթը շատ պարզ է:

անվավեր max7219_word (uint8_t հասցե, uint8_t տվյալներ) {PORTB & = ~ (1 << MAX7219_CS); // CS- ն սահմանել LOW max7219_byte (հասցե); // հասցեն ուղարկելը max7219_byte (տվյալներ); // Տվյալների ուղարկում PORTB | = (1 << MAX7219_CS); // Սահմանել CS- ը HIGH PORTB & = ~ (1 << MAX7219_CLK); // CLK- ը սահմանել LOW}

Կարևոր է այստեղ նշել այն տողը, որտեղ մենք CS ազդանշանը վերադառնում ենք HIGH - սա նշում է հաջորդականության ավարտը, այս դեպքում `հրամանի ավարտը: Նմանատիպ տեխնիկան օգտագործվում է շղթայի մեջ միացված ավելի քան մեկ մատրիցա վերահսկելիս: Հաջորդ քայլը, նախքան LED- ները միացնելն ու անջատելը, MAX7219 կարգավորիչի նախաստորագրումն է: Դա արվում է որոշակի գրանցամատյաններում որոշակի արժեքներ գրելով: Հարմարության համար, այն կոդավորելիս մենք կարող ենք սկզբնաղբյուրի հաջորդականությունը դնել զանգվածի մեջ:

uint8_t initseq = {0x09, 0x00, // Decode-Mode Register, 00 = Առանց վերծանման 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 բոլոր տողերը ցուցադրելու համար 0x0c, 0x01, // Անջատման գրանցամատյան, 0x01 = Սովորական գործողություն 0x0f, 0x00, // Displayուցադրման թեստերի գրանցամատյան, 0x00 = Նորմալ շահագործում};

Մենք պարզապես պետք է ուղարկենք վերը նշված 5 հրամանները հաջորդականությամբ ՝ որպես հասցե/տվյալների զույգ: Հաջորդ քայլը `լուսարձակում LED- ների շարանը:

Սա շատ պարզ է. Մենք պարզապես գրում ենք մեկ հրաման, որտեղ 1 -րդ բայթը հասցեն է (0 -ից 7 -ը), իսկ 2 -րդ բայթը 8 բիթն է, որոնք ներկայացնում են շարանի 8 LED- ները:

անվավեր max7219_row (uint8_t հասցե, uint8_t տվյալներ) {if (address> = 1 && address <= 8) max7219_word (address, data); }

Կարևոր է նշել, որ այն կաշխատի միայն 1 մատրիցայի համար: Եթե շղթայի մեջ ավելի շատ մատրիցաներ կապենք, դրանք բոլորը ցույց կտան նույն տվյալները: Դրա պատճառն այն է, որ հրամանը ուղարկելուց հետո մենք CS ազդանշանը վերադառնում ենք HIGH, ինչը շղթայի բոլոր MAX7219 կարգավորիչների ստիպում է կողպվել և ցույց տալ, թե որն էր վերջին հրամանը:

Խորհուրդ ենք տալիս: