
Სარჩევი:
- მიზნები
- გამოცდილება და უნარები
- პასუხისმგებლობის შეზღუდვის განაცხადი და კრედიტი
- ნაბიჯი 1: ნაწილები
- ნაწილების სია
- ზოგადი ნაწილები
- აქ გამოყენებულია კონკრეტული ნაწილები
- შენიშვნები ნაწილების შესახებ
- ნაბიჯი 2: მატრიცა
- მშენებლობის მოსაზრებები
- მატრიცის აგება
- Მნიშვნელოვანი
- ნაბიჯი 3: კონტროლის აპარატურა
- კონტროლის აპარატურის შექმნა
- ნაბიჯი 4: პროგრამული უზრუნველყოფა
- ხრიკი
- Shift რეგისტრები: როგორ
- მიმართავს ჩვენებას
- პროგრამირება
- მოქმედებაში
- ნაბიჯი 5: მოდულური ცნებები
- Მათემატიკა
- კასკადური ცვლის რეგისტრაცია
- მრავალი რიგის დრაივერი
- Მაგალითად
- ნაბიჯი 6: დასკვნა
- შესაძლო დამატებები
- ნაბიჯი 7: დაიცავით
- მიკროსქემის დაფის მახასიათებლები
- შეკრება
2025 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2025-01-23 14:50



