Mündəricat:

1 Dollardan Az Üçün 3 Telli HD44780 LCD: 5 Addım
1 Dollardan Az Üçün 3 Telli HD44780 LCD: 5 Addım

Video: 1 Dollardan Az Üçün 3 Telli HD44780 LCD: 5 Addım

Video: 1 Dollardan Az Üçün 3 Telli HD44780 LCD: 5 Addım
Video: "İncəgülü" saz-söz şöləni Talış kəndində ( 3-cü hissə) 2024, Iyul
Anonim
1 Dollardan Az 3-Telli HD44780 LCD
1 Dollardan Az 3-Telli HD44780 LCD

Bu təlimatda, HD44780 çipsetinə əsaslanan bir LCD -ni SPI avtobusuna necə bağlaya biləcəyimizi və 1 dollardan aşağı qiymətə yalnız 3 tellə idarə edə biləcəyimizi öyrənəcəyik. Bu dərslikdə HD44780 alfasayısal ekrana diqqət yetirsəm də, eyni prinsip 8 bitlik paralel məlumat ötürücü istifadə edən hər hansı digər LCD ilə eyni dərəcədə işləyəcək və 16 bitlik məlumat avtobusları olan displeylərə uyğunlaşdırıla bilər.. HD44780 (və uyğun) əsaslı alfasayısal displeylər ümumiyyətlə 16x2 (16 simvoldan ibarət 2 sətir) və 20x4 konfiqurasiyada mövcuddur, lakin daha çox formada tapıla bilər. Ən "mürəkkəb" ekran 40x4 ekran olardı, bu cür displey özünəməxsusdur, çünki 2 HD44780 nəzarətçi var, biri üst iki sıra, biri alt iki sıra üçün. Bəzi qrafik LCD -lərdə iki nəzarətçi də var. HD44780 LCD -ləri əladır, çox ucuz, oxunaqlıdır və işləmək olduqca asandır. Ancaq bəzi çatışmazlıqları da var, bu ekranlar Arduino -ya qoşulduqda bir çox G/Ç pinləri tutur. Sadə layihələrdə bu narahatlıq doğurmur, amma layihələr böyük olduqda, çoxlu IO ilə və ya Analog oxumaq və ya PWM kimi şeylər üçün müəyyən pinlərə ehtiyac duyulduqda, bu LCD -lər üçün minimum 6 pin tələb oluna bilər. problem Ancaq bu problemi ucuz və maraqlı bir şəkildə həll edə bilərik.

Addım 1: Komponentləri əldə edin

Bu layihədə istifadə etdiyim komponentlərin çoxu üçün TaydaElectronics -dən istifadə etdim. Bu hissələri ebay -dan da əldə edə bilərsiniz, amma istifadə rahatlığı üçün sizi Tayda ilə əlaqələndirəcəyəm. Alış -veriş siyahısı2 - 74HC595 paketi DIP161 - Ümumi kişi başlığı - 2 sancaq. Bu lazım deyil, mən bunu arxa işığı qalıcı olaraq söndürmək üçün istifadə etdim.3 - Seramik kondansatör - 0.1μF tutum; gərginlik 50V1 - Elektrolitik kondansatör - tutumu 10µF; gərginlik 35V1 - Seramik kondansatör - tutum 220pF; gərginlik 50V1 - NPN -Transistor - hissə # PN2222A* 1 - 1k Ω Rezistor1 - Trimmer Potensiometr - maksimum müqavimət 5kΩ1 - 470 Ω Rezistor* NPN tranzistoru ilə arxa işıq proqram tərəfindən açılana qədər sönəcək. Varsayılan olaraq arxa işığı yandırmaq istəyirsinizsə, PNP tipli bir tranzistor istifadə edin. Verilən kitabxananın kodunda dəyişikliklər edilməlidir. Bu siyahının ümumi cəmi 0.744 dollardır. Pin başlığı da tələb olunmur, buna görə də orada 15 sent saxlaya bilərsiniz və alt cəmi 0,6 dollar olacaq.

Addım 2: Avadanlığınızı tanıyın #1

Avadanlığınızı tanıyın #1
Avadanlığınızı tanıyın #1

İşdə HD44780 LCD -dən standart bir pin, eyni zamanda bəzi qrafik LCD -lərə çox bənzəyir. HD44780 iki rejimdə işləyə bilər: 1. LCD-yə göndərilən hər baytın 2 4 bitlik hissədən ibarət olduğu 4 bitlik rejim. 2. Diqqətimizi çəkəcəyimiz 8 bitlik rejim. LCD -də ümumilikdə 16 sancaq, 3 nəzarət pin və 8 məlumat pinləri var: RS - LCD -yə bir əmr və ya məlumat göndərmək istəməyimizi nəzarət edir. "Yüksək" məlumat (bir xarakter) və "aşağı" bir bayt əmrini ifadə edir. R/W - HD44780 nəzarətçisi RAM -dan oxumağa imkan verir. Bu pin 'yüksək' olduqda, məlumat pinlərindən məlumatları oxuya bilərik. "Aşağı" olduqda, məlumatları LCD -yə yaza bilərik. LCD -dən oxumaq seçimi bəzi hallarda faydalı ola bilsə də, bu dərslikdə keçməyəcəyik və hər zaman Yazı rejimində olmasını təmin etmək üçün bu pimi əsaslandıracağıq. E - E 'Enable' pinidir, bu pin məlumatları RAM -a yazmaq və nəticədə ekranda göstərmək üçün 'yüksək' sonra 'aşağı' olaraq dəyişdirilir. DB0-7 - Bunlar məlumat pinləridir. 4 bit rejimində yalnız 4 yüksək bit DB4 -DB7 istifadə edirik və 8 bit rejimində hamısı istifadə olunur. VSS - Bu torpaq pinidir. VCC - Bu güc pinidir, LCD 5V enerji təchizatı ilə işləyir, onu asanlıqla Arduino + 5v pinindən güclə təmin edə bilərik. Vo - Bu, ekran üçün kontrast səviyyəsini təyin etməyə imkan verən pindir, potensialiometr tələb edir, normal olaraq 5K Ohm qazan istifadə olunur. LED + - Bu arxa işıq üçün enerji mənbəyi. Bəzi LCD -lərin arxa işığı yoxdur və yalnız 14 pin var. Əksər hallarda bu pin +5v bağlantısı da tələb edir. -bu halda, etməniz lazım olan şey LED+ -ə güc tətbiq etmək və LED-ə torpaq verməkdir. Ancaq LCD-də arxa işıq üçün quraşdırılmış bir rezistor yoxdursa, onu əlavə etməyiniz vacibdir, əks halda arxa işıq çox enerji sərf edəcək və nəticədə yanacaq. Əksər hallarda bu LCD-nin Arduino-ya bağlanma üsulu, 4 bit rejimində istifadə etmək və R/W pinini topraklamaqdır. Bu şəkildə RS, E və DB4-DB7 pinlərindən istifadə edirik. 4 bitlik rejimdə çalışmağın başqa bir kiçik dezavantajı var ki, məlumatların ekrana yazılması 8 bitlik konfiqurasiyada olandan iki dəfə çox çəkir. LCD-də 37 mikrosaniyənin 'həll' müddəti var, bu da LCD-yə növbəti əmr və ya məlumat baytı göndərməzdən əvvəl 37 mikrosaniyəni gözləməli olduğunuz deməkdir. 4 bit rejimində hər bayt üçün iki dəfə məlumat göndərməli olduğumuz üçün, bir bayt yazmaq üçün lazım olan ümumi vaxt 74 mikrosaniyəyə qədər gedir. Bu hələ kifayət qədər sürətli, amma dizaynımın ən yaxşı nəticələr verməsini istədim. İstifadə olunan pinlərin sayı ilə bağlı problemimizin həlli Serialdan Paralelə çeviricidədir …

Addım 3: 2 saylı Avadanlığınızı tanıyın

Avadanlığınızı bilin #2
Avadanlığınızı bilin #2

