PBP ve lcd çalışmasında sorun

Başlatan yesilxx, 25 Eylül 2008, 22:50:13

yesilxx

Kullandığım pic 16f628, aşağıdaki bağlantı ve kodları kullanıyorum fakat lcd dede yazılar çıkmıyor, 1. satır komle 16 adet kare var 2 satırda bişey yok bi çok deneme yaptım fakat lcd ye yazdıramadım, hazır bi hex buldum onu yükleyip bağlantıları ona göre değiştirdim tarih saat olarak çalıştı ama pbp de yaptığım hiç bir şeyi çalıştıramıyorum nedeninide anlayamadım bu konuda yardımcı olurmusunuz en son bu bağlantı ve bu şamyı dendim bundada sonuç aynı 1. satır komple 16 hane kare dolu 2. satır boş

PIC-Basic ile LCD kullanımı oldukça basitleştirilmiştir.  RS ve E uclarını PIC'in istediginiz ucuna tanimlayabilirsiniz.






'Programınızın başlangıç kısmına bu satırları ekleyin

DEFINE LCD_DREG PORTB               ' lcd 4 bit olarak tanımlaniyor
DEFINE LCD_DBIT 4



DEFINE LCD_RSREG PORTB              ' lcd rs= port b,1 tanimlaniyor
DEFINE LCD_RSBIT 1



DEFINE LCD_EREG PORTB               ' lcd Enable= port b,3 tanimlaniyor
DEFINE LCD_EBIT 3

DEFINE LCD_BITS 2
DEFINE LCD_LINES 4                

DEFINE LCD_COMMANDUS 2000      ' LCD komutlari arasinda bekleme suresi
DEFINE LCD_DATAUS 50                ' LCD data yazma icin bekeleme suresi                                                '

main:

LCDOut $fe, 1     'ekrani siler kursoru ilk satir basina goturur

lCDOUT $fe, 2 , "Merhaba         "  'birinci satira verilen bilgiyi yazar
LCDOUT $FE, $C0,"Arkadas         "

pause 500

goto main


mustafa_cmbz

goto main


buradaki komutu end olarak değiştirirsen sorun düzeliyor...bunun sebebi de lcd'ye yazma daki gecikme süresinin kısa oluşundan kaynaklanan bir problem...süre çok kısa olduğu için çok kısa sürelerde lcd'ye yazıp siliyor bu yüzden sen onu göremiyorsun....

eğer lcd'de yazı yazıp bununla beraber de buton değişkenlerini kontrol etmek istiyrsan her yazının bir alt programını oluşturacaksın...

misal:

ana:

lcdout $fe,1
pause 200
lcdout $fe,1 " set=> menu"

goto set_buton_kontrol

set_buton_kontrol:

ıf set=1 then menu

goto set_buton_kontrol

end


gibi olmalı yani yazıyı yazdıktan sonra tekrar tekrar aynı döngü içerisinde lcd'ye yazı yazıp silersen ekranda titreme yapar....benim edindiğim tecrübeler bu kadar...umarım azda olsa  tecrübemi paylaşabilmişimdir.....kolay gelsin...

Logan

"main" etiketinden önce "pause 500" satırı koy, büyük ihtimalle çalışacaktır. Bu süre, LCD'nin init süresidir es geçmemek gerekir.
İmza.

Gurkan-Demirbas

Merhabalar
DEFINE LCD_BITS 4      'LCD interface # of bits
DEFINE LCD_LINES 2    ' LCD # of lines

şeklinde değiştirip denermisin??

Alıntı Yap"main" etiketinden önce "pause 500" satırı koy, büyük ihtimalle çalışacaktır. Bu süre, LCD'nin init süresidir es geçmemek gerekir.
LCD için init süresi önemlidir !..
Ben init süresi olarak 500 yerine PAUSE 100 koyuyorum, bir sorun yaşamadım şimdiye kadar.

Herkese iyi bayramlar diliyorum.
GürkaN

ete

LCD inin kullanımına geçmeden programın hemen başında;

LCDOUT $FE,1
Pause 300

şeklinde bir komut verilmesi gerekir.
Bu komut LCD iç registerlerinin ayarlanması için kesin olarak gerekli bir komuttur. Bunu yapmazsanız program ilk gördüğü LCDOUT $fe,1 komutu ile bunu yapmaya kalkar ama gerekli bekleme süresi dolmadan hemen arkasına bir şeyler yaz diye komut verilirse LCD muhtemelen ya hiç bir şey yazmaz yada abuk subuk şeyler yaza ve bir dahada programiçinde çalışmaz.

Şimdi Mustafa Cımbız arkadaşın önerdiği program sonuna END yazma fikri LCD nin tek seferde init yapılmasından dolayı bir şeyler yazması esasına dayanıyor. Çünki END ile program yalnızca bir kere init yapılmış oluyor.

Kısaca sorunun doğru cevabı MAIN etiketinden önce programa;
LCDOUT $fe,1
Pause 300

satırlarını ilave etmektir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

mustafa_cmbz

hocam ben arkadaşa sadece lcd'de örnek uygulama yaparken tek seferlik yazı yazdırırken devamlı programı tekrar etmesin vs. diye end koymasını tavsiye ettim...sizin önerdiğiniz yöntem doğrudur ona bir sözüm yok fakat ne kadar pause komutu koysanızda ekranda titremeler oluyor...birde eğer fark ettiyseniz verdiğim örnek kodda sizin de bahsettiğiniz komutları kullanmış bulunuyorum...


ete hocam birde bir düzeltme yapmak istiyorum benim soyadım cımbız değil CAMBAZ belki bilerek öyle yazdınız veya çevremde benim varlığımdan hoşnut olmayan kısımdan bir takım kişiler sizin ile iletişim kurup benim hakkımda ileri geri konuş olabilirler...bundan da kaynaklanıyor olabilir...bunları daha öncede yaşadım....o yüzden uyarmak istedim...eğer sizi uyarmak ile bir hata yaptıysam afola....kolay gelsin...

yesilxx

programın başına

LCDOUT $FE,1
Pause 300

koyduktan sonra lcd de yazılar gözüktü dün akşam iftardan sonra gece 11 e kadar bununla uğraştım ama başaramamıştım, anladımki bic basic öğrenebilmek için kesinlikle gerçek uygulamalı çalışmak gerekiyormuş simüle programlarından çok daha iyi sorunlarla gerçek olarak uğraşmak daha iyiymiş, burayı geçtik şimdilik.  yardımcı olan arkadaşların kadir gecesi hayırlı olsun bu arada ayrıca tüm islam alemininde