İçindekiler:

1 Dolardan Az için 3 Telli HD44780 LCD: 5 Adım
1 Dolardan Az için 3 Telli HD44780 LCD: 5 Adım

Video: 1 Dolardan Az için 3 Telli HD44780 LCD: 5 Adım

Video: 1 Dolardan Az için 3 Telli HD44780 LCD: 5 Adım
Video: Ayaz Babayev — Boş Adamlar (Rəsmi Musiqi Videosu) 2024, Aralık
Anonim
1 Dolardan Az için 3 Telli HD44780 LCD
1 Dolardan Az için 3 Telli HD44780 LCD

Bu talimatta, HD44780 yonga setine dayalı bir LCD'yi SPI veriyoluna nasıl bağlayabileceğimizi ve 1 dolardan daha az bir fiyata yalnızca 3 kabloyla nasıl kullanabileceğimizi öğreneceğiz. Bu eğitimde HD44780 alfanümerik ekrana odaklanacak olsam da, aynı prensip 8 bit paralel veri yolu kullanan diğer tüm LCD'ler için hemen hemen aynı şekilde çalışacak ve 16 bit veri yoluna sahip ekranlara uyacak şekilde çok kolay bir şekilde uyarlanabilir.. HD44780 (ve uyumlu) tabanlı alfanümerik ekranlar genellikle 16x2 (16 karakterden oluşan 2 satır) ve 20x4 konfigürasyonlarında mevcuttur, ancak daha birçok biçimde bulunabilir. En 'karmaşık' ekran 40x4 ekran olacaktır, bu ekran türü özeldir, çünkü biri üstteki iki sıra için diğeri alttaki iki sıra için olmak üzere 2 HD44780 kontrol cihazına sahiptir. Bazı grafik LCD'lerde de iki denetleyici bulunur. HD44780 LCD'ler harika, çok ucuz, okunabilir ve çalışması oldukça kolay. Ancak bazı dezavantajları da var, bu ekranlar Arduino'ya bağlandığında çok fazla I/O pini kaplıyor. Basit projelerde bu bir endişe kaynağı değildir, ancak projeler büyüdüğünde, çok fazla IO ile veya Analog okuma veya PWM gibi şeyler için belirli pinlere ihtiyaç duyulduğunda, bu LCD'lerin minimum 6 pin gerektirmesi gerçeği haline gelebilir. sorun. Ama bu sorunu ucuz ve ilginç bir şekilde çözebiliriz.

Adım 1: Bileşenleri Alma

Bu projede kullandığım bileşenlerin çoğu için TaydaElectronics kullandım. Bu parçaları ebay'den de alabilirsiniz, ancak kullanım kolaylığı için sizi Tayda'ya bağlayacağım. Alışveriş Listesi2 - 74HC595 paket DIP161 - Genel erkek başlık - 2 pin. Bu gerekli değil, bunu arka ışığı kalıcı olarak devre dışı bırakmanın bir yolu olarak kullandım.3 - Seramik Kondansatör - kapasitans 0.1µF; voltaj 50V1 - Elektrolitik Kondansatör - kapasitans 10µF; voltaj 35V1 - Seramik Kondansatör - kapasitans 220pF; voltaj 50V1 - NPN-Transistör - parça # PN2222A*1 - 1k Ω Direnç1 - Düzeltici Potansiyometre - maksimum direnç 5kΩ1 - 470 Ω Direnç* Bir NPN transistörü ile yazılım tarafından açılıncaya kadar arka ışık kapalı kalacaktır. Arka ışığın varsayılan olarak açık olmasını istiyorsanız, PNP tipi bir transistör kullanın. Yine de sağlanan kitaplığın kodunda değişiklik yapılması gerekecek. Bu liste için alt toplam 0,744 ABD dolarıdır. Pin başlığı da gerekli değildir, bu nedenle tam orada 15 sent tasarruf edebilirsiniz ve ara toplam 0,6 $ olacaktır.

Adım 2: Donanımınızı Tanıyın #1

Donanımınızı Tanıyın #1
Donanımınızı Tanıyın #1