Etəcəyimiz şey, Arduinodan çıxan serial məlumat növünü alan və məlumatları LCD -yə ötürülə bilən paralel bir çıxışa çevirən bir adapter qurmaqdır. 74HC595 çipi gəlir. Bu, çox ucuz və işlədilən növbəli reyestrdir. Əslində, daxili 8 bitlik bir tamponu 'saatlanmış' son 8 bitlə doldurmaq üçün istifadə etdiyi bir saat və məlumat siqnalları alır. 'Mandal' (ST_CP) pinini 'yüksək' vəziyyətə gətirdikdən sonra bu bitləri 8 çıxışına köçürür. 595 -in çox gözəl bir xüsusiyyəti var, seriyalı məlumat çıxışı pininə (Q7 ') malikdir, bu pin 2 və ya daha çox 595 -ləri birləşdirərək 16 və ya daha çox bitlik Paralel Paralel adapterlər yaratmaq üçün istifadə edilə bilər. Bu layihə üçün bu çiplərdən 2 -nə ehtiyacımız olacaq. Şematik, 4 bit rejimində tək bir 595 ilə işləmək üçün dəyişdirilə bilər, lakin bu dərslikdə yer almayacaq.

Addım 4: Hamısını bağlayın

Hamısını Qabaqlamaq
Hamısını Qabaqlamaq

İndi avadanlıqlarımızın necə işlədiyini bildiyimiz üçün hər şeyi bağlaya bilərik. Şematik olaraq, 16 bit paralel bir çıxış meydana gətirmək üçün zəncirlənmiş 2 595 çipi görürük. Alt çip əslində əsasdır, üstü isə papatya ilə zəncirlənmişdir. Burada gördüyümüz budur ki, alt 595, 8 bitlik bir konfiqurasiyada LCD-nin məlumat pinlərini idarə edir, üst çip RS siqnalını və arxa işığı tranzistoru açaraq söndürərək idarə edir. LCD arxa işığı haqqında *qeydini yadda saxla 1 nömrəli aparatını tanı, LCD -nin arxa işığa qarşı müqaviməti yoxdursa, dövrə daxil etməyi unutmayın. Mənim vəziyyətimdə LCD-lər artıq quraşdırılmış bir rezistorla gəldim, buna görə də bu addımı atladım. Kontrast 5K Ohm qazan vasitəsilə tətbiq olunur, bir pin GND -yə, ikincisi VCC -yə, silecek isə LCD -də Vo pininə gedir. LCD və 595 -in VCC xətlərində istifadə olunan kondansatörlər, kondansatörləri ayırır, müdaxiləni aradan qaldırmaq üçün oradadır. Bir çörək taxtası üzərində işləyirsinizsə, bunlar bir şərt deyil, ancaq "laboratoriya şərtləri" xaricində istifadə etmək üçün bu dövrənin öz versiyasını qurduğunuz halda istifadə edilməlidir. R5 və C9, bu xüsusi qaydada, RC gecikməsini yaradır, bu da 595 -in çıxışlarında olan məlumatların LCD -də Enable pinini "yüksək" olaraq təyin etmədən və məlumatları oxumadan əvvəl sabitləşmək üçün vaxt tapmasını təmin edir. Alt 595 -in Q7 ', üstdəki 595 -in seriyalı məlumat girişinə daxil olur, bu 595 -lərdən ibarət bir papatya zənciri və beləliklə 16 bitlik bir interfeys yaradır. Arduino -ya qoşulmaq asandır. Arduinonun SPI pinlərindən istifadə edərək 3 telli bir konfiqurasiya istifadə edirik. Bu, çox sürətli məlumat ötürülməsinə imkan verir, LCD -yə 2 bayt göndərmək adətən təxminən 8 mikrosaniyə çəkir. Bu çox sürətlidir və əslində LCD -nin məlumatların işlənməsi üçün lazım olan vaxtdan çox daha sürətlidir, beləliklə hər yazı arasında 30 mikrosaniyə gecikmə lazımdır. SPI istifadə etməyin çox böyük bir faydası, D11 və D13 pinlərinin digər SPI cihazları ilə paylaşılmasıdır. Bu o deməkdir ki, SPI istifadə edən bir akselerometr kimi başqa bir komponentiniz varsa, bu həll aktivləşdirmə siqnalı üçün yalnız bir əlavə pin istifadə edəcək. Növbəti səhifədə nəticəni görəcəyik. Mükəmməl bir taxta üzərində bir sırt çantası tikdim və bu günə qədər mənim üçün çox yaxşı işləyir.

Addım 5: Nəticə + Kitabxana

Nəticə + Kitabxana
Nəticə + Kitabxana
Nəticə + Kitabxana
Nəticə + Kitabxana
Nəticə + Kitabxana
Nəticə + Kitabxana
Nəticə + Kitabxana
Nəticə + Kitabxana

"Bir şəkil min sözə dəyər", mən bu fikirlə razıyam, buna görə də bu layihənin son nəticəsinin bəzi şəkilləri var. Bunlar tamamlanmış məhsulun şəkilləridir, Fritzing PCB görünüşü, sırt çantamı düzəltmək üçün istifadə etdiyim mükəmməl taxtadır. Öz qurmaq istəyirsinizsə faydalı ola bilər. Çox bəyəndim ki, DipTrace istifadə edərək bir PCB hazırladım və 10 ədəd PCB sifariş etdim. Özümə 2 və ya 3 ədəd lazım olacaq, amma qalanını aldığım zaman simvolik bir qiymətə təqdim edəcəyəm. Odur ki, kimsə maraqlanırsa, mənə bildirin. * Redaktə edin: PCB -lər buradadır və işləyirlər. Həqiqi PCBlər də daxil olmaqla bu layihənin tam şəkil qalereyası. https://imgur.com/a/mUkpw#0 Əlbəttə ki, ən vacib şeyi, bu dövrəni istifadə edəcək bir kitabxananı unutmadım. Arduino IDE -yə daxil olan LiquidCrystal kitabxanası ilə uyğundur, buna görə də eskizin üst hissəsindəki bəyannamələri asanlıqla əvəz edə bilərsiniz və eskizinizdə başqa heç nə dəyişməyinizə ehtiyac yoxdur. Kitabxanadakı hər bir funksiyanın necə işlədiyini göstərən bir nümunə eskiz də var, buna görə yoxlayın.

Tövsiyə: