Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

GLCD ekran kaydirma (scroll)

Başlatan nusyil, 07 Mayıs 2012, 17:27:54

nusyil

Herkese Merhaba,

Samsung KS0108 cipsetli, 128X64 Graphic LCD'de, Atmel 89S52 islemci ve Assembly dilinde ekrandaki bilgiyi yukari-asagi nasil kaydirabilirim?? Bu konu ile ilgili onerilerinizi ve var ise ornek kodlarinizi bekliyorum. Cevaplariniz icin simdiden tesekkurler!!

Kabil ATICI

öncelikle bir bilgiyi LCD ekran üzerinde gösterdin mi? Eğer bu konuda bir çalışman yoksa Hantronix sitesinde GLCD üzerinde nasıl veri gösterildiğini anlatıyor.

Veri kaydırmaya gelince işlemcideki verinin sağa veya sola kaydırma komutları bu işe yarayabilir.

GLCD üzerinde veriler 8 bitlik sütununu bir satır kabul edersek, şimdik alttaki satırdan birer biti üstteki satıra eklersek tüm ekranı düşünülürse sonuçta veri kaydırlır. (zamanlamaya dikkat)


bir sütun için düşünürse


1
0
1
1
1
0
1
0


0
1
1
1
0
0
1
1


şeklinde gösterilen veri  kaydırılırsa

0
1
1
1
0
1
0

0


1
1
1
0
0
1
1

x
şeklinde bir yapıya dönüşün ki buradaki x bir alttaki satırdan gelen bittir.
Bu işlemin tüm ekran için yapılacağı göz önüne almak gerekiyor. Koda gelince hazırı en azından bende yok.... İşlemi ramde yap diyeceğim ama bu işlemcide bu işlemi ram'de yapacak kadar iç ram yok. Harici ram kullanmak gerekir. muhtemelen paralel.
ambar7

nusyil

@Ambar7,

Dediginiz sekilde Atmel'de  Akumulator(Acc)'un icerigini saga veya sola donduren RR (Rotate Right) ve RL (Rotate Left) komutlari var. Ancak dikkat edilirse bu komutlar "dondurme" komutlari. Ornek olarak RL komutunu alirsak, bu komut her islendiginde Acc'nin icerigi bir bit sola kaydirilarak 0.bit 1.bite, 1.bit 2.bite...kaydiriliyor. Ancak 7. yani son bit'e gelidiginde bu bit 0.bite "donduruluyor". Yani  8 kaydirmadan sonra bayt'in icerigi baslangictaki konumuna donmus olacak. Bu yonden bakildiginda bu yontem sanki cozum degil gibi gorunuyor??
Yoksa gozden kacirdigim birsey olabilir mi??

Saygilar..

arm-beginner

KS0108 ile C kullanarak epey uğraşdım ve sanırım kafamdaki gri saçların birkaçını ona borçluyum.
Assembler kullanmış olsaydım, eminim şu an kel kel dolaşırdım :)
KS0108 ile 8bit, 16, 24 vs. hereket edersen, sorun yok. Herşey güllük gülistanlık. Ama onun dışına çıktığım an, ben sorunlar yaşadım.


nusyil

Ben de saclarim neden son zamanlarda daha da beyazlasti diyordum, demek bunun da sebebi buymus  :)

8,16,24 bit hareket etmek konusunu biraz acabilirmisin??

Saygilar..

Tagli

Sürücüsü KS0108 miydi hatırlamıyorum ama piyasada yaygın olarak bulunan GLCD'lerde başlangıç satırı (ilk yatay pixel grubu) ofsetlenebiliyordu. Bunun için içerideki bir register'ı değiştirmek yeterli, veriyi yeniden yüklemeye gerek yok. Elbette sınırı geçen diğer taraftan çıkıyor. Şunun gibi:
0             63
1             0
2             1
.       ->    .
.              .
62           61
63           62

Zamanında assembly ile GLCD kütüphanesi yazmaya çalışmıştım. Tam bitiremedim ama yazması zor da olsa eğlenceli idi.
Gökçe Tağlıoğlu

Kabil ATICI

Alıntı yapılan: nusyil - 07 Mayıs 2012, 20:36:24
@Ambar7,

Dediginiz sekilde Atmel'de  Akumulator(Acc)'un icerigini saga veya sola donduren RR (Rotate Right) ve RL (Rotate Left) komutlari var. Ancak dikkat edilirse bu komutlar "dondurme" komutlari. Ornek olarak RL komutunu alirsak, bu komut her islendiginde Acc'nin icerigi bir bit sola kaydirilarak 0.bit 1.bite, 1.bit 2.bite...kaydiriliyor. Ancak 7. yani son bit'e gelidiginde bu bit 0.bite "donduruluyor". Yani  8 kaydirmadan sonra bayt'in icerigi baslangictaki konumuna donmus olacak. Bu yonden bakildiginda bu yontem sanki cozum değil gibi gorunuyor??
Yoksa gozden kacirdigim birsey olabilir mi??

Saygilar..
asm komutlarından RRC ve RLC komutlarına bir bak sanırım işini görebilir...
ambar7

nusyil


Alıntı yapılan: ambar7 - 08 Mayıs 2012, 10:32:35
asm komutlarından RRC ve RLC komutlarına bir bak sanırım işini görebilir...

RLC ve RRC komutlari ile RL ve RC ayni isi yapar. Tek fark RLC ve RRC komutlari, bitleri Carry biti uzerinden dondurur.

nusyil

@tagli,

Evet,dediginiz gibi bu GLCD de ilk satir secilebiliyor. Zaten buradan yola cikarak birseyler yapmayi dusundum ancak nasil bit mantik kurmam gerektigini bulamadim. Istedigim de bu zaten. Isin mantigini, yontemini  aciklayan oneriler bekliyorum.

Saygilar..