Სარჩევი:

როგორ დავაკავშიროთ MAX7219 მართვადი LED მატრიცა 8x8 ATtiny85 მიკროკონტროლერთან ერთად: 7 ნაბიჯი
როგორ დავაკავშიროთ MAX7219 მართვადი LED მატრიცა 8x8 ATtiny85 მიკროკონტროლერთან ერთად: 7 ნაბიჯი

ვიდეო: როგორ დავაკავშიროთ MAX7219 მართვადი LED მატრიცა 8x8 ATtiny85 მიკროკონტროლერთან ერთად: 7 ნაბიჯი

ვიდეო: როგორ დავაკავშიროთ MAX7219 მართვადი LED მატრიცა 8x8 ATtiny85 მიკროკონტროლერთან ერთად: 7 ნაბიჯი
ვიდეო: როგორ დავაკავშიროთ fitpro-საათი android და IOS ის აპლიკაციასთან 2024, ივლისი
Anonim
როგორ დავაკავშიროთ MAX7219 მართული LED მატრიცა 8x8 ATtiny85 მიკროკონტროლერთან
როგორ დავაკავშიროთ MAX7219 მართული LED მატრიცა 8x8 ATtiny85 მიკროკონტროლერთან

MAX7219 კონტროლერი დამზადებულია Maxim Integrated– ის კომპაქტური, სერიული შეყვანის/გამომავალი საერთო კათოდური დისპლეის დრაივერის საშუალებით, რომელსაც შეუძლია მიკროკონტროლერების ჩართვა 64 ინდივიდუალურ LED– ზე, 7 სეგმენტიანი ციფრული LED მონიტორები 8 ციფრამდე, ბარი – გრაფიკის ჩვენება და ა.შ. -ჩიპი არის BCD კოდი-B დეკოდერი, მულტიპლექს სკანირების სქემა, სეგმენტისა და ციფრული დრაივერები და 8 × 8 სტატიკური ოპერატიული მეხსიერება, რომელიც ინახავს თითოეულ ციფრს.

MAX7219 მოდულები ძალიან მოსახერხებელია ისეთი მიკროკონტროლერებისთვის, როგორიცაა ATtiny85, ან, ჩვენს შემთხვევაში Tinusaur Board.

ნაბიჯი 1: აპარატურა

აპარატურა
აპარატურა
აპარატურა
აპარატურა

MAX7219 მოდულები ჩვეულებრივ ასე გამოიყურება. მათ აქვთ შეყვანის ავტობუსი ერთ მხარეს და გამომავალი ავტობუსი მეორეზე. ეს გაძლევთ საშუალებას დააკავშიროთ ჯაჭვი 2 ან მეტი მოდულით, ანუ ერთმანეთის მიყოლებით, უფრო რთული კონფიგურაციების შესაქმნელად.

მოდულებს, რომლებსაც ჩვენ ვიყენებთ, შეუძლიათ შეაერთონ ჯაჭვში 5 პატარა მხტუნავის გამოყენებით. იხილეთ სურათი ქვემოთ.

ნაბიჯი 2: Pinout და სიგნალები

MAX7219 მოდულს აქვს 5 პინი:

  • VCC - ძალა (+)
  • GND-ნიადაგი (-)
  • DIN - მონაცემთა შეყვანა
  • CS - ჩიპის არჩევა
  • CLK - საათი

ეს ნიშნავს, რომ ჩვენ გვჭირდება 3 ქინძისთავი ATtiny85 მიკროკონტროლის მხარეს მოდულის გასაკონტროლებლად. ეს იქნება:

  • PB0 - დაკავშირებულია CLK– თან
  • PB1 - დაკავშირებულია CS- თან
  • PB2 - დაკავშირებულია DIN– თან

ეს საკმარისია MAX7219 მოდულთან დასაკავშირებლად და დასაპროგრამებლად.

ნაბიჯი 3: პროტოკოლი

პროტოკოლი
პროტოკოლი

MAX7219– თან კომუნიკაცია შედარებით ადვილია - ის იყენებს სინქრონულ პროტოკოლს, რაც ნიშნავს, რომ ჩვენ მიერ გაგზავნილ მონაცემთა თითოეულ ბიტზე არის საათის ციკლი, რომელიც აღნიშნავს ამ მონაცემთა ბიტის არსებობას.

სხვა სიტყვებით რომ ვთქვათ, ჩვენ ვაგზავნით 2 პარალელურ თანმიმდევრობას ბიტებზე - ერთს საათისათვის და მეორე მონაცემებს. ეს არის ის, რასაც პროგრამული უზრუნველყოფა აკეთებს.

