avatar_ete

Pic Basic Ders-03 (LCD Kullanımı ve Özel Karekter Tanımlama)

Başlatan ete, 24 Kasım 2013, 23:21:23

pwm3434

 sorun,  program  sıfıra  geliyor  ama  sen farkedemşyosun  çünkü ıf  komutunun  şartı  sıfır  olduğu  için,  yani  sıfır  olduğu an if  komutu LCD den   hızlı  hareket  ediyor,program  ıf  komutunu  uyguluyor o an.  şimdi ıf komutu şartındaki  255   değeri  nerden  çıktı  der gibisin,  10 9 8 7 6 5 4 3 2 1 0 255 254 253  diyerek  devam  eder  programram. tabiki  değişken byte tipinde  olursa.

'===============================================
basla:
lcdout $fe,1,"Kalan sure:",dec3 hafiza," ","sn."
pause 1000
hafiza=hafiza-1
IF hafiza=255 then gosub bitir
goto basla
'===============================================

emrecelik3673


ete

şu şekilde yap;
basla:
hafiza=hafiza-1
lcdout $fe,1,"Kalan sure:",dec2 hafiza," ","sn."
pause 1010
if hafiza=0 then bitir

goto basla


Ete



emrecelik3673

Dediğiniz şekilde yaptım çalıştı ETE hocam. Yalnız ekranda görmek istediğimiz en yüksek rakamın bir fazlasını yazmak gerekiyor. Örn. 0-59 saydırmak istiyorsak hafıza=60 yazmak gerekiyor hocam. Teşekkürler.

karabayram

Hocam Affınıza sığınarak bir düzeltme yapmak istiyorum.
Ders notlarındaki pdf formatındaki dökümanda;
proje 2b deki aşağıdaki komutları yazınca LCD sayıyor ama alt satırda görüntüler üst üste biniyor.
   BASLA:
    LCDOUT  "SAYI= ",#SAYI
    ARA:
    LCDOUT  "SAYI=",#SAYI
   
Doğrusu şöyle yapıca düzeliyor .Bir  inceleyin isterseniz.
BASLA:
    LCDOUT  $FE ,$80,"SAYI= ",#SAYI
ARA:
    LCDOUT $FE ,1
    LCDOUT  $FE ,$80,"SAYI=",#SAYI

ete

Bu yazdıklarını nerden aldın da yazdın. Hiç öyle bir satır yok o programda.
Sen şöyle yazmışsın;
   BASLA:
    LCDOUT  "SAYI= ",#SAYI
Programdaki satır ise;
BASLA:
     LCDOUT $FE,2,"  SAYI = ",#SAYI 
hiç bir birine benziyormu?
Basic derslerinden Ders-3'ü yeniden yükle doğrusu ile çalış.

Benim yazdığım şekli ile üst üste binme diye bir şey olmaz. Ama seni yazdığın şekilde olur elbette.

Ete

karabayram

kusura bakmayın ben derslerinizi başka siteden indirmiştim bir yanlışlık olmuş teşekkürler.

yanuma

RWREG : elektronikte alıcı kısmı gibimi yani yazılan bilgi ekrana aktarmak için bu ucumu kullanıyor

ete

Evet o uçları kullanıyor. Normal şartlarda LCD ye bilgi aktarmak için 8 bitlik sıralı pin kullanılması gerekiyor.
Ancak adamlar düşünmüşler ve bağlantı için kullanılan pin sayısını azaltmak için 4+4 sistemini kullanmışlar. Bu sayede 8 pin yerine sondaki 4 pini kullanarak bağlantı yapıyoruz. İşlemci de 8 bitlik bilgiyi 2 parça halinde önce ilk 4 biti sonrada diğer 4 biti yollayarak 8 biti tamamlamışlar. Bu nedenle LCD tanımlamalarında bağlantının 4 bitlik sistemle mi yoksa 8 bitlik sistemlemi yapılacağını belirtiyoruz.
4bitlik bağlantıda LCD nin son 4 data pini Pic'in ya sıfırdan başlayan yada 4 den başlayan bitlerine bağlanır. Rastgele pin seçilemez. Örnek vermek gerekirse PORTB.0 dan başlanabilir yada PORTB.4 den başlanabilir. PortB.2 den başlayamaz.
Bunun sebebi 4+4 bitin hesaplama metodudur. 8 bitlik bilgi VERI=%11001101 olsun İlk 4 bit %1101 son 4 bit ise %1100 olacaktır.
ilk 4 biti almak kolay DATA=VERI &  %00001111
İkinci 4 biti almak için ise DATA=(VERI & %11110000)>>4 şeklinde kolayca yapılır.
Data bitleri sıfır dan başlıyor ise PORT=DATA şeklinde kolaylıkla verilebilir bu bitler.  4 den başlıyor ise bitler 4 bit sola kaydırılarak verilir.

Ete

Burak

Alıntı yapılan: yanuma - 03 Ağustos 2015, 12:49:02
RWREG : elektronikte alıcı kısmı gibimi yani yazılan bilgi ekrana aktarmak için bu ucumu kullanıyor

RW yani Read / Write pini LCD'lerdeki data'nın akış yönünü ifade eder ... Örneğin RW pinini lojik 0'da tuttuğumuzda LCD'nin içindeki görüntü süren entegreye " Biz sana Picten veri yollayacağız " demek isteriz ve ardından
LCDOUT  
komutuyla veri yollarız .. Ama bu pini Lojik 1'e çektiğimizde "Biz senden okuma yapacağız yani , senin entegrenden pic'e doğru veri akışı olacak " demek isteriz .. Bunu biraz açıklamak gerekirse ;

Örneğin kullandığın LCD ekran 2x16'lık bir LCD ekran ve bu ekranın 1. satır 1. sütunundaki karakteri öğrenmek istiyoruz  ... Bu durumda
LCDIN $80,[karakter] 
şeklinde bir komut ile orada görüntülenen karakteri ASCII değer olarak 1 bytelık veri altında , program başında
karakter var byte
şeklinde oluşturduğumuz karakter değişkenine kaydediyoruz ...
Bu komutla ilgili daha fazla bilgi ve örnek için burayı tıkla ..

Bu pinin özelliği işte budur ..

Burak
Ω Gens Una Sumus Ω

yanuma

Alıntı yapılan: Burak GÜNAY - 03 Ağustos 2015, 17:21:12
RW yani Read / Write pini LCD'lerdeki data'nın akış yönünü ifade eder ... Örneğin RW pinini lojik 0'da tuttuğumuzda LCD'nin içindeki görüntü süren entegreye " Biz sana Picten veri yollayacağız " demek isteriz ve ardından
LCDOUT  
komutuyla veri yollarız .. Ama bu pini Lojik 1'e çektiğimizde "Biz senden okuma yapacağız yani , senin entegrenden pic'e doğru veri akışı olacak " demek isteriz .. Bunu biraz açıklamak gerekirse ;

Örneğin kullandığın LCD ekran 2x16'lık bir LCD ekran ve bu ekranın 1. satır 1. sütunundaki karakteri öğrenmek istiyoruz  ... Bu durumda
LCDIN $80,[karakter] 
şeklinde bir komut ile orada görüntülenen karakteri ASCII değer olarak 1 bytelık veri altında , program başında
karakter var byte
şeklinde oluşturduğumuz karakter değişkenine kaydediyoruz ...
Bu komutla ilgili daha fazla bilgi ve örnek için burayı tıkla ..

Bu pinin özelliği işte budur ..

Burak

ileri seviye'ye  gelene kadar lojik=0 degerini kullanacam 

eneskrspn

Hocam merhabalar,

Ben LCD kodlarını yazıyorum hepsini tamamladıktan sonra programda 16F84A yı seçiyorum. Compile tıkladıgım zaman LCD ikinci satırda hata veriyor. Sizin kodları da kopyalayıp Compile'a tıklıyorum yine aynı hatayı veriyor. Acaba sorun ne yardımcı olabilir misiniz ?
IEEE KSÜ

ete

Sorun elbette yanlış kod yazman.Yazdıklarını kontrol et ve doğrusunu yaz düzelir.
Ne yazdığın kodu görüyorum nede yaptığın işi takip edecek kadar yakınındayım.
Kullandığın derleyici nedir onu bilmiyorum. Makinan ka bitlik makina onu bilmiyorum.
Bu kadar az bilgiye bu cevap çok bile bence.
Ete

Adem ESEN

Merhaba bir problemim var LCD ekranında PORT DURUMLARI GÖSTERİLECEK yazdıktan sonra beklemeye geçiyor ve hiç birşey yazmıyor hata nerde bulamadım normalde birinci butona basılınca porta.2 ye toprak geliyor ve PORTA.2=0 yazması lazımken hiçbir şey yazmıyor hata nerde gösterebilirmisiniz?

Powered by EzPortal