İşte bir HD44780 LCD'den standart bir pin, aynı zamanda bazı grafik LCD'lere de çok benziyor. HD44780 iki modda çalışabilir: 1. LCD'ye gönderilen her bir baytın 2 adet 4 bitlik parçadan oluştuğu 4 bit modu. 2. Odaklanacağımız 8 bit modu. LCD'de toplam 16 pin, 3 kontrol pini ve 8 data pini bulunur: RS - LCD'ye komut mu yoksa veri mi göndermek istediğimizi kontrol eder. Burada 'yüksek' veri (bir karakter) ve 'düşük' bir komut baytı anlamına gelir. R/W - HD44780 denetleyici, RAM'inden okumanıza izin verir. Bu pin 'yüksek' olduğunda veri pinlerinden veri okuyabiliriz. 'Düşük' olduğunda LCD'ye veri yazabiliriz. LCD'den okuma seçeneği bazı durumlarda faydalı olsa da, bu eğitimde bunun üzerinden geçmeyeceğiz ve her zaman Yazma modunda olmasını sağlamak için bu pini basitçe topraklayacağız. E - E 'Etkinleştir' pinidir., bu pin önce 'yüksek', sonra 'düşük' olarak değiştirilir ve verileri RAM'ına yazıp sonunda ekranda gösterir. DB0-7 - Bunlar veri pinleridir. 4-bit modunda sadece 4 yüksek bit DB4-DB7 kullanıyoruz ve 8 bit modunda hepsi kullanılıyor. VSS - Bu topraklama pini. VCC - Bu güç pini, LCD 5V güç kaynağıyla çalışıyor, Arduino'nun +5v pininden kolayca güç besleyebiliriz. Vo - Ekranın kontrast seviyesini ayarlamanıza izin veren pin budur, potansiyometre gerektirir, normalde 5K Ohm pot kullanılır. LED+ - Bu arka ışık için güç kaynağı. Bazı LCD'lerde arkadan aydınlatma yoktur ve yalnızca 14 iğnesi vardır. Çoğu durumda bu pin ayrıca +5v bağlantı gerektirir. LED- - Bu, arka ışığın zeminidir.** Ekran veri sayfasını kontrol etmek veya arka ışık direncini kontrol etmek için PCB'sini kontrol etmek önemlidir, çoğu LCD'de bunları yerleşik olarak bulundurur. -in, bu durumda tek yapmanız gereken LED+'ya güç ve LED-'e toprak vermektir. Ancak LCD'nizde arka ışık için yerleşik bir direnç yoksa, bir tane eklemeniz önemlidir, aksi takdirde arka ışık çok fazla güç tüketecek ve sonunda yanacaktır. Çoğu durumda, bu LCD'nin Arduino'ya bağlanma şekli, onu 4 bit modunda kullanmak ve R/W pinini topraklamaktır. Bu şekilde RS, E ve DB4-DB7 pinlerini kullanıyoruz. 4 bit modunda çalıştırmanın başka bir küçük dezavantajı vardır, çünkü ekrana veri yazmanın 8 bitlik bir yapılandırmaya göre iki kat daha uzun sürmesi. LCD'nin 37 mikrosaniyelik bir 'yerleşme' süresi vardır, bu, LCD'ye bir sonraki komutu veya veri baytını göndermeden önce 37 mikrosaniye beklemeniz gerektiği anlamına gelir. 4 bit modunda her bayt için iki kez veri göndermemiz gerektiğinden, tek bir bayt yazmak için geçen toplam süre 74 mikrosaniyeye kadar çıkıyor. Bu hala yeterince hızlı, ancak tasarımımın mümkün olan en iyi sonuçları üretmesini istedim. Kullanılan pin sayısı ile ilgili problemimizin çözümü, Seriden Paralel dönüştürücüye…

Adım 3: Donanımınızı Tanıyın #2

Donanımınızı Tanıyın #2
Donanımınızı Tanıyın #2

