M

LCD SORUN

Başlatan mamik_34, 30 Temmuz 2012, 13:59:40

mamik_34

MERHABA HOCAM
PROGRAN İSİSTE NORMAL ÇALIŞIOYOR LCD de GÖRÜNTÜ GAYET NORMAL ŞEKİLDE VAR ANCAK GERÇEĞE DÖKTÜĞÜMDE LCD IŞIĞI YANIYOR ANCAK HİÇ BİR YAZI YOK  DATA BACAKLARI  DOĞRU "E,RW,RS"  BAĞLANTLARI DOĞRU HOCAM SİZCE SORUN NE OLABİLİR

LCD MODEL=2*40 WH4002A

ete

Programı ve devre şemasını vermez isen bir şey söylemek münkün olmaz. Genellikle doğru olduğu düşünülen pek çok şeyin yanlış olduğunu yeterince görmüş bir kişiyim.
Madem buraya bir şey koymadın o zaman olası sorunları yazayım bari,

1. LCD data bacakları mutlaka PORTA.0 veya PORTB.0 veya PORTB.4  pinlerinden başlaması gerekir.
2. LCD 1 nolu bacak GND ye, 2 nolu bacak +5V ta bağlanması gerekir. 3 nolu bacak kontrast bacağıdır. 10K lık pot'un orta ucuna bağlanır. Diğer iki pot ucu ise +5V ta ve GND ye bağlanır.
3. Programda mutlaka açılışta LCDOUT $fe,1 şeklinde bir LCD yi aktive etme komutu verilmeli ve peşinden 300 ms bir ragister yerleştirme gecikmesi verilmelidir.
4. Bu kriterler yerine getirildikten sonra artık LCD ye bir şey yazdırılabilir.
5. Daha önce ekran adreslerini vermiştim. Ekrana bir şey yazdırdığın zaman onun görünür olabilmesi için yeterli gecikmeyide vermelisin. Mesela;
LCDOUT $FE,1,"deneme":pause 200
bu komut hem ekranı siler hemde ekrana deneme yazdırım 200 ms süre ile ekranda kalmasını sağlarki buda onun görünür olmasını sağlar.
Şöyle bir komut satırı dizisi olsun.
LCDOUT $FE,1," deneme"
LCDOUT $FE,1," DENEDIK"
LCDOUT $fe,1
bu satırlar çalıştığı zaman ekranda hiç bir şey göremezsin. Çünkü her bir satır bir işlev yapar ekrana bir şey yazar ama son satır hepsini sen görmeden siler. Bu nedenle görülmesi gereken satırların sonuna mutlaka gecikme koyman gerekir.
Bazı programlarda ekrana yazdırıp yeniden bir başka ekrana yazdırma satırına gelinceye kadar aradan 100 ms den fazla zaman geçebilir. Bu durumda ayrıca gecikme vermeye gerek olmaz.

Bunları kontrol edip yazdıklarına yeniden bakmalısın. Yada devreni kontrol et. İşlemcin çalışmıyorsa ekranda ya hiç bir şey yada üst sırada siyah renkli kutucuklar görürsün. Bu nedenle işlemcinin çalıştığından emin olmak için bir pininden HIGH çıkartıp gerekirse oraya led bağlamak yada aynı lede flash yaptırarak programın çalıştığından emiğn olmak gerekebilir.

Ete


mamik_34

HOCAM   LCD BACAKALRI PORTD PİNİNE BAĞLI BURDA GÖRÜNTÜ OLAMAZMIYIM VEYA ALMAK İÇİN NE YAPMALIYIM

ete

Elbette alırsın. Kural aynı data bacaklari ya sıfır yada 4 nolu pinden baslayacak. Digerleri fark etmez.
Ete

colddanger

HOCAM MERHABA
BENDE LCD İÇİN BİR SORU SORMAK İSTERİM

BENDE MAMİK_34 ARKADAŞIM GİBİ WH4002A LCD KULLANIYORUM.WH4002A LCD Sİ İÇİN FABRİKASI DDRAM ADRESLİ OLARAK 00 DAN 67 YE KADAR KARAKTER ADRES SATIR BİLGİSİ VERMİŞ . LCD Yİ NORMAL DEVREME BAGLADIĞIMDA BENDE HERHANGİBİR YAZI ALAMIYORUM.BAGLANTILARIM GAYET NORMAL.BENİMDE KAFAMA BU KOMUT SATIRLARI TAKILDI.LCDYE GÖNDERMEK İÇİN YAZDIĞIM KOMUT (LCDOUT $FE,$1) LCD SATIRINA MI YAZAR YOKSA LCD ÜZERİNDEKİ RAMLERE MI YAZAR. DDRAM ADRESLERİ DERKEN NEYİ KASTEDİYOR ACABA

ete

#5
Mesajlarınızı büyük harflerle yazmayııııııııııın!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Bu forum dilinde kızmak bağırmak anlamına gelir. Böyle bir niyetiniz var ise yazın ama yoksa küçük harfleri tercih ediniz lütfen.


