GLCD Hakkında !

Başlatan HeCToR, 17 Ocak 2016, 13:28:43

HeCToR

Merhaba Arkadaşlar örnek veriyorum 128x64 grafik lcd'miz var ve 5 satır seçenek yazabiliyorum diyelim ama benim 10 satır seçenek yazmaya ihtiyacım var down butonu ile birer satır aşağı doğru indiğimde 6.satıra geldiğimde 1.satırı bir üste kaydıracak 7.satıra geldiğimde 2.satırı bir üste kaydıracak gibi tekrar up butonuna bastıgımda tekrar ters işlemi tekrar yapacak bunun için nasıl yol izleyebilirim Saygılar.

Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

Kabil ATICI

İşlemci ram bölgesi yeteri kadar yüksek ise, görüntüyü ram'de oluşturup bunu LCD'ye yüklemek yerinde olur. (Ram bölgesinin bir bölümünü ekran için ayırarak)
Hızlı olması için sadece değişimin olacağı bölümü lcd'ye yükleyebilir veya tüm ekran görüntüsünü birden yükleyebilirsin.

Buradaki asıl konu LCD tipinde gizli. Örneğin ks0108 tipi sürücü kullanıyorsa yazıların tamamı grafiksel olarak tanımlanması gerekir, ama  T6963C tarzı bir kontroller kullanıyorsa, ekrandaki yazıların  karakter (grafik değil) olabilir. Her ikisinde de
yapacağın konu önceki yazılan yazıların silinip diğer  yazıların yazılmasıdır.

a1
a2
a3
a4
a5
a6
a7
a8
...
şeklinde ise siz a5'e kadar gösterirseniz,   sonraki seçimde a1-a5 arasılığını silip a2-a6 aralığını göstereceksiniz. Bu uygun adreslere  hangilerinin yazılacağını for döngüsü ile sağlayabilirsiniz, hangisinin olacağını sadece bir toplama işlemi ile belirleyebilirsiniz.
örneğin c olarak
ekran kaydırma parametresi olmak üzere...
int ekran=0; //ekran=toplam-5 ;kadar olabileceği unutulmamalıdır.
for (i=0, ekran+5<i;i++)
...
gibi hangilerinin gösterileceğinin belirleyebilirsiniz.  Altını da siz doldurabilirsiniz.
Bu işlemi ne zaman yapılacağı da artık tuş ile ilgili işlemlerin altında kontrol edilmesi gerekir.
ambar7

HeCToR

@Kabil ATICI Hocam
Alıntı YapBuradaki asıl konu LCD tipinde gizli. Örneğin ks0108 tipi sürücü kullanıyorsa yazıların tamamı grafiksel olarak tanımlanması gerekir
Demişsiniz Tam anlamadım Burayı Ben Font Şeklinde Yazıyorum.
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

Kabil ATICI

kontrolcünün ks0108 ve  t6963c olması senin olayın zaten, sadece nasıl sürüleceği veya ekranda nasıl görüntüleceğini belirler. ks0108de sen font desende her şey grafiksel olarak işler. t6963c 'li ekranlarda hem grafik hemde karakter lcd gibi çalışma modu vardır.

Sonuçta senin ekranda menü için verdiğin sayılardan hangilerinin gösterileceğini belirlemek.

Basitçe tüm menüleri alt alta liste halinde yazıp bir parça kartondan pencere kesip, bu pencere üzerinden menü listesinde gezinme olayına denk düşer.
Sonuçta önceki pencereyi silip yenisini gösterecek şekilde ekrana göndereceksin. Blok olarak veri taşına bu küçük ekranlarda pek yer almaz.

Buradaki yapacağın şey menü seçim durumuna göre ekranda ne gösterileceğini  belirleyeceksin. Ona göre önceki görüntüyü silip yenisini ekrana yerleştireceksin.
ambar7

Karamel

#4
char **Menu = {"Menu ismi1", "Menu ismi2", "Menu ismi3", "Menu ismi4", "Menu ismi5", "Menu ismi6", "Menu ismi7", "Menu ismi8", "Menu ismi9", "Menu ismi10"};

int Menu_Counter = 0;


void Button()
{
      
       if(Buton1 && Menu_Counter > 0) = Menu_Counter--;
       if(Buton2 && Menu_Counter < 10) = Menu_Counter++;
}


int main()
{
       int f, i;

       while(1){
         Button();
        
         for(f=Menu_Counter; f<Menu_Counter+5; f++){
           for(i=0; i<20; i++) 
               printf(%c, Menu[f][i] );
              putchar('\n');
       }
     }
}


mesaj birleştirme:: 17 Ocak 2016, 15:52:51

ayak ustu yazdim  :P