Სარჩევი:

3 მავთულის HD44780 LCD 1 დოლარზე ნაკლები: 5 ნაბიჯი
3 მავთულის HD44780 LCD 1 დოლარზე ნაკლები: 5 ნაბიჯი

ვიდეო: 3 მავთულის HD44780 LCD 1 დოლარზე ნაკლები: 5 ნაბიჯი

ვიდეო: 3 მავთულის HD44780 LCD 1 დოლარზე ნაკლები: 5 ნაბიჯი
ვიდეო: შესავალი LCD2004 LCD დისპლეი Arduino– ს I2C მოდულით 2024, ივლისი
Anonim
3 მავთულის HD44780 LCD 1 დოლარზე ნაკლები
3 მავთულის HD44780 LCD 1 დოლარზე ნაკლები

ამ სასწავლო ინსტრუქციაში ჩვენ შევისწავლით თუ როგორ შეგვიძლია HD44780 ჩიპსეტის საფუძველზე LCD- ის მიერთება SPI ავტობუსზე და მისი მართვა მხოლოდ 3 მავთულით 1 დოლარზე ნაკლებ ფასად. მიუხედავად იმისა, რომ ამ სახელმძღვანელოში გავამახვილებ ყურადღებას HD44780 ალფანუმერულ ჩვენებაზე, იგივე პრინციპი თითქმის იგივე იქნება ნებისმიერი სხვა LCD– ისთვის, რომელიც იყენებს 8 ბიტიან პარალელურ მონაცემთა ავტობუსს და მისი ადაპტირება შესაძლებელია 16 ბიტიანი მონაცემების ავტობუსების ეკრანებზე. რა HD44780 (და თავსებადი) დაფუძნებული ალფანუმერული ჩვენებები ჩვეულებრივ ხელმისაწვდომია 16x2 (2 სტრიქონი, რომელიც შედგება 16 სიმბოლოსგან) და 20x4 კონფიგურაციით, მაგრამ გვხვდება მრავალი სხვა ფორმით. ყველაზე "რთული" ჩვენება იქნება 40x4 დისპლეი, ამგვარი ჩვენება განსაკუთრებულია, რადგან მას აქვს 2 HD44780 კონტროლერი, ერთი ზედა ორ რიგში და მეორე ქვედა ორ რიგში. ზოგიერთ გრაფიკულ LCD– ს აქვს ორი კონტროლერიც. HD44780 LCD– ები შესანიშნავია, ისინი ძალიან იაფია, იკითხება და საკმაოდ ადვილია მუშაობა. მაგრამ მათ ასევე აქვთ გარკვეული ნაკლოვანებები, ეს ეკრანი იკავებს ბევრ I/O ქინძისთავს Arduino– სთან დაკავშირებისას. უბრალო პროექტებში ეს არ არის შემაშფოთებელი, მაგრამ როდესაც პროექტები დიდი გახდება, ბევრი IO- ით, ან სადაც გარკვეული ქინძისთავებია საჭირო ისეთი რამისთვის, როგორიცაა ანალოგური წაკითხვა ან PWM, ის ფაქტი, რომ ეს LCD– ები მოითხოვს მინიმუმ 6 ქინძისთავს, შეიძლება გახდეს პრობლემა. მაგრამ ჩვენ შეგვიძლია ამ პრობლემის გადაჭრა იაფად და საინტერესო გზით.

ნაბიჯი 1: კომპონენტების მიღება