ეს ინსტრუქცია უნდა იყოს უფრო სრულყოფილი ახსნა, ვიდრე სხვა ხელმისაწვდომია ინტერნეტში. აღსანიშნავია, რომ ეს უფრო მეტ ტექნიკურ ახსნას მოგცემს, ვიდრე ეს შესაძლებელია LED მარკეტში მითითებული led555– ით.
მიზნები
ეს ინსტრუქცია წარმოგიდგენთ ცნებებს, რომლებიც ჩართულია ცვლის რეგისტრატორებთან და მაღალი გვერდითი დრაივერებით. ამ კონცეფციების ილუსტრირებით 8x8 LED მატრიქსით ვიმედოვნებ, რომ მოგაწვდით ინსტრუმენტებს, რომლებიც საჭიროა თქვენი პროექტის ზომებისა და განლაგების ადაპტირებისთვის და გაფართოებისთვის.
გამოცდილება და უნარები
მე შევაფასებ ამ პროექტს საშუალო სირთულის:
- თუ თქვენ უკვე გაქვთ გამოცდილება მიკროკონტროლერების პროგრამირებაში და LED- ებთან მუშაობისას, ეს პროექტი საკმაოდ ადვილი უნდა იყოს თქვენთვის, რათა დაასრულოთ და გააფართოვოთ უფრო დიდი მასივები.
- თუ თქვენ ახლახან იწყებთ მუშაობას მიკროკონტროლერებით და აანთეთ LED ან ორი თქვენ უნდა შეგეძლოთ ამ პროექტის დასრულება ჩვენი მეგობრის Google– ის დახმარებით.
- თუ თქვენ გაქვთ მცირე გამოცდილება ან არ გაქვთ გამოცდილება მიკროკონტროლერებთან ან პროგრამირებასთან, ეს ალბათ სცილდება იმას, რასაც თქვენ უნდა ჩაერთოთ. სცადეთ რამდენიმე სხვა დამწყები პროექტი და დაბრუნდით, როდესაც თქვენ გექნებათ მეტი გამოცდილება მიკროკონტროლერების პროგრამების წერისას.
პასუხისმგებლობის შეზღუდვის განაცხადი და კრედიტი
ჯერ ერთი, მე არ ვარ ელექტრო ინჟინერი. თუ ხედავთ იმას, რაც არასწორია ან არ არის საუკეთესო პრაქტიკა, გთხოვთ შემატყობინოთ და მე გავაკეთებ შესწორებას. გააკეთე ეს შენი რისკით! თქვენ უნდა იცოდეთ რას აკეთებთ, ან შეიძლება ზიანი მიაყენოთ თქვენს კომპიუტერს, თქვენს მიკროკონტროლერს და საკუთარ თავს. მე ბევრი რამ ვისწავლე ინტერნეტიდან, განსაკუთრებით ფორუმებიდან: https://www.avrfreaks.net შრიფტის ნაკრები, რომელიც მოყვა ks0108 უნივერსალურ C ბიბლიოთეკას. შეამოწმეთ აქ:
ნაბიჯი 1: ნაწილები
ნაწილების სია
ზოგადი ნაწილები
LED- ების 8x8 ბადის შესაქმნელად და მათი გასაკონტროლებლად დაგჭირდებათ:
- 64 LED- ები თქვენი არჩევანით
- 8 რეზისტორი LED- ებისთვის
- 1 Shift რეგისტრაცია სვეტებისთვის
- 1 დრაივერის მასივი რიგებისთვის
- 8 რეზისტორი მძღოლის მასივის გადართვისთვის
- 1 მიკროკონტროლი
- 1 საათის წყარო მიკროკონტროლისთვის
- 1 პროტოტიპის დაფა
- 1 კვების ბლოკი
- შემაერთებელი მავთული
აქ გამოყენებულია კონკრეტული ნაწილები
ამ ინსტრუქციისთვის მე გამოვიყენე შემდეგი:
- 64 მწვანე LED (Mouser ნაწილი #604-WP7113GD)
- 8 220ohm 1/4 ვატიანი რეზისტორები LED- ებისთვის (Mouser ნაწილი #660-CFS1/4CT52R221J)
- 1 HEF4794 LED მძღოლი ცვლის რეგისტრით (Mouser ნაწილი #771-HEF4794BPN)
- 1 mic2981 მაღალი ძაბვის მაღალი დენის წყაროს დრაივერის მასივი (Digikey ნაწილი #576-1158-ND)
- 8 3.3kohm 1/4 ვატიანი რეზისტორები მძღოლის მასივის გადართვისთვის (Radio Shack ნაწილი #271-1328)
- 1 Atmel ATmega8 მიკროკონტროლი (მაუსერის ნაწილი #556-ATMEGA8-16PU)
- 1 12MHz ბროლი მიკროკონტროლის საათის წყაროსთვის (მაუსერის ნაწილი #815-AB-12-B2)
- 1 2200 ხვრელი პროტოტიპის დაფა (Radio Shack ნაწილი #276-147)
- გადაკეთებული ATX კვების წყარო: იხილეთ ეს ინსტრუქციით
- მყარი ბირთვი 22-awg hook-up wire (Radio Shack ნაწილი #278-1221)
- Solderless breadboard (Radio Shack ნაწილი #276-169 (აღარ არის ხელმისაწვდომი, სცადეთ: 276-002)
- AVR Dragon (Mouser ნაწილი #556-ATAVRDRAGON)
- Dragon Rider 500 მიერ Ecros Technologies: იხილეთ ეს ინსტრუქცია
შენიშვნები ნაწილების შესახებ
რიგისა და სვეტის მძღოლები: ალბათ ამ პროექტის ყველაზე რთული ნაწილია მწკრივისა და სვეტის დრაივერების არჩევა. პირველ რიგში, მე არ ვფიქრობ, რომ სტანდარტული 74HC595 ცვლის რეგისტრატორი არის კარგი იდეა აქ, რადგან მათ არ შეუძლიათ გაუმკლავდნენ ისეთ დენს, რომლის გაგზავნაც გვსურს LED- ების საშუალებით. ამიტომაც ავირჩიე HEF4794 დრაივერი, რადგან მას შეუძლია ადვილად ჩაძიროს ამჟამინდელი აწმყო, როდესაც ყველა 8 led ერთ რიგშია ჩართული. ცვლის რეგისტრი იმყოფება დაბალ მხარეს (led– ების გრუნტი). ჩვენ დაგვჭირდება მწკრივის დრაივერი, რომელსაც შეუძლია მიიღოს საკმარისი მიმდინარეობა რამდენიმე სვეტის ერთმანეთთან დასაკავშირებლად. Mic2981– ს შეუძლია 500 mA– მდე მიწოდება. ერთადერთი სხვა ნაწილი, რაც მე აღმოვაჩინე, რომელიც ასრულებს ამ ამოცანას არის UDN2981 (digikey ნაწილი #620-1120-ND), რომელიც ერთი და იგივე ნაწილია სხვადასხვა მწარმოებლის მიერ. გთხოვთ გამომიგზავნოთ, თუ იცით სხვა მაღალი დონის დრაივერები, რომლებიც კარგად იმუშავებენ ამ აპლიკაციაში. LED მატრიცა: ეს მატრიცა არის 8x8, რადგან მწკრივისა და სვეტის დრაივერებს თითოეულს აქვს 8 პინი. უფრო დიდი LED მასივი შეიძლება აშენდეს მრავალი მატრიცის ერთმანეთთან შეერთებით და განხილული იქნება "მოდულური კონცეფციების" საფეხურზე. თუ გსურთ დიდი მასივი, შეუკვეთეთ ყველა საჭირო ნაწილი ერთდროულად. ერთ მოსახერხებელ პაკეტში არის 8x8, 5x7 და 5x8 LED მატრიცები. ეს ადვილად უნდა შეიცვალოს წვრილმანი მატრიქსით. Ebay არის კარგი წყარო ამ. Mouser– ს აქვს 5x7 ერთეული, როგორიცაა ნაწილი #604-TA12-11GWA. მე გამოვიყენე იაფი მწვანე LED- ები, რადგან მე უბრალოდ ვთამაშობ და ვმხიარულობ. უფრო მეტი დახარჯვა მაღალი სიკაშკაშის, მაღალეფექტური LED- ების საშუალებით, შეგიძლიათ მოგაწოდოთ ბევრად უფრო სანახაობრივი ჩვენება … ეს ჩემთვის საკმაოდ კარგია! კონტროლის აპარატურა: მატრიცა კონტროლდება Atmel AVR მიკროკონტროლით. ამისათვის დაგჭირდებათ პროგრამისტი. იმის გამო, რომ მე ვამზადებ პროტოტიპს, მე ვიყენებ Dragon Rider 500 -ს, რისთვისაც მე დავწერე ასამბლეის და გამოყენების ინსტრუქცია. ეს არის მარტივი ინსტრუმენტი პროტოტიპისთვის და მე ამას გირჩევთ.
ნაბიჯი 2: მატრიცა



მე ვაშენებ საკუთარ LED მატრიცას ამ პროექტისათვის 5 მმ -იანი LED- ების და რადიო შაკის პროტოტიპირების დაფის გამოყენებით. უნდა აღინიშნოს, რომ თქვენ შეგიძლიათ შეიძინოთ 8x8 dot matrix led მოდულები რამდენიმე წყაროდან, მათ შორის ebay. მათ კარგად უნდა იმუშაონ ამ სასწავლო ინსტრუქციით.
მშენებლობის მოსაზრებები
LEDS უნდა იყოს გასწორებული, რათა მათ მიმართონ ერთი და იგივე მიმართულება იმავე კუთხით. აღმოვაჩინე, რომ ჩემთვის ყველაზე მარტივი ვარიანტია LED- ის გამშვები კორპუსის დაფაზე დადება და პლექსიგლასის პატარა ნაჭერი და დამჭერი. მე რამდენიმე LED განათავსე ადგილიდან რამდენიმე სანტიმეტრის დაშორებით იმ რიგიდან, რომელზეც ვმუშაობდი, რათა დავრწმუნებულიყავი, რომ პლექსიგლასი იყო პროტოტიპების დაფის პარალელურად. სტრიქონები და სვეტები ჩვენ გვჭირდება საერთო კავშირი თითოეულ მწკრივზე, ისევე როგორც თითოეულ სვეტზე. რიგისა და სვეტის დრაივერის არჩევის გამო, ჩვენ გვჭირდება ანოდი (LED- ის დადებითი გამტარიანობა) დაკავშირებული მწკრივით და კათოდური (LED- ის უარყოფითი უპირატესობა) სვეტით. საკონტროლო მავთულები ამ პროტოტიპისთვის მე ვიყენებ მყარ ბირთვულ (ერთ გამტარ) შემაერთებელ მავთულს. ეს იქნება ძალიან მარტივი ინტერფეისი solderless breadboard. მოგერიდებათ გამოიყენოთ სხვა ტიპის კონექტორი თქვენი პროექტის შესატყვისად.
მატრიცის აგება
1. განათავსეთ LEDS- ის პირველი სვეტი პროტოტიპების დაფაზე.2. ორმაგი შემოწმება, რომ თითოეული LED- ის თქვენი პოლარობა სწორია, ამის გამოსწორება ძალიან ძნელი იქნება, თუ ამას მოგვიანებით მიხვდებით. Solder ორივე მივყავართ LED to ფორუმში. შეამოწმეთ, რომ ისინი სწორად იყოს განლაგებული (არა უცნაურ კუთხეებში) და მოაცილეთ კათოდის სადენები. დარწმუნდით, რომ თქვენ არ დააჭერთ ანოდის ტყვიას, ჩვენ დაგვჭირდება მოგვიანებით, ასე რომ უბრალოდ დატოვეთ ის ზემოთ. ამოიღეთ იზოლაცია მყარი ძირითადი მავთულის ნაჭერიდან. მიამაგრეთ მავთულის ეს ნაჭერი თითოეულ კათოდზე, დაფის დონეზე.
- მე ამას ვასრულებდი თითოეულ ბოლოს, შემდეგ დავბრუნდი და დავამატე ცოტაოდენი შესაკრავი თითოეულ შეერთებაზე.
- ეს მავთული გასცდება თქვენს ბოლო LED- ს, რათა შეიქმნას მარტივი ინტერფეისი, როდესაც ჩვენ დავამატებთ საკონტროლო ხაზებს.
5. გაიმეორეთ 1-4 ნაწილები, სანამ არ იქნებით ყველა LED- ები და ყველა სვეტის ავტობუსი შედუღდება.6. მწკრივი ავტობუსის შესაქმნელად, ანოდის რამდენიმე ბილიკი გადაუხვიეთ 90 გრადუსიანი კუთხით, რათა ისინი შეეხონ იმავე რიგის სხვა ანოდის ლიდერებს.
- ქვემოთ მოცემულია ამის დეტალური სურათები.
- გაუფრთხილდით, რომ ეს არ დაუკავშირდეს სვეტის ავტობუსებს და შექმნას მოკლე ჩართვა.
7. შეაერთეთ ტყვიები თითოეულ კვანძზე და ამოიღეთ ზედმეტი ანოდიანი ტყვიები.
დატოვე ბოლო ანოდი, რომელიც გადადის ბოლო LED- ზე. ეს იქნება გამოყენებული რიგის დრაივერის საკონტროლო მავთულის დასაკავშირებლად
8. გაიმეორეთ მე -6 და მე -7 ნაწილები, სანამ ყველა მწკრივი ავტობუსი არ გაიყიდება.9. მიამაგრეთ საკონტროლო მავთულები.
- მე გამოვიყენე წითელი მყარი ძირითადი მავთულები რიგებისათვის და შავი სვეტებისთვის.
- შეაერთეთ ერთი მავთული თითოეული სვეტისთვის და ერთი თითოეული რიგისთვის. ეს მარტივად შეიძლება გაკეთდეს თითოეული ავტობუსის ბოლოს.
Მნიშვნელოვანი
ამ LED მატრიცას არ გააჩნია მიმდინარე შემზღუდველი რეზისტორები. თუ ამას გამოსცდით რეზისტორების გარეშე, თქვენ ალბათ დაიწვით თქვენი LED- ები და მთელი ეს სამუშაო იქნება უშედეგოდ.
ნაბიჯი 3: კონტროლის აპარატურა


ჩვენ უნდა გავაკონტროლოთ ჩვენი LED მატრიცის სვეტები და რიგები. მატრიცა ისეა აგებული, რომ ანოდები (LED- ის ძაბვის მხარე) წარმოადგენენ რიგებს, ხოლო კათოდები (LED- ის ქვედა მხარე) სვეტებს. ეს ნიშნავს, რომ ჩვენმა მწკრივმა დრაივერმა უნდა მიიღოს მიმდინარე და ჩვენი სვეტის დრაივერმა უნდა ჩაიძიროს იგი. ქინძისთავების დაზოგვის მიზნით მე ვიყენებ ცვლის რეგისტრს სვეტების გასაკონტროლებლად. ამ გზით შემიძლია გავაკონტროლო თითქმის შეუზღუდავი რაოდენობის სვეტი მხოლოდ ოთხი მიკროკონტროლის ქინძისთავით. შესაძლებელია მხოლოდ სამის გამოყენება, თუ ჩართულია გამომავალი პინი პირდაპირ ძაბვაზეა მიბმული. მე შევარჩიე HEF4794 LED დრაივერი ცვლის რეგისტრაციით. ეს არის უკეთესი ვარიანტი, ვიდრე სტანდარტული 74HC595, რადგან მას შეუძლია მარტივად ჩაიძიროს დღევანდელი დღე, როდესაც ყველა 8 LED ერთდროულად არის ჩართული. მაღალ მხარეს (რიგების მიმდინარე წყარო) მე ვიყენებ mic2981. სქემატური გვიჩვენებს UDN2981, მე მჯერა, რომ ეს ორი ცვალებადია. ამ დრაივერს შეუძლია 500 mA დენის წყარო. რადგან ჩვენ ვმოძრაობთ მხოლოდ 1 რიგში ერთდროულად, ეს გვაძლევს გაფართოების უამრავ შესაძლებლობას, ამ ჩიპის 33 სვეტამდე (უფრო მეტიც "მოდულური ცნებების" საფეხურზე).
კონტროლის აპარატურის შექმნა
ამ სასწავლო ამისთვის მე მხოლოდ breadboarding ეს ჩართვა. უფრო მუდმივი გადაწყვეტისთვის თქვენ მოგიწევთ თქვენივე მიკროსქემის დაფის ამოკვეთა, ან გამოიყენოთ პროტოტიპის დაფა. რიგის მძღოლი
- მოათავსეთ mic2981 (ან UDN2981) პურის დაფაზე
- შეაერთეთ პინ 9 ძაბვასთან (ეს სქემატურად დამაბნეველია)
- დააკავშირეთ პინ 10 მიწასთან (ეს სქემატურად დამაბნეველია)
- ჩადეთ 3k3 რეზისტორები, რომლებიც უკავშირდება ქინძისთავებს 1-8
- დაუკავშირდით ATmega8 (PD0-PD8) პორტიდან 8 რეზისტორს
- შეაერთეთ LED მატრიცის 8 რიგის საკონტროლო მავთულები ქინძისთავებთან 11-18 (გაითვალისწინეთ, რომ მე LED– ების ყველაზე დაბალი რიგი მიმაგრებულია Pin 18 – თან და უმაღლესი მწკრივი Pin 11 – თან).
2. სვეტის მძღოლი
- მოათავსეთ hef4794 პურის დაფაზე
- შეაერთეთ პინ 16 ძაბვას
- დააკავშირეთ პინი 8 მიწასთან
- შეაერთეთ 220 ოჰმეტიანი რეზისტორები ქინძისთავებთან 4-7 და 11-14.
- შეაერთეთ 8 სვეტის საკონტროლო მავთული LED მატრიციდან იმ 8 რეზისტორთან, რომელიც ახლახან დაუკავშირეთ.
- შეაერთეთ Pin1 (Latch) ATmega8– ის PC0– თან
- შეაერთეთ Pin2 (მონაცემები) ATmega8– ის PC1– თან
- შეაერთეთ Pin3 (საათი) ATmega8– ის PC2– თან
- შეაერთეთ Pin15 (ჩართეთ გამომავალი) ATmega8– ის PC3– თან
3. საათი ბროლი
შეაერთეთ 12 მჰც კრისტალი და დატვირთვის კონდენსატორები, როგორც ეს მოცემულია სქემატურ რეჟიმში
4. ISP
შეაერთეთ პროგრამირების სათაური, როგორც ეს მოცემულია სქემატურ რეჟიმში
5. კონდენსატორის და გამწევ რეზისტორის ფილტრაცია
- უმჯობესია გავფილტროთ ძაბვა, რომელიც მიეწოდება ATmega8- ს. გამოიყენეთ 0.1uf კონდენსატორი ATmega8– ის პინ 7 და 8 – ს შორის
- გადატვირთვის პინი არ უნდა დარჩეს მცურავი, რადგან შეიძლება გამოიწვიოს შემთხვევითი გადატვირთვა. გამოიყენეთ რეზისტორი ძაბვასთან დასაკავშირებლად, ყველაფერი 1k უნდა იყოს კარგი. მე სქემატურად გამოვიყენე 10k რეზისტორი.
6. დარწმუნდით, რომ იყენებთ +5 ვ რეგულირებულ ენერგიას. თქვენზეა დამოკიდებული, რომ შეიმუშაოთ მარეგულირებელი.
ნაბიჯი 4: პროგრამული უზრუნველყოფა
ხრიკი
დიახ, როგორც ყველაფერი, არსებობს ხრიკი. ხრიკი იმაში მდგომარეობს, რომ ერთდროულად არასოდეს არის განათებული 8 -ზე მეტი LED ნათურა. იმისათვის, რომ ეს კარგად იმუშაოს, საჭიროა ცოტა ოსტატური პროგრამირება. კონცეფცია, რომელიც მე ავირჩიე არის ტაიმერის შეწყვეტის გამოყენება. აი როგორ მუშაობს ეკრანის შეფერხება უბრალო ინგლისურად:
- ქრონომეტრი ითვლის გარკვეულ მომენტამდე, როდესაც მიღწეულია შეფერხების სერვისი.
- ეს რუტინა წყვეტს რომელი სტრიქონი იქნება შემდეგი.
- მომდევნო სტრიქონის ინფორმაცია იხედება ბუფერიდან და გადადის სვეტის დრაივერში (ეს ინფორმაცია არ არის "ჩაკეტილი", ასე რომ ჯერ არ არის ნაჩვენები).
- რიგის დრაივერი გამორთულია, ამჟამად LED- ები არ არის განათებული.
- სვეტის დრაივერი არის "latched" მიიღოს ინფორმაცია ჩვენ გადავიდა ორი ნაბიჯი წინ მიმდინარე ინფორმაციის ჩვენება.
- მწკრივის დრაივერი აწვდის მიმდინარეობას იმ ახალ სტრიქონს, რომელსაც ჩვენ ვაჩვენებთ.
- შეწყვეტის სერვისი სრულდება და პროგრამა უბრუნდება ნორმალურ დინებას მომდევნო შეფერხებამდე.
ეს ხდება ძალიან სწრაფად. შეფერხება ისმის ყოველ 1 წმ. ეს ნიშნავს, რომ ჩვენ ვაახლებთ მთელ ეკრანს დაახლოებით 8 წმ -ში ერთხელ. ეს ნიშნავს ჩვენების სიჩქარეს დაახლოებით 125 Hz. არსებობს შეშფოთება სიკაშკაშესთან დაკავშირებით, რადგან ჩვენ არსებითად ვუშვებთ LED- ებს 1/8 სამუშაო ციკლზე (ისინი გამორთულია დროის 7/8). ჩემს შემთხვევაში მე ვიღებ ადეკვატურად ნათელ ეკრანს ხილული ციმციმის გარეშე. სრული LED ეკრანი ასახულია მასივში. შეფერხებებს შორის მასივი შეიძლება შეიცვალოს (გაითვალისწინეთ ატომობა) და გამოჩნდება ეკრანზე მომდევნო შეფერხების დროს. AVR მიკროკონტროლერის კოდის ჩაწერის სპეციფიკა და იმის შესახებ, თუ როგორ უნდა დაიწეროს კოდი ცვლის რეგისტრებთან საუბრის ფარგლებს მიღმაა ამ სასწავლო. მე ჩავრთე წყაროს კოდი (C დაწერილი და შედგენილი AVR-GCC) ასევე ექვსკუთხა ფაილი უშუალოდ პროგრამირებისთვის. მე გავაკეთე კომენტარი ყველა კოდზე, ასე რომ თქვენ უნდა შეგეძლოთ მისი გამოყენება ნებისმიერი კითხვის გასარკვევად, თუ როგორ უნდა შეიტანოთ მონაცემები ცვლის რეგისტრში და როგორ მუშაობს რიგის განახლება. გთხოვთ გაითვალისწინოთ, რომ მე ვიყენებ შრიფტის ფაილს, რომელიც მოყვება ks0108 უნივერსალური C ბიბლიოთეკა. ბიბლიოთეკა შეგიძლიათ იხილოთ აქ:
Shift რეგისტრები: როგორ
მე გადავწყვიტე ცოტა დავამატო, თუ როგორ უნდა დავპროგრამო ცვლის რეგისტრები. ვიმედოვნებ, რომ ეს გასაგები გახდება მათთვის, ვინც მათთან ადრე არ მუშაობდა. რასაც ისინი აკეთებენ ამ შემთხვევაში, არსებობს ერთი მონაცემთა მავთული, რომელიც იღებს მონაცემებს და 8 პინი, რომლებიც კონტროლდება იმისდა მიხედვით, თუ რა მონაცემები იქნა მიღებული. იმისათვის, რომ საქმეები უკეთესობისკენ შეიცვალოს, არის გასასვლელი თითოეული ცვლის რეგისტრატორისთვის, რომელიც შეიძლება დაკავშირებული იყოს სხვა ცვლის რეგისტრატორის შეყვანის პინთან. ამას ეწოდება კასკადური და გახდის გაფართოების პოტენციალს თითქმის შეუზღუდავი პერსპექტივა. Control PinsShift რეგისტრებს აქვთ 4 საკონტროლო პინი:
- Latch - ეს pin ეუბნება ცვლის რეგისტრს, როდესაც დროა გადავიდეს ახლად შეყვანილ მონაცემებზე
- მონაცემები - 1 და 0 ის ცვლის ცარიელ რეგისტრს, თუ რა ქინძისთავები გააქტიურდება მიიღება ამ პინზე.
- საათი - ეს არის მიკროკონტროლისგან გაგზავნილი პულსი, რომელიც ეუბნება ცვლის რეგისტრს მიიღოს მონაცემების კითხვა და გადავიდეს კომუნიკაციის პროცესის შემდეგ საფეხურზე
- გამოყვანის ჩართვა - ეს არის ჩართვა/გამორთვა, მაღალი = ჩართული, დაბალი = გამორთული
გააკეთეთ ეს თქვენი სატენდერო წინადადება: აქ არის ავარიის კურსი ზემოაღნიშნული საკონტროლო ქინძისთავების მუშაობისას: ნაბიჯი 1: დააყენეთ ჩამკეტი, მონაცემები და საათი დაბალი
Latch– ის დაბალი დაყენება გვეუბნება ცვლის რეგისტრატორზე, რომელსაც ჩვენ ვწერთ მას
ნაბიჯი 2: მონაცემთა პინის დაყენება იმ ლოგიკურ მნიშვნელობაზე, რომლის გაგზავნა გსურთ Shift Register– ში ნაბიჯი 3: დააყენეთ საათის პინი მაღლა, უთხარით Shift Register– ს, რომ წაიკითხოს მიმდინარე მონაცემთა pin მნიშვნელობა
ყველა სხვა მნიშვნელობა, რომელიც ამჟამად Shift Register– შია, გადაინაცვლებს 1 ადგილით, რაც ადგილს იკავებს Data pin– ის ამჟამინდელ ლოგიკურ მნიშვნელობას
ნაბიჯი 4: დააყენეთ Clock pin Low და გაიმეორეთ ნაბიჯები 2 და 3 სანამ ყველა მონაცემი არ გაიგზავნება ცვლის რეგისტრში.
საათის პინი უნდა იყოს დაბალი დაყენებული, ვიდრე შემდეგ მონაცემზე გადავიდეს. მაღალ და დაბალ ნიშნებს შორის გადართვა არის ის, რაც ქმნის "საათის იმპულსს", როდესაც ცვლის რეგისტრმა უნდა იცოდეს როდის გადავიდეს პროცესის შემდეგ საფეხურზე
ნაბიჯი 5: დააყენეთ Latch მაღალი
ეს ეუბნება ცვლის რეგისტრს მიიღოს ყველა მონაცემი, რომელიც გადატანილია და გამოიყენოს იგი გამომავალი ქინძისთავების გასააქტიურებლად. ეს ნიშნავს, რომ თქვენ ვერ დაინახავთ მონაცემებს, როდესაც ის იცვლება; გამომავალი ქინძისთავების ცვლილება არ მოხდება სანამ Latch არ არის დაყენებული მაღალი
ნაბიჯი 6: დააყენეთ ჩართვის გამომავალი მაღალი
- არ იქნება pin გამომავალი სანამ Enable Output არ დაყენდება მაღალ დონეზე, რაც არ უნდა მოხდეს დანარჩენ სამ საკონტროლო პინთან ერთად.
- თუ გსურთ, ეს პინი ყოველთვის შეიძლება დარჩეს მაღლა
არსებობს ორი ქინძისთავი, რომელთა გამოყენება შეგიძლიათ კასკადისთვის, Os და Os1. Os არის სწრაფად მზარდი საათებისთვის და Os1 არის ნელი ზრდის საათებისთვის. მიამაგრეთ ეს პინი მომდევნო ცვლის რეგისტრის მონაცემთა პინზე და ამ ჩიპიდან გადავსება შევა შემდეგში. განახლების დასასრული
მიმართავს ჩვენებას
მაგალითის პროგრამაში მე შევქმენი მასივი 8 ბაიტიანი სახელწოდებით row_buffer . თითოეული ბაიტი შეესაბამება 8x8 ეკრანის ერთ სტრიქონს, რიგი 0 არის ქვედა და მწკრივი 7 ზედა. თითოეული სტრიქონის ყველაზე უმნიშვნელო ნაწილი არის მარჯვნივ, ყველაზე მნიშვნელოვანი ნაწილი მარცხნივ. ეკრანის შეცვლა ისეთივე ადვილია, როგორც მონაცემების მასივში ახალი მნიშვნელობის ჩაწერა, შეწყვეტის სერვისი ზრუნავს ეკრანის განახლებაზე.
პროგრამირება
პროგრამირება აქ დეტალურად არ იქნება განხილული. მე გავაფრთხილებდი, რომ არ გამოიყენოთ DAPA პროგრამირების კაბელი, რადგან მე მჯერა, რომ თქვენ ვერ შეძლებთ ჩიპის დაპროგრამებას ერთხელ, როდესაც ის მუშაობს 12 MHz. ყველა სხვა სტანდარტული პროგრამისტი უნდა მუშაობდეს (STK500, MKII, Dragon, Parallel/Serial programmers და ა.შ.). დამცავები: დარწმუნდით, რომ დაპროგრამებთ დამცავებს 12MHz ბროლის გამოყენებისათვის: 0xC9fuse: 0xEF
მოქმედებაში
ჩიპის დაპროგრამების შემდეგ ეკრანზე უნდა გადავიდეს "გამარჯობა მსოფლიო!". აქ არის ვიდეო LED მატრიცის ქმედებებში. ვიდეოს ხარისხი საკმაოდ დაბალია, რადგან ეს გავაკეთე ჩემი ციფრული კამერის ვიდეო ფუნქციით და არა შესაბამისი ვიდეო ან ვებკამერა.
ნაბიჯი 5: მოდულური ცნებები




ეს პროექტი მასშტაბურია. ერთადერთი ჭეშმარიტი შემზღუდველი ფაქტორი იქნება ის, თუ რამდენად შეუძლია უზრუნველყოს თქვენი კვების ბლოკი. (სხვა რეალობა არის რამდენი LED და რეგისტრის გადამრთველი გაქვთ).
Მათემატიკა
მე ვმართავ LED- ებს დაახლოებით 15mA (5V-1.8vDrop/220ohms = 14.5mA). ეს ნიშნავს, რომ მე შემიძლია 33 სვეტამდე მიყვანა mic2981 დრაივერთან (500mA/15mA = 33.3). 8 -ზე გაყოფილი ჩვენ ვხედავთ, რომ ეს გვაძლევს საშუალებას დავაკავშიროთ 4 ცვლის რეგისტრატორი. ასევე გაითვალისწინეთ, რომ თქვენ არ გჭირდებათ 32 -ვე სვეტის გადაჭიმვა მარცხნიდან მარჯვნივ. ამის ნაცვლად, თქვენ შეგიძლიათ შექმნათ 16x16 მასივი, რომელიც გაყვანილია ისევე, როგორც 8x32 მასივი. ეს მოგვარდება 4 ბაიტიანი გადაცვლით…. პირველი ორი გადაინაცვლებს led– ში მე –9 რიგისთვის, მეორე ორი ბაიტი გადადის პირველ რიგში. ორივე სტრიქონი მიიღება მწკრივის დრაივერზე ერთი პინით.
კასკადური ცვლის რეგისტრაცია
ცვლის რეგისტრები გამოიყენება კასკადური ცვლის რეგისტრი. ეს ნიშნავს, რომ მონაცემების გადატანისას, გადავსება გამოჩნდება OS პინზე. ეს ძალიან სასარგებლო ხდება, რადგან ცვლადი რეგისტრების ერთობლიობა შეიძლება იყოს დაკავშირებული ერთმანეთთან, Os pin– ით მონაცემთა პინში და დამატებულია 8 სვეტი თითოეულ ახალ ჩიპთან ერთად. მიკროკონტროლერი. "კასკადური" ეფექტი იქმნება მაშინ, როდესაც პირველი ცვლის რეგისტრატორის OS უკავშირდება მეორის Data PIN- ს. პროგრამირება უნდა შეიცვალოს სვეტების გაზრდილი რაოდენობის ასახვის მიზნით. ორივე ბუფერი, რომელიც ინახავს ინფორმაციას და ფუნქცია, რომელიც ცვლის ინფორმაციას თითოეულ სვეტში, უნდა განახლდეს სვეტების რეალური რაოდენობის ასახვის მიზნით. ამის სქემა მოცემულია ქვემოთ, როგორც მაგალითი.
მრავალი რიგის დრაივერი
მწკრივის დრაივერს (mic2981) შეუძლია მიიღოს საკმარისი დენი 32 სვეტის გადასატანად. რა მოხდება, თუ გსურთ 32 -ზე მეტი სვეტი? შესაძლებელი უნდა იყოს რამოდენიმე რიგის დრაივერის გამოყენება მიკროკონტროლერის ქინძისთავების გამოყენების გარეშე. ჩვენ გვჭირდება მწკრივის დრაივერები, რათა მივიღოთ საკმარისი დენი LED- ების გასანათებლად.თუ თქვენ იყენებთ უფრო მეტ სვეტს, ვიდრე შესაძლებელია ერთდროულად განათება, დამატებით რიგის დრაივერებს შეუძლიათ მიაწოდონ საჭირო დენი. გამოიყენება მიკროკონტროლერის იგივე შესასვლელი ქინძისთავები, ასე რომ არ არის საჭირო რიგების სკანირების შეცვლა. სხვა სიტყვებით რომ ვთქვათ, თითოეული მძღოლი აკონტროლებს რიგებს 8x32 ბლოკისთვის. მიუხედავად იმისა, რომ 64 სვეტს შეიძლება ჰქონდეს ერთი და იგივე ფიზიკური რიგის განლაგება, ჩვენ ავყოფთ მწკრივთა ავტობუსებს ორ ნაწილად, ერთი მძღოლის გამოყენებით პირველი 32 სვეტის 8 რიგისთვის, ხოლო მეორე მძღოლისთვის მეორე 32 სვეტის 8 რიგისთვის და ასე შემდეგ. ამის სქემატური მაგალითი მოცემულია ქვემოთ. პოტენციური შეცდომები: 1. არ გამოიყენოთ მრავალი რიგის დრაივერი იმავე რაოდენობის სვეტებით. ამის გაკეთება ნიშნავს, რომ თითოეული ცვლის რეგისტრაციის პინი ერთდროულად მართავს ერთზე მეტ LED- ს. თქვენ უნდა გქონდეთ კომპლექტი 8 რეზისტორი (3k3) თითოეული რიგის დრაივერისთვის, ერთი კომპლექტი მრავალი რიგის დრაივერისთვის არ იმუშავებს, რადგან ის არ უზრუნველყოფს აუცილებელ დენს კარების გადასატანად.
Მაგალითად
მე გადავწყვიტე გაფართოვდეს ადრე აშენებული მატრიცა. მე დავამატე კიდევ 7 სტრიქონი სულ 15 -ზე, რადგან ეს არის ის, რაც შემიძლია მოვათავსო ამ პროტობორდზე. მე ასევე აღმოვაჩინე კონკურსი, რომელსაც Instructables აკეთებს სახელწოდებით "Let it Glow". აქ არის ვიდეო ჩემი გადაღების შესახებ. კიდევ ერთხელ ვიმეორებ, ციფრული კამერა, რომელსაც ვიდეოს გადასაღებად ვიყენებდი, სამართლიანობას არ წარმოადგენს. ეს მშვენივრად გამოიყურება ადამიანის თვალისთვის, განსაკუთრებით იქ, სადაც ყველა LED ნათურა ანათებს, მაგრამ ვიდეოში არც ისე კარგად გამოიყურება. ისიამოვნეთ: ამ უფრო დიდი ეკრანის წყაროს კოდი მოცემულია ქვემოთ.
ნაბიჯი 6: დასკვნა
შესაძლო დამატებები
I2CI– მ დატოვა ორი მავთულის ინტერფეისის (I2C) ქინძისთავები ამ დიზაინში გამოუყენებელი. არსებობს რამდენიმე საინტერესო პერსპექტივა, რომელსაც შეუძლია გამოიყენოს ეს ორი ქინძისთავი. I2C EEPROM- ის დამატება საშუალებას მოგცემთ შეინახოთ ბევრად უფრო დიდი შეტყობინებები. ასევე არსებობს პროგრამირების შემუშავების პერსპექტივა, რომ mega8 იქცეს I2C თავსებადი დისპლეის დრაივერში. ეს გახსნის შესაძლებლობას USB- ს ჰქონდეს მოწყობილობა, რომელიც აჩვენებს მონაცემებს თქვენს LED მასივზე I2C ავტობუსზე გადასვლით. შეყვანისას დარჩენილია ბევრი ქინძისთავები, რომლებიც შეიძლება გამოყენებულ იქნას ღილაკებისთვის ან IR მიმღებისთვის. ეს საშუალებას მისცემს შეტყობინებების პროგრამირებას მენიუს სისტემის საშუალებით. ჩვენება ერთი უბრალოდ წერს სიმბოლოებს ეკრანზე, მეორე კი გადააქვს პერსონაჟები ეკრანზე. მნიშვნელოვანია გახსოვდეთ, რომ ის, რასაც ხედავთ შუქზე, წარმოდგენილია მონაცემთა მასივში. თუ მონაცემების მასივის შესაცვლელად მოიფიქრებთ გზებს, განათებაც იგივენაირად შეიცვლება. ზოგიერთი მაცდური შესაძლებლობა მოიცავს სვეტებიდან გრაფიკული მეტრის შექმნას. ეს შეიძლება გამოყენებულ იქნას როგორც სიგნალის ანალიზატორი სტერეო. გადახვევა შეიძლება განხორციელდეს ზემოდან ქვემოდან ან ქვემოდან ზემოთ, თუნდაც მარცხნიდან მარჯვნივ. Გისურვებთ წარმატებას გაერთეთ!
ნაბიჯი 7: დაიცავით




მას შემდეგ, რაც კონტროლერის წრე თვეების განმავლობაში დავტოვე პურის დაფაზე, მე საბოლოოდ შევქმენი და გამოვწერე რამოდენიმე მიკროსქემის დაფა ამ პროტოტიპის გასაერთიანებლად. ყველაფერი მშვენივრად დასრულდა, მე არ ვფიქრობ, რომ სხვაგვარად გავაკეთებდი რამეს.
მიკროსქემის დაფის მახასიათებლები
- Shift რეგისტრები ცალკე დაფებზეა, რომელთა ერთმანეთთან მიჯაჭვულობა შესაძლებელია ეკრანის ზომის გასაზრდელად.
- საკონტროლო დაფას აქვს საკუთარი დენის მარეგულირებელი, ასე რომ მისი მართვა შესაძლებელია ნებისმიერი ენერგიის წყაროსთან, რომელიც უზრუნველყოფს 7v-30v (9 ვ ბატარეა ან 12 ვ სკამები, ორივე კარგად მუშაობს ჩემთვის).
- 6 პინიანი ISP სათაური მოყვება, ასე რომ მიკროკონტროლერის გადაპროგრამება შესაძლებელია დაფიდან ამოღების გარეშე.
- 4 პინიანი სათაური ხელმისაწვდომია I2C ავტობუსის მომავალი გამოყენებისთვის. ეს შეიძლება გამოყენებულ იქნას eeprom– ისთვის, რათა შეინახოს მეტი შეტყობინება ან თუნდაც გახადოს ეს მონა მოწყობილობა, რომელსაც აკონტროლებს სხვა მიკროკონტროლერი (RSS არავის აკრიტიკებს?)
- 3 მომენტალური ღილაკი შედის დიზაინში. მომავალში შემიძლია შეცვალო firmware, რომ ჩართო ამ ღილაკების გამოყენება.
შეკრება
მომეცით პლექსიგლასი, კუთხის ფრჩხილები, 6x32 მანქანების ხრახნები, თხილი და საყელურები, ასევე ონკანი, რომელიც ხრახნიან ხვრელებს და შემიძლია შევქმნა არაფერი.
მეორე პრიზი Let It Glow!
გირჩევთ:
RGB LED მატრიცა ნეოპიქსელის გამოყენებით: 8 ნაბიჯი (სურათებით)

RGB LED მატრიცა ნეოპიქსელის გამოყენებით: ამ გაკვეთილში მე ვაპირებ გაჩვენოთ როგორ ავაშენოთ 5*5 RGB LEDMATRIX NEOPIXEL– ის გამოყენებით. ამ მატრიქსით ჩვენ შეგვიძლია აჩვენოთ მომხიბლავი ანიმაციები, ემოციები და ასოები, რომლებიც ძალიან მიმზიდველია. დავიწყოთ
MAX7219 LED მატრიცა MQTT Esp8266 გამოყენებით: 6 ნაბიჯი

MAX7219 LED მატრიცა MQTT Esp8266– ის გამოყენებით: მე ვცდილობდი ჩემი MAX7219 LED ეკრანის დაკავშირება MQTT სერვერთან და ტექსტის გამოსაქვეყნებლად MQTT გამოწერისგან. მაგრამ ინტერნეტში ვერ მივიღე შესაფერისი კოდი, ასე რომ დავიწყე საკუთარი თავის შექმნა … და შედეგი საკმაოდ კარგად მოდის … შეგიძლიათ
RGB მატრიცა NovaStar– ის გამოყენებით: 5 ნაბიჯი

RGB მატრიცა NovaStar– ის გამოყენებით: წელს ჰელოუინისთვის ჩვენ გადავწყვიტეთ ცხენოსნობის თამაშის გაკეთება. მე მინდოდა უზარმაზარი ჩვენება და ყოველთვის მაინტერესებდა ჩინური RGB მატრიქსის პანელებით თამაში. წარსულში ვთამაშობდი პროგრამირებადი LED- ებით, მაგრამ ძნელია ბევრი გადაწყვეტილების მიღება
48 X 8 სენსორული LED მატრიცის ჩვენება Arduino და Shift რეგისტრატორების გამოყენებით .: 6 ნაბიჯი (სურათებით)

48 X 8 სენსორული LED მატრიქსის ჩვენება Arduino და Shift რეგისტრების გამოყენებით .: გამარჯობა ყველას! ეს არის ჩემი პირველი ინსტრუქცია და ეს არის 48 x 8 პროგრამირებადი გადახვევის LED მატრიცის დამზადება Arduino Uno და 74HC595 ცვლის რეგისტრების გამოყენებით. ეს იყო ჩემი პირველი პროექტი Arduino– ს განვითარების დაფაზე. ეს იყო გამოწვევა მ
5x4 LED ჩვენების მატრიცა ძირითადი ბეჭდის გამოყენებით 2 (bs2) და ჩარლიპლექსი: 7 ნაბიჯი

5x4 LED ჩვენების მატრიცა ძირითადი ბეჭდის 2 (bs2) და Charlieplexing გამოყენებით: გაქვთ ძირითადი ბეჭედი 2 და დამატებითი LED- ები? რატომ არ ვითამაშოთ charlieplexing– ის კონცეფციით და შევქმნათ გამომავალი მხოლოდ 5 ქინძისთავის გამოყენებით. ამ ინსტრუქციისთვის მე ვიყენებ BS2e– ს, მაგრამ BS2 ოჯახის ნებისმიერი წევრი უნდა მუშაობდეს