Bütün LCD ler aynı mantığı kullanır. Ekranın bir ram adresi vardır. Yazılan bilgi ram'e yazılır ama sen onu ekranda görürsün.

Varsa bu LCD nin data sheet linkini verin bir bakayım nedir terslik diye.

Ete

Not: gerek kalmadı data sheet'e baktım. Karekter ram adresleri  1 satır için $00 - $27 arası, 2. satır için $40 - $67 arası olduğu yazılı. Bu durumda aşağıdakileri deneyin bakalım,
LCD tanımlamalarını yapıp açılış gecikmesini verdikten sonra,
LCDOUT $fe,$00,"birinci satır"
LCDOUT $fe,$40,"ikinci satır"

colddanger

öncelikle özür dilerim
ilginiz için teşekkürler hemen deneyip sonucu bildirecegim.

colddanger

hocam dediğiniz gibi 1 satır lcdout $fe,$00 2 satır lcdout $fe,$40 deneme yaptım fakat bu sefer ısısde de çalışmadı.

ete

İsisde çalışmayacağı kesin. Çünkü isis ekran adreslerini $80 , $c0 kabul ediyor. biz ise $00 ve $40 verdik.
Gerçek devrede deneyin lütfen.
Ete

colddanger

devre üzerinde de çalışmadı

colddanger

Hocam kod satırım aşagıdadır.gerçek devre baglantılarım gayet normal fakat lcd ye bilgi alamıyorum .Sizin sölediğiniz gibi ram adreslerini de kullandım fakat gerçek devremde değişiklik olmadı.lcd bozuk diye düşündüm ve 2*16 lcd üzerinde deneme yaptım fakat ondada herhangibir yazı alamadım.Bir yerdehatam var büyük olasılıkla yardımlarınızı bekliyorum


     DEFINE LCD_DREG       PORTB   
    DEFINE LCD_DBIT      4         
    DEFINE LCD_RSREG   PORTB
    DEFINE LCD_RSBIT   0 
   
    DEFINE LCD_EREG       PORTB
    DEFINE LCD_EBIT      2 
    DEFINE LCD_BITS      4
    DEFINE LCD_LINES   2
   
BASLA:
     LCDOUT $FE,$00,   "KANAL_A"
     LCDOUT $FE,$10,   "KANAL_B"
     LCDOUT $FE,$40,   "KANAL_C"
     LCDOUT $FE,$50,   "KANAL_D"

mamik_34

 hocam aynı sorun  bendede var nasıl çözebilirm

colddanger

mamik_34 de de bu sorun olduguna göre acaba winstar a ait bu lcd lerde proplem olabilir mi.aklıma takıldı şimdi?

ete

Mamik_34,
LCD yi bu yazdığın kodlarla kullanıyorsan ekranda bir şey görmemen doğal.
Dersleri ve özellikle LCD kullanımını iyice okumanızı öneririm.
Her LCD için bir açılış gecikmesi verilmesi gerekir. Bu LCD kendi iç registerlerinin yerleştirilmesi için gereklidir.
Üstelik LCD nin bir de ön açılışını yapılması gerekir (initalize).
Bu işlemler için, lcd bağlantı tanımlamalarını yaptıktan sonra,
pause 150
LCDOUT $fe,1
Pause 250
şeklinde bir komut dizisi verin.

Daha sonra
LCDOUT $fe,$02,"deneme" şeklinde bir satır verin bakalım yazacakmı.
Bir sonraki adımda
LCDOUT $fe,$c0,"IKINCI SATIR DENEMESI" şeklinde bir satır deneyin.
Daha sonrada $00 ve $40 ekran adresleri ile deneme yapın.

Ete

mamik_34

hocam aşağıdaki kodları tek tek denedim 1. kodumda isiste çalışıyor gerçek devrede çalışmıyor 2.kodumda isiste çalışmıyor gerçek devredede çalışmıyor yukarda colddanger yaptığı gibi bende dısplayımı değiştireyim dedim 2*40 wh4002a bir tane daha denedim ondada çalışmadı devre şemam ektedir  gerçek devrem isisteki devrenin bire bir aynıdır bağlantı hatam yoktur (benim gözümden kaçar die başka 2 tane arkadaşıma gösterdim )
kod1 :

GRIS:
    LCDOUT $FE,1 
    PAUSE 5
LCDOUT $FE,2,"acılıs"
LCDOUT $FE,$C0, "ss"


kod2:
LCDOUT $FE,1 
PAUSE 5
LCDOUT $FE, $00, "ACILIS

LCDOUT $FE, $40, " SS"

lcdkod:
DEFINE OSC 4
    DEFINE LCD_DREG       PORTB   
    DEFINE LCD_DBIT      4         
    DEFINE LCD_RSREG   PORTB
    DEFINE LCD_RSBIT   0 
    define LCD_RWREG    PORTB
define LCD_RWBIT     1
    DEFINE LCD_EREG       PORTB
    DEFINE LCD_EBIT      2 
    DEFINE LCD_BITS      4
    DEFINE LCD_LINES   2





Powered by EzPortal