HD44780 LCD Modülün Başlatma


10

Bir HD44780 klon LCD modülü KS0066U kullanıyorum. Cihazı hızlı bir şekilde kapatıp açmadığım dışında (on-> off-> on) modüldeki her şey yolunda gider. Bazı nedenlerden dolayı, güçte çok kısa bir kesinti, ekran modülünün 2 satırlı LCD ekran yerine 1 satırlı LCD olarak yanlış başlatılmasına neden olur. Bu davranışa ne sebep olur? Yazılımda bunu önlemenin bir yolu var mı?

EDIT: Görüntü denetleyicisini 8 bit modunda değil 4 bit modunda kullanıyorum.


Kimse sorunuzun oylamaya değer olduğunu düşünmedi, oldukça garip görünüyor.
Kortuk

Bazı HD44780 klonlarının veri sayfaları oldukça kötü yazılmış. Amacım, onları başlatmak için doğru yolun ne olduğu hakkında bir konuşma yapmaktı. Belki de onları 4 bit modunda kullanmada sorun yaşayan tek kişi benim.
mjh2007

Hayır, şu anda 4-bit modunda çalışan aynı sorunu yaşıyorum. En son basit bir karakter LCD programladığımdan bu yana yaklaşık 15 yıl geçti ve okuldayken hata ayıklamanın gerçek bir acı olduğunu hatırlıyorum. Yine de senin kadar uzak değilim - İlklendirmeyi bile doğru yapamıyorum çünkü henüz tek bir karakter görüntüleyemiyorum. :)
Dave

Yanıtlar:


4

Başlatma kodumu değiştirdim, böylece fonksiyon seti komutunun üst 4-bit nibbleını iki kez gönderdi. Daha sonra üst 4-bit kırıntıyı ve ardından alt 4-bit kırıntıyı yeniden gönderdim. Bu, üst 4-bit nibble'ı gönderip sonra üst 4-bit işlev seti komutunu ve ardından 4-bit altını gönderebileceğinizi gösteren veri sayfasıyla eşleşmiyor.

// Bazen sahte kod
portu = 0x20;
e = 1; e = 0;
bağlantı noktası = 0x20;
e = 1; e = 0;
bağlantı noktası = 0xC0;
e = 1; e = 0;

// Her zaman çalışır kod kodu
portu = 0x20;
e = 1; e = 0;
e = 1; e = 0;
bağlantı noktası = 0x20;
e = 1; e = 0;
bağlantı noktası = 0xC0;
e = 1; e = 0;


2

Benim tahminim, başlatma sırasınızda gerekli bir gecikmeyi kaçırmanızdır. Bir komut göndermeye çalıştığınızda ekran meşgulse, bu komut yok sayılır. Prosedürünüzü başlattığınızda, ekran dört bit modundaysa ve sadece bir komutun ilk yarısı olarak "0000" saatine sahipse, "0011" de saat çalıştırdığınızda, ekran tüm komutu "00000011" olarak görür Bu, ekranın 1,6 ms'ye kadar meşgul olmasına neden olur.

Bu arada, düşük dereceli veri kablolarını bir "0011" komutu ekrana gönderildiğinde, ekran tarafından görülen 8 bitin tamamı mod ayarlı bir komut oluşturacak şekilde ekrandan kablolamak mümkünse iyidir. kullandığınız ekran türü için doğrudur. Bu, halihazırda kullanımda olan bir ekranı sıfırlarken herhangi bir ekran hatalarının önlenmesine yardımcı olacaktır (ekranın periyodik olarak sıfırlanması iyi bir fikirdir, eğer hatasız bir şekilde yapılabilirse, ekran bir şekilde kötü bir moda girerse düzelteceğini garanti edecektir. kendisi) bulunur.


1

Sorun için bir çözüm buldum:

LCD denetleyiciyi başlatmadan / yapılandırmadan önce başlangıçta 1000 milisaniye gecikme ekledim. Benim için oldukça iyi çalıştı.

Daha düşük bir gecikme (100, 200 ms) bu kadar iyi sonuç vermedi. Sadece bir not: Sadece 4 bit veritabanında oldu.

İyi şanslar!


0

Kodunuza bir gecikme eklenmesi, böylece açıldığında LCD'ye başladığında başlatılacak kadar uzun süre verir. En fazla birkaç yüz milisaniye.

LCD gücünü mikrodenetleyiciye bağlamayı ve başlattıktan sonra bir saniye boyunca LCD'yi kapatmayı da deneyebilirsiniz.


Zaten başlangıçta 100 ms gecikme var
mjh2007

O zaman diğer önerimi dene. LCD gücünü doğrudan bir pinten kontrol edebilirsiniz; birkaç mA'dan fazla çekmemelidir.
Thomas O

izin verilen maksimum gecikme var mı? Bu LCD'lerle ilgili en önemli şeyin minimum miktarı beklemeniz olduğunu düşündüm, ancak zamanlamayı doğru alamazsanız, güvenli oynayabilir ve daha uzun süre bekleyebilirsiniz.
Dave

@Dave, "maksimum gecikme" yanlış yorumlanmış olabilir, bu sadece tavsiye ederim mantıklı bir gecikme. Örneğin, birkaç saat beklemek biraz aşırı olurdu ...
Thomas O

LOL! Ne demek istediğini anladım, ama LCD'mi ilk kullanıma hazır hale getirmediğim için bir şeylerin eksik olmadığından emin olmak istedim. Beni buraya iten kontrast olmadığından emin olmak için gidip bir tencere almam gerekip gerekmediğini merak ediyorum. :)
Dave

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.