Yapacağımız şey, Arduino'dan gelen seri tipte bir haberleşmeyi alan ve verileri LCD'mize beslenebilecek paralel bir çıkışa dönüştüren bir adaptör oluşturmak. 74HC595 yongası geliyor. Bu, çok ucuz ve kullanımı kolay bir shift register'dır. Özünde yaptığı şey, bir saat ve dahili 8 bitlik bir arabelleği 'zamanlanmış' son 8 bit ile doldurmak için kullandığı veri sinyallerini almaktır. 'Latch' (ST_CP) pini 'high' konumuna getirildiğinde, bu bitleri 8 çıkışına taşır. 595'in çok güzel bir özelliği var, bir seri veri çıkış pinine (Q7') sahip, bu pin 2 veya daha fazla 595'i papatya diziminde kullanmak için 16 veya daha fazla bit genişliğinde Seriden Paralel adaptörler oluşturmak için kullanılabilir. Bu proje için bu çiplerden 2'sine ihtiyacımız olacak. Şematik, 4 bit modunda tek bir 595 ile çalışacak şekilde de değiştirilebilir, ancak bu, bu öğretici tarafından ele alınmayacaktır.

Adım 4: Hepsini Kablolama

Hepsini Kablolama
Hepsini Kablolama

Artık donanımımızın nasıl çalıştığını bildiğimize göre, hepsini bağlayabiliriz. Şematikte, 16 bit paralel çıkış oluşturmak için birbirine zincirlenmiş 2 595 yonga görüyoruz. Alttaki çip aslında ana çiptir ve üstteki çip buna zincirleme bağlanmıştır. Burada gördüğümüz, alttaki 595'in 8 bitlik bir konfigürasyonda LCD'nin veri pinlerini çalıştırdığı, üstteki çipin bir transistörü açıp kapatarak RS sinyalini ve arka ışığı kontrol etmesidir. Donanımınızı tanıyın #1 sayfasındaki LCD arka ışığıyla ilgili * notu hatırlayın, LCD'nizde arka ışık direnci yoksa devrenize bir tane eklemeyi unutmayın. Benim durumumda LCD'ler zaten yerleşik bir dirençle geldi, bu yüzden bu adımı atladım. Kontrast 5K Ohm'luk bir pot aracılığıyla uygulanır, bir pim GND'ye, ikincisi VCC'ye ve silecek de LCD'deki Vo pimine gider. LCD'ler ve 595'lerin VCC hatlarında kullanılan kapasitörler ayrıştırıcı kapasitörlerdir, parazitten kurtulmak için oradadırlar. Bir breadboard üzerinde çalışıyorsanız bunlar bir zorunluluk değildir, ancak "laboratuar koşulları" dışında kullanılmak üzere bu devrenin kendi sürümünüzü oluşturmanız durumunda kullanılmalıdır. Bu çok özel sırada R5 ve C9, 595'in çıkışlarındaki verilerin, LCD'deki Etkinleştirme pimi 'yüksek' olarak ayarlanmadan ve verileri okumadan önce sabitlenmesi için zamana sahip olmasını sağlayan bir RC gecikmesi oluşturur. Alttaki 595'in Q7'si, üstteki 595'in seri veri girişine girer, bu 595'lik bir papatya zinciri ve dolayısıyla 16 bitlik bir arayüz oluşturur. Arduino'ya kablo çekmek kolaydır. Arduino'nun SPI pinlerini kullanarak 3 kablolu bir konfigürasyon kullanıyoruz. Bu, çok hızlı veri aktarımlarına izin verir, LCD'ye 2 bayt göndermek genellikle yaklaşık 8 mikrosaniye sürer. Bu çok hızlıdır ve aslında LCD'nin verileri işlemesi için geçen süreden çok daha hızlıdır, bu nedenle her yazma arasında 30 mikrosaniyelik bir gecikme gerekir. SPI kullanmanın çok büyük bir yararı, D11 ve D13 pinlerinin diğer SPI cihazlarıyla paylaşılmasıdır. Bu, ivmeölçer gibi SPI kullanan başka bir bileşeniniz varsa, bu çözümün etkinleştirme sinyali için yalnızca bir ekstra pin kullanacağı anlamına gelir. Bir sonraki sayfada sonucu göreceğiz. Bir perfboard üzerine bir sırt çantası yaptım ve şu ana kadar benim için çok iyi çalışıyor.

Adım 5: Sonuç + Kitaplık

Sonuç + Kitaplık
Sonuç + Kitaplık
Sonuç + Kitaplık
Sonuç + Kitaplık
Sonuç + Kitaplık
Sonuç + Kitaplık
Sonuç + Kitaplık
Sonuç + Kitaplık

"Bir resim bin kelimeye bedeldir", bu ifadeye katılıyorum, işte bu proje için nihai sonucun bazı resimleri. Bunlar tamamlanmış ürünün resimleridir, Fritzing PCB görünümü, sırt çantamı oluşturmak için kullandığım perfboard düzenidir. Kendiniz yapmak istiyorsanız işinize yarayabilir. O kadar beğendim ki DipTrace kullanarak bir PCB tasarladım ve 10 adet PCB sipariş ettim. Kendim için 2 veya 3 üniteye ihtiyacım olacak, ancak geri kalanını aldığımda sembolik bir fiyata sunacağım. Bu yüzden eğer ilgilenen varsa lütfen bana bildirin. * Düzenleme: PCB'ler burada ve çalışıyorlar. İşte gerçek PCB'ler de dahil olmak üzere bu proje için tam resim galerisi. https://imgur.com/a/mUkpw#0 Tabii ki en önemli şeyi unutmadım, bu devreyi birlikte kullanmak için bir kütüphane. Arduino IDE ile birlikte gelen LiquidCrystal kitaplığı ile uyumludur, böylece çiziminizin üst kısmındaki bildirimleri kolayca değiştirebilirsiniz ve çiziminizde başka hiçbir şeyi değiştirmek zorunda kalmazsınız. Ayrıca kütüphanedeki her bir fonksiyonun nasıl çalıştığını gösteren örnek bir çizim var, o yüzden kontrol edin.

Önerilen: