PBP'de 4x40 LCD

Başlatan aslan_korhan, 04 Haziran 2007, 02:47:48

aslan_korhan

PicBasic'te 4x40 LCD nasıl kullanılır?
Bu LCD'nin 2 adet Enable ( E ) ucu olduğundan nasıl birşey yapılır.

DEFINE LCD_DREG	PORTB	                  ' DATA pinleri PortB
DEFINE LCD_DBIT 0	                        ' DATA pinleri RB0 - RB4
DEFINE LCD_RSREG PORTB	                   ' RS PortB
DEFINE LCD_RSBIT 4	                       ' RS PortB4
DEFINE LCD_EREG	PORTB                     ' E PortB
DEFINE LCD_EBIT 5	                        ' E PortB5
DEFINE LCD_BITS 4		                     ' 4 bit çalışma
DEFINE LCD_LINES 4	                       ' 4 satır LCD


Burada bir değişiklik yapılarak 2 Enable ucu ile çalışırmı?
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

arslan74

Merhaba,

Aslında 4x80 iki tane 4x20 displayın yan yana gelmesinden başka şey değil. Hangi haneye bilgi göndermek istyorsan o haneye ait Enable ucu aktif yapacaksın.


Selamlar.

Logan

@aslan_korhan, 4x40 lcd'de dikkat etmen gereken konu, 2 kere init etmen gerektiğidir.Gerisi ise @arslan74'ün dediği gibi hangi satırı kullanmak istiyorsan o satırı aktif edeceksin...
İmza.

aslan_korhan

Bende zaten 2x20 olarak tanıttım ve hangi bölümü istiyorsam onun Enable ucunu high yaptım. Ama nedense olmadı. Abuk subuk birşeyler çıkıyor ekranda. Proteus ile deniyorum.
Enable ucunun define satırını yazmayınca ise ekranda hiçbirşey çıkmıyor.
Biraz daha kurcalayacğım...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

CaFFeiNe

@aslan_korhan

hocam isis'te 4bit lcd diye bir deneme dosyası var onun lcd sini 40x4 ile değiştirip enable uçlarını birleştirince aşağıdaki resimdeki gibi bir sonuç oluyor, yani 2 adet 40x2 lcd gibi davranıyor



şimdi aklıma şöyle birşey geliyor pic in 2 ucunu çıkış yapıp bu uç ile (röle yada elektronik bir anahtar ile) lcd ye giden enable ucunu anahtarlasak ve kodumuzda lcdye yazı göndermeden önce istedigimiz enable ucunu seçsek olabilir belki

anlatabildimmi bilemiyorum

aslan_korhan

2 enable ucunu birleştirince olmadı. 1. satıra yazı gönderince 1. ve 3. satırlarda ayni şey çıkıyor.

Her iki Enable ucunuda PIC'e ayrı ayrı bağladım ama henüz sonuç yok...
Bir inverter ile tek uçta olabilir aslında ama oda olmadı..
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

arslan74

Merhaba,

LCDinit fonksiyonunda iki E ucu beraber kullan. Sonra bilgi göndermede E ucunu ayrı ayrı kontrol et.


Selamlar.

aslan_korhan

Şöyle birşey yapınca oldu gibi :
ADCON1 = $7F                               ' Dijital
DEFINE OSC 4                               ' 4MHz Clock
OPTION_REG = $7f                           ' PORTB'nin çekme dirençlerini devreye sok
DEFINE LCD_DREG	PORTB	                   ' DATA pinleri PortB
DEFINE LCD_DBIT 0	                       ' DATA pinleri RB0 - RB4
DEFINE LCD_RSREG PORTB	                   ' RS PortB
DEFINE LCD_RSBIT 4	                       ' RS PortB4
DEFINE LCD_EREG	PORTB                      ' E PortB
DEFINE LCD_EBIT 5	                       ' E PortB5
DEFINE LCD_BITS 4		                   ' 4 bit çalışma
DEFINE LCD_LINES 2	                       ' 2 satır LCD

LCD  VAR  PORTB.6
output lcd

pause 500

lcd = 1
lcdout $FE,1,"1. satir"
LCDOUT $FE,$c0,"2. satir"
FLAGS=0

lcd = 0
lcdout $FE,1,"3. satir"
LCDOUT $FE,$C0,"4. satir"

end


Fakat bu sefer nedense 2. ve 3. satırların başına gelemiyorum.



Bu satırın başlangıcı farklı bir adres diye düşündüm ama ne yaptıysam baştan yazamıyorum...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

CaFFeiNe

LCDOUT $FE,$C0,"4. satir"

artık picbasic kullanmiyorum ama sanırım $C0 adres bilgisi olması lazım bunu değiştirince yazının pozisyonu değişmiyormu?

aslan_korhan

C0 normalde 2. satırın başı. Bunu değiştirerek başlangıçta değişiyor ama resimde görülen pozisyondan daha öne gitmiyor. Ancak ileriye gidiyor.

İlginç bir durum...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

CaFFeiNe

burada bir 4x40 lcd datasheeti var

http://www.crystalfontz.com/products/4004a/CFAH4004AYYHJP.pdf

birde böyle deneyebilirmisiniz $C0 yerine $40 gibi



aslında bir döngü kurarak bütün adresleri deneseniz bulunur sanıyorum


aslan_korhan

40'ıda denedim yine olmadı...

Yukarıdaki link ise Proton için. Satır olayı PBP'den farklı olduğundan bir faydası olmadı maalesef.

Zaten 4x40 LCD olayından vaz geçtim artık. Ama başka projeler için buna bir çözüm bulsaydık iyidi...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

CaFFeiNe

hocam bu işte bir tuhaflık var
CCS ile lcd420.c header dosyasını modifiye ederek tüm adresleri denedim yinede 2. satırın (ve 4.satırın) sadece yarısından sonrasına yazabiliyoruz

isiste lcdnin özelliklerinde Row1 için 80-A7 Row2 için A8-CF adres aralığı tanımlanmış
80-A7 adres aralığında problem yok ama sadece C0-CF adreslerine yazabiliyorum A8-BF adreslerine yazınca lcdde birşey gözükmüyor

artık isistemi birşey var anlamadım

mustafacan

ekranın 2 adet 2x40 ekran olduğunu ve 2 adet E bacağı olduğunu gözardı etmeyelim. e1 ve e2 yi kısa devre edince 1.satır = 3.satır    2.satır=4.satır oluyor.
Keşfedilecek çok teknoloji var. Boş Vaktim Yok!