მე გამოვიყენე TaydaElectronics იმ კომპონენტების უმეტესობისთვის, რომლებიც ამ პროექტში გამოვიყენე. თქვენ შეგიძლიათ მიიღოთ ეს ნაწილები ebay– ზეც, მაგრამ მარტივად გამოყენებისათვის, მე დაგაკავშირებთ Tayda– სთან. საყიდლების სია 2 - 74HC595 პაკეტი DIP161 - ზოგადი მამრობითი სათაური - 2 ქინძისთავები. ეს არ არის საჭირო, მე ეს გამოვიყენე როგორც უკანა განათების სამუდამოდ გამორთვის საშუალება.3 - კერამიკული კონდენსატორი - ტევადობა 0.1µF; ძაბვა 50V1 - ელექტროლიტური კონდენსატორი - ტევადობა 10µF; ძაბვა 35V1 - კერამიკული კონდენსატორი - ტევადობა 220pF; ძაბვა 50V1 - NPN -ტრანზისტორი - ნაწილი # PN2222A* 1 - 1k Ω Resistor1 - საპარსები პოტენომეტრი - მაქსიმალური წინააღმდეგობა 5kΩ1 - 470 Ω რეზისტორი* NPN ტრანზისტორით უკანა განათება დარჩება გამორთული, სანამ ის არ არის ჩართული პროგრამული უზრუნველყოფით. თუ გსურთ, რომ განათება იყოს ნაგულისხმევი, გამოიყენეთ PNP ტიპის ტრანზისტორი. ბიბლიოთეკის კოდში ცვლილებები მაინც უნდა მოხდეს. ამ სიის ქვეჯგუფი 0,744 აშშ დოლარია. პინის სათაური ასევე არ არის საჭირო, ასე რომ თქვენ შეგიძლიათ დაზოგოთ 15 ცენტი სწორედ იქ და ქვეჯამი იქნება $ 0.6.

ნაბიჯი 2: იცოდე შენი აპარატურა #1

იცოდე შენი აპარატურა #1
იცოდე შენი აპარატურა #1

აქ არის სტანდარტული პინი HD44780 LCD– დან, ის ასევე ძალიან ჰგავს ზოგიერთ გრაფიკულ LCD– ს. HD44780 შეუძლია იმუშაოს ორ რეჟიმში: 1. 4 ბიტიანი რეჟიმი, სადაც LCD– ზე გაგზავნილი თითოეული ბაიტი შედგება 2 4 ბიტიანი ნაწილისგან. 2. 8 ბიტიანი რეჟიმი, რომელზეც ჩვენ ყურადღებას გავამახვილებთ. LCD– ს აქვს ჯამში 16 ქინძი, 3 საკონტროლო პინი და 8 მონაცემთა პინი: RS - აკონტროლებს გვსურს ბრძანების ან მონაცემების გაგზავნა LCD– ზე. სადაც "მაღალი" ნიშნავს მონაცემებს (სიმბოლო) და "დაბალი" ნიშნავს ბრძანების ბაიტს. R/W - HD44780 კონტროლერი გაძლევთ საშუალებას წაიკითხოთ მისი ოპერატიული მეხსიერებიდან. როდესაც ეს pin არის "მაღალი", ჩვენ შეგვიძლია წავიკითხოთ მონაცემები მისი მონაცემების ქინძისთავებიდან. როდესაც ის "დაბალია" ჩვენ შეგვიძლია მონაცემების ჩაწერა LCD- ზე. მიუხედავად იმისა, რომ LCD– ის წაკითხვის ვარიანტი ზოგიერთ შემთხვევაში შეიძლება იყოს სასარგებლო, ჩვენ მას არ გავაანალიზებთ ამ გაკვეთილში და ჩვენ უბრალოდ დავაყენებთ ამ პინს, რომ უზრუნველვყოთ ის ყოველთვის ჩაწერის რეჟიმში. E - E არის „ჩართვის“პინი, ეს პინ არის გადართული "მაღალი" შემდეგ "დაბალი", რათა ჩაწეროს მონაცემები მის ოპერატიულ მეხსიერებაში და საბოლოოდ აჩვენოს იგი ეკრანზე. DB0-7 - ეს არის მონაცემთა ქინძისთავები. 4 -ბიტიან რეჟიმში ჩვენ ვიყენებთ მხოლოდ 4 მაღალ ბიტიან DB4 -DB7- ს, ხოლო 8 ბიტიან რეჟიმში ყველა მათგანი გამოიყენება. VSS - ეს არის გრუნტის პინი. VCC - ეს არის კვების ბლოკი, LCD გადის 5V დენის წყაროსთან, ჩვენ შეგვიძლია მარტივად მივაწოდოთ მას ენერგია Arduino- ს + 5v პინიდან. Vo - ეს არის პინი, რომელიც საშუალებას გაძლევთ დააყენოთ კონტრასტის დონე ეკრანისთვის, ის მოითხოვს პოტენომეტრს, ჩვეულებრივ გამოიყენება 5K Ohm ბანკი. LED + - ეს არის ენერგიის წყარო უკანა განათებისთვის. ზოგიერთ LCD– ს არ აქვს უკანა განათება და აქვს მხოლოდ 14 ქინძისთავები. უმეტეს შემთხვევაში ეს პინი ასევე მოითხოვს +5v კავშირს. LED- - ეს არის საფუძველი განათებისათვის. ** მნიშვნელოვანია ეკრანის მონაცემთა ფურცლის შემოწმება ან მისი PCB შემოწმება შუქის რეზისტორის შესამოწმებლად, LCD– ების უმეტესობას ჩაშენებული ექნება ისინი -ამ შემთხვევაში, ყველაფერი რაც თქვენ უნდა გააკეთოთ არის ენერგიის გამოყენება LED+ და მიწა LED- ზე. მაგრამ იმ შემთხვევაში, თუ თქვენს LCD– ს არ აქვს ჩაშენებული რეზისტორი შუქის განათებისთვის, მნიშვნელოვანია დაამატოთ ის, წინააღმდეგ შემთხვევაში შუქნიშანი მოიხმარს დიდ ენერგიას და საბოლოოდ დაიწვის. უმეტეს შემთხვევაში, ამ LCD ეკრანზე Arduino არის მისი გამოყენება 4 ბიტიანი რეჟიმში და დასაბუთებით R/W pin. ამ გზით ჩვენ ვიყენებთ ქინძისთავებს RS, E და DB4-DB7. 4 ბიტიან რეჟიმში გაშვებას აქვს კიდევ ერთი მცირე მინუსი, რადგან ეკრანზე მონაცემების ჩაწერას ორჯერ მეტი დრო სჭირდება ვიდრე 8 ბიტიანი კონფიგურაციისთვის. LCD– ს აქვს „მოგვარების“დრო 37 მიკროწამი, ეს ნიშნავს, რომ თქვენ უნდა დაელოდოთ 37 მიკროწამს, სანამ შემდეგ ბრძანებას ან მონაცემთა ბაიტს გაგზავნით LCD– ზე. მას შემდეგ, რაც 4 ბიტიან რეჟიმში ჩვენ უნდა გავაგზავნოთ მონაცემები ორჯერ თითოეულ ბაიტზე, საერთო დრო, რომელიც საჭიროა ერთი ბაიტის დასაწერად, აღწევს 74 მიკროწამს. ეს ჯერ კიდევ საკმაოდ სწრაფია, მაგრამ მე მინდოდა, რომ ჩემმა დიზაინმა მაქსიმალურად შედეგი გამოიღო. ჩვენი პრობლემის გადაწყვეტა გამოყენებული ქინძისთავების რაოდენობით არის სერიულიდან პარალელურ კონვერტორში…

ნაბიჯი 3: იცოდე შენი აპარატურა #2

იცოდე შენი აპარატურა #2
იცოდე შენი აპარატურა #2

რასაც ჩვენ გავაკეთებთ არის ადაპტერის შექმნა, რომელიც იღებს Arduino– დან გამომავალი კომუნიკაციის სერიულ ტიპს და მონაცემებს გარდაქმნის პარალელურ გამომავალში, რომლის მიწოდებაც შესაძლებელია ჩვენს LCD– ზე. მოყვება 74HC595 ჩიპი. ეს არის ძალიან იაფი და მარტივი საცდელი რეგისტრატორი. არსებითად, რას აკეთებს ის იღებს საათს და მონაცემების სიგნალებს, რომელსაც იგი იყენებს შიდა 8 ბიტიანი ბუფერის შესავსებად 8 ბოლო ბიტით, რომლებიც „დარეკა“. მას შემდეგ, რაც "Latch" (ST_CP) პინი "მაღალია", ის გადააქვს ეს ბიტები თავის 8 გამოსასვლელში. 595 -ს აქვს ძალიან ლამაზი თვისება, მას აქვს სერიული მონაცემების ამოღების პინი (Q7 '), ეს პინი შეიძლება გამოყენებულ იქნას 2 ან მეტი 595 ჯაჭვის დასადებად, რათა შეიქმნას სერიული პარალელური გადამყვანები, რომელთა სიგანე 16 და მეტია. ამ პროექტისთვის დაგვჭირდება ამ ჩიპებიდან 2. სქემა ასევე შეიძლება შეიცვალოს, რომ იმუშაოს ერთ 595 – თან 4 ბიტიან რეჟიმში, მაგრამ ეს არ იქნება გათვალისწინებული ამ სამეურვეო პროგრამით.

ნაბიჯი 4: ყველაფრის გაყვანილობა

გაყვანილობა ეს ყველაფერი
გაყვანილობა ეს ყველაფერი

ახლა, როდესაც ჩვენ ვიცით, თუ როგორ მუშაობს ჩვენი აპარატურა, შეგვიძლია ეს ყველაფერი შევაჯამოთ. სქემატურ რეჟიმში ჩვენ ვხედავთ 2 595 ჩიპს, რომელიც ერთმანეთზეა მიჯაჭვული და ქმნის 16 ბიტიან პარალელურ გამომავალს. ქვედა ჩიპი რეალურად არის მთავარი, ზედა კი მიჯაჭვულია მასზე. რასაც ჩვენ ვხედავთ აქ არის ის, რომ ქვედა 595 მართავს LCD– ის მონაცემების ქინძისთავებს 8 ბიტიანი კონფიგურაციით, ზედა ჩიპი აკონტროლებს RS სიგნალს და შუქნიშანს ტრანზისტორის ჩართვით ან გამორთვით. დაიმახსოვრე *შენიშვნა LCD განათების შესახებ იცოდეთ თქვენი აპარატურა #1 გვერდი, იმ შემთხვევაში თუ თქვენს LCD– ს არ აქვს უკანა განათების რეზისტორი, არ დაგავიწყდეთ დაამატოთ ერთი თქვენს წრეში. ჩემს შემთხვევაში LCD– ები მე უკვე მომეცა ჩამონტაჟებული რეზისტორით, ამიტომ გამოვტოვე ეს ნაბიჯი. კონტრასტი გამოიყენება 5K Ohm ბანკში, ერთი პინი მიდის GND– ზე, მეორე მიდის VCC– ზე და გამწმენდი VO pin– ზე LCD– ზე. კონდენსატორები, რომლებიც გამოიყენება LCD– ის და 595 – ის VCC ხაზებზე, ათავსებენ კონდენსატორებს, ისინი იქ არიან ჩარევისგან თავის დასაღწევად. ისინი არ არის აუცილებელი, თუ მუშაობთ პურის დაფაზე, მაგრამ უნდა იქნას გამოყენებული იმ შემთხვევაში, თუ თქვენ შექმნით ამ სქემის საკუთარ ვერსიას, რომელიც გამოიყენება "ლაბორატორიული პირობების" გარეთ. R5 და C9 ამ ძალიან კონკრეტული თანმიმდევრობით ქმნის RC შეფერხებას, რაც დარწმუნებულია, რომ 595 – ის მონაცემებში მონაცემებს აქვს დრო სტაბილიზაციისთვის, სანამ LCD– ზე ჩართვის პინზე მითითებული იქნება „მაღალი“და წაიკითხავს მონაცემებს. ქვედა 595 – ის Q7’გადადის 595 – ის სერიულ მონაცემთა შეყვანის თავზე, ეს ქმნის 595 – იანი გვირილის ჯაჭვს და ამით 16 ბიტიან ინტერფეისს. Arduino– სთან გაყვანილობა ადვილია. ჩვენ ვიყენებთ 3 მავთულის კონფიგურაციას Arduino- ს SPI ქინძისთავების გამოყენებით. ეს იძლევა მონაცემთა ძალიან სწრაფ გადაცემას, LCD– ზე 2 ბაიტის გაგზავნას ჩვეულებრივ სჭირდება დაახლოებით 8 მიკროწამი. ეს არის ძალიან სწრაფი და ის რეალურად ბევრად უფრო სწრაფია ვიდრე დრო, რაც LCD– ს სჭირდება მონაცემების დამუშავებისთვის, ამიტომ თითოეულ ჩაწერას შორის საჭიროა 30 მიკროწამიანი შეფერხება. SPI– ის გამოყენების ერთი ძალიან დიდი სარგებელი ის არის, რომ D11 და D13 ქინძისთავები იზიარებენ სხვა SPI მოწყობილობებს. ეს ნიშნავს, რომ თუ თქვენ უკვე გაქვთ სხვა კომპონენტი, რომელიც იყენებს SPI– ს, როგორიცაა ამაჩქარებელი, ეს გამოსავალი გამოიყენებს მხოლოდ ერთ დამატებით პინს ჩართვის სიგნალისთვის. შემდეგ გვერდზე ჩვენ ვნახავთ შედეგს. მე ავაშენე ზურგჩანთა პერფორდზე და ის ჩემთვის ძალიან კარგად მუშაობს აქამდე.

ნაბიჯი 5: შედეგი + ბიბლიოთეკა

შედეგი + ბიბლიოთეკა
შედეგი + ბიბლიოთეკა
შედეგი + ბიბლიოთეკა
შედეგი + ბიბლიოთეკა
შედეგი + ბიბლიოთეკა
შედეგი + ბიბლიოთეკა
შედეგი + ბიბლიოთეკა
შედეგი + ბიბლიოთეკა

"სურათი ათასი სიტყვა ღირს", მე ვეთანხმები ამ განცხადებას, ასე რომ, აქ მოცემულია ამ პროექტის საბოლოო შედეგის რამდენიმე სურათი. ეს არის დასრულებული პროდუქტის სურათები, Fritzing PCB ხედი არის პერფოფის განლაგება, რომელიც მე გამოვიყენე ზურგჩანთის შესაქმნელად. თქვენ შეიძლება თქვენთვის სასარგებლო აღმოჩნდეს, თუ გსურთ ააწყოთ საკუთარი თავი. მე იმდენად მომეწონა, რომ მე შევქმენი PCB DipTrace– ის გამოყენებით და შევუკვეთე 10 PCB– ის პარტია. მე დამჭირდება 2 ან 3 ერთეული საკუთარი თავისთვის, მაგრამ დანარჩენს გავცემ სიმბოლური ფასით, როდესაც მათ მივიღებ. ასე რომ თუ ვინმეს აინტერესებს გთხოვთ შემატყობინოთ. * რედაქტირება: PCB არის აქ და მუშაობს. აქ მოცემულია ამ პროექტის სრული სურათების გალერეა, მათ შორის ფაქტობრივი PCB. https://imgur.com/a/mUkpw#0 რა თქმა უნდა, არ დამვიწყებია ყველაზე მნიშვნელოვანი, ბიბლიოთეკა, რომლითაც გამოვიყენებ ამ წრეს. ის თავსებადია LiquidCrystal ბიბლიოთეკასთან, რომელიც შედის Arduino IDE– ში, ასე რომ თქვენ შეგიძლიათ მარტივად შეცვალოთ დეკლარაციები ესკიზის ზედა ნაწილში და არ მოგიწიოთ სხვა რამის შეცვლა თქვენს ესკიზში. ასევე არსებობს ესკიზის მაგალითი, რომელიც აჩვენებს როგორ მუშაობს ბიბლიოთეკის თითოეული ფუნქცია, ასე რომ გადახედეთ მას.

გირჩევთ: