LCD DATA PİNLERİ ve BUTON KULANIMI HAKKINDA

Başlatan ali, 03 Aralık 2015, 22:40:55

gogoce

Alıntı yapılan: İlyas KAYA - 04 Aralık 2015, 00:12:34
Lcd read yapılarak okunamaz mi ? Hiç denemediğim bir durum. Deneyip görmek lazım. Sonuçta lcd read yapınca Data bacaklarini okuyabiliriz diye düşünüyorum.
LCD read sanırım R/W pini kullanılarak yapılacak yabancı bir forumda görmüştüm . ekrandaki bilgiyi geri alabiliyordu bulursam tekrar mesaj olarak eklerim buraya
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

Burak

Ω Gens Una Sumus Ω

ali

#17
hocam hafıza için ,vol menü programa ilave ettim.pwr tusundan actığımda volum menüsü 15 kadar sayıyor.ve az but birkez basınca 0 değere kadar sayıyor.
bas için verdiğiniz IF BAS>7 THEN BAS=15-(BAS-8) salect case komutu kulanmadanmı bu işlemi yapabilirim.tam anlayamadım.bas ve tizdeki select case komutunu birkez yazmak içinmi tam anlayamadım.


ete

#18
Aşağıdaki satırların yerine;
bas_art: 
        bas=bas+1
         If bas>=16 Then bas=15
         Select case bas
           Case 0 :Bass=0
           Case 1 :Bass=1
           Case 2 :Bass=2
           Case 3 :Bass=3
           Case 4 :Bass=4
           Case 5 :Bass=5
           Case 6 :Bass=6
           Case 7 :Bass=7
           Case 8 :Bass=15
           Case 9:Bass=14
           Case 10:Bass=13
           Case 11:Bass=12
           Case 12:Bass=11
           Case 13:Bass=10
           Case 14:Bass=9
           Case 15:Bass=8 
           End Select
          gosub KAYIT
           pause 100
        Return

yalnızca şu satırlar yazılabilir.
bas_art: 
        bas=bas+1
         If bas>=16 Then bas=15
        BASS=BAS
         IF BAS>7 THEN BASS=15-(BAS-8)                 
          gosub KAYIT
           pause 100
        Return

Aynı sonucu elde edersin.
Aynı mantığı Bas_az alt programında da kullanabilirsin.
Vol artır ve eksiltme işini Vol_menu başlığı altında benim gösterdiğim gibi yaparsan programın biraz daha kısalır.

Programın son halini buraya koyarsan ayrıca sim dosyasınıda koyarsan diğer soruna bakarım.

Ete

ali

#19
merhaba hocam dediklerinizi iki şekilde yapmaya çalıstım.lcd ve lcd 2 dosyasını ekledim.çalışıyor.
while wend komutunda tusa birkez basınca tek tek sayıyor
+.tusa basılı tutunca sayı 7 deyken sayı 10 geciyor.bu normal sanırım.
+tusa basılı tutuluyken saymasını istesem while wend komutuyla bu işlem nasıl yapabilirim?

menu butonu lcd datalarına bağlı portb.1 deki butonu aktiv edemedim.

ete

Volum menüsünü aşağıdaki şekilde yaparsan rakam atlamalarını engellersin. Atlama aslında sayılan değerin ekrana yansıltılmamasından kaynaklanıyor. Aşağıdaki şekilde olursa bunu düzeltmiş olursun. Bu sistemi diğerlerinde de kullanabilirsin.
vol_menu:

gosub ekran_vol

sayac=0:YAZ=0
  IF Artbut=0 THEN
      WHILE artbut=0
        vol=vol+1
        if vol>47 then VOL=47
        gosub ekran_vol             
        PAUSE 200
      WEND
      YAZ=1
  ENDIF
     
  IF azbut=0 THEN
      WHILE azbut=0
        VOL=VOL-1
        IF VOL=255 THEN VOL=0
        gosub ekran_vol
        PAUSE 200
      WEND
      YAZ=1
  ENDIF
       IF YAZ=1 THEN
       write 0,vol:pause 10
       yaz=0:ENDIF
     RETURn
Ekran_vol:
        lcdout $fe,$81,"   Volume   ",DEC2 vol," ":return


Bu sistem aslında tuşa basılı tutunca devamlı artıran yada eksilten sistemdir.
Tuşa basıp artırma yapmak ve basılı tuttuğum müddetçe tek artım yapmasını sağlamak için ufak bir sistem değişikliği gerekiyor. Oda şöyle yapılır
vol_menu:

gosub ekran_vol

sayac=0:YAZ=0
  IF Artbut=0 THEN
     vol=vol+1
     if vol>47 then VOL=47
     gosub ekran_vol                         
     WHILE artbut=0:wend
     pause 100   
      YAZ=1
  ENDIF
     
  IF azbut=0 THEN
     vol=vol-1
     if vol=255 then VOL=0
     gosub ekran_vol                         
     WHILE azbut=0:wend
     pause 100     
     YAZ=1
  ENDIF
       IF YAZ=1 THEN
       write 0,vol:pause 10
       yaz=0:ENDIF
     RETURn
Ekran_vol:
        lcdout $fe,$81,"   Volume   ",DEC2 vol," ":return


PORTB.1 deb ağlı olan 10K direnci ANALOG yaparsan çalıştığını görürsün.
Çalıştırma mantığıda aşağıdaki gibi olursa doğru olur.
   IF PORTB.1=0 THEN
     vol=vol+1
     if vol>47 then VOL=47
     OUTPUT PORTB.1:pause 10
     gosub ekran_vol                         
'     WHILE artbut=0:wend
     pause 200   
      YAZ=1     
  ENDIF

Ayrıca bu şekilde kullanacak isen lcd data pinlerine direk bağlanmak yerine 10K direnç ile bağlanmakta yarar vardır.
İsis zaten tuşa basınca pini sarı yapmakta bu kısa devre olduğunu gösteriyor. Gerçekte kısadevre olmuyor ama bu şekilde bağlantı daha emniyetli.

Ete

ali

ilgilendiğiniz için çok teşekkür ederim her iki tus kulanımınıda denedim.ikiside gayet güzel çalısıyor.
portbye lcd data cıkıslarınıda portb.1 de menü butona alıp çalıştırdım.teşekkür ederim.

PORTB.1 debağlı olan 10K direnci ANALOG yaparsan çalıştığını görürsün.demişsiniz.

hocam ,beni mazur görün.ben anlayamadım.portb.1 direnci nasıl analog yapabilirim ?



ete

Bu aslında simulasyon sorunu. Simulasyonda işleri hızlandırmak için o dirence sağ tıklayıp açılan ekranda ANALOG yazan yeri yanına tıklayarak DIGITAL olarak seçmen yeterlidir. Böylece o pinde çalışmaya başlayacaktır.

Ete

Powered by EzPortal