ნაბიჯი 4: პროგრამული უზრუნველყოფა

პროგრამული უზრუნველყოფა
პროგრამული უზრუნველყოფა

როგორ მუშაობს ეს MAX7219 მოდული, ეს არის:

  • ჩვენ ვწერთ ბაიტებს მის შიდა რეესტრში.
  • MAX7219 ახდენს მონაცემების ინტერპრეტაციას.
  • MAX7219 აკონტროლებს LED- ებს მატრიცაში.

ეს ასევე ნიშნავს იმას, რომ ჩვენ არ გვჭირდება LED- ების მასივის გარშემო ყოველთვის შემოვლა, რათა მათ გავანათოთ - MAX7219 კონტროლერი ზრუნავს ამაზე. მას ასევე შეუძლია მართოს LED- ების ინტენსივობა.

ამრიგად, MAX7219 მოდულების მოსახერხებლად გამოსაყენებლად ჩვენ გვჭირდება ფუნქციების ბიბლიოთეკა, რომელიც ამ მიზანს ემსახურება.

პირველ რიგში, ჩვენ გვჭირდება რამდენიმე ძირითადი ფუნქცია, რათა დავწეროთ MAX7219 რეგისტრები.

  • ბაიტის წერა MAX7219.
  • სიტყვის დაწერა (2 ბაიტი) MAX7219– ზე.

ფუნქცია, რომელიც წერს ერთ ბაიტს კონტროლერს, ასე გამოიყურება:

ბათილია max7219_ ბაიტი (uint8_t მონაცემები) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // დააყენეთ CLK LOW, თუ (მონაცემები & 0x80) // მონაცემთა ნიღაბი MSB PORTB | = (1 << MAX7219_DIN]; // დააყენეთ DIN HIGH else PORTB & = ~ (1 << MAX7219_DIN]; // დააყენეთ DIN LOW PORTB | = (1 << MAX7219_CLK]; // CLK- ის დაყენება HIGH მონაცემებზე << = 1; // გადაიტანეთ მარცხნივ}}

ახლა, როდესაც ჩვენ შეგვიძლია გამოვაგზავნოთ ბაიტები MAX7219– ზე, ჩვენ შეგვიძლია დავიწყოთ ბრძანებების გაგზავნა. ეს კეთდება 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, // დეკოდირების რეჟიმი რეგისტრაცია, 00 = დეკოდირების გარეშე 0x0a, 0x01, // ინტენსივობის რეგისტრაცია, 0x00.. 0x0f 0x0b, 0x07, // სკანირების ლიმიტის რეგისტრაცია, 0x07 ყველა ხაზის საჩვენებლად 0x0c, 0x01, // გამორთვის რეგისტრატორი, 0x01 = ნორმალური ოპერაცია 0x0f, 0x00, // ჩვენების ტესტირების რეესტრი, 0x00 = ნორმალური მოქმედება};

ჩვენ უბრალოდ უნდა გავაგზავნოთ ზემოთ 5 ბრძანება თანმიმდევრობით, როგორც მისამართი/მონაცემთა წყვილი. შემდეგი ნაბიჯი - LED- ების რიგის განათება.

ეს ძალიან მარტივია - ჩვენ უბრალოდ ვწერთ ერთ ბრძანებას, სადაც 1 ბაიტი არის მისამართი (0 -დან 7 -მდე), ხოლო მე -2 ბაიტი არის 8 ბიტი, რომელიც წარმოადგენს 8 LED- ს ზედიზედ.

ბათილია max7219_row (uint8_t მისამართი, uint8_t მონაცემები) {if (მისამართი> = 1 && მისამართი <= 8) max7219_word (მისამართი, მონაცემები); }

მნიშვნელოვანია აღინიშნოს, რომ ეს იმუშავებს მხოლოდ 1 მატრიცაზე. თუ ჯაჭვში მეტ მატრიცას დავუკავშირებთ, ისინი ყველა ერთსა და იმავე მონაცემს აჩვენებენ. ამის მიზეზი ის არის, რომ ბრძანების გაგზავნის შემდეგ ჩვენ CS სიგნალს ვუბრუნებთ HIGH- ს, რაც ჯაჭვში მყოფი MAX7219 კონტროლერების ჩაკეტვას და აჩვენებს ბოლო ბრძანებას.

გირჩევთ: