20x4 lcd satır kaydırma

Başlatan Tom, 27 Şubat 2007, 16:04:47

Tom

Arkadaşlar ben 20x4 lcd kullanıyorum display kaydırma komutu var örneğin h'0C' verisini gönderdiğimizde display deki veriler komple kayıyor ama ben sadece seçtiğim satırdaki yazıyı kaydırmak istıyorum ilgili kodu bilen arkadaşım varmı?

Eagle_Tim

Böyle bir hazır komut henüz öğrenemedim bulursanız bizimlede paylaşın :)

Öte yandan bu işlem için yapılacak işlem kısaca şöyle bütün satır 20 karakterse 20 register açılıp bu registerler ekranda ilgili satıra refresh yaparak yazdırılır her rehresh işleminden öncede kaydırmak istediğiniz yönde
registerleri mesela sola kaydırmak için ;

19->20 , 18->19 , 17->18 vs.. 1->2  tampon reg -> 1 e burada rakamlar dot hanelerini belirtiyor bu şekilde bir alt yordamla lcd de diğer satırlar dururken istenen 1 satırda kayan yazı yapabilirsiniz..

Bknz- Picproje Dergi Say-1 Kayan yazı uygulaması  iyi çalışmalar..

http://rapidshare.com/files/18552006/PIC_PROJE.rar.html
Software and Hardware Design...

Tom

Arkadaşım teşekkür ederim.Ama verdiğin örnekteki kodlar uzun geldi en iyisi ben her zaman yaptığım gibi mantık yolu ile bulayım tekrar teşekkürler...

Eagle_Tim

Bulursanız Burada Bizimlede paylaşırsanız güzel olur bizde daha kısa yollar öğrenebiliriz bu vesile ile...
Software and Hardware Design...

CLR

Tom kardeş 4x20 veya karakter LCD'lerde öyle bir komut yok. Sadece senin kullandığın tüm LCD adreslerini kaydıran komut var. Sen tek bir satırı kaydırmak istiyorsan LCD içindeki o adreslere istediğin karakterleri yazacaksın , istediğin kadar bekledikten sonra sileceksin , aşağıda halen programını yazıyor olduğum UK'lı dijital ton kontrollü 2x150W anfi'nin mavi karakter LCD'sinde kullandığım (gerçi şimdi mavi LCD'den vazgeçtim 128x64 Graphic LCD kullanıyorum) bir program parçasını vereyim, Ekranda 1. satırda VOLUME yazısını sağ baştan sol başa kadar kaydırır.
(Bu arada karakter LCD'lerin shift performansı bence pek iyi değil)


_VOLUME_LCD_SHIFT               ; "Volume" yazısını ekranda shift eder
  MOVLW   90H                  ; 1. line'nın en son adresini reg. yükle
  MOVWF   LCD_ADRES_REG
_VOLUME_SHIFT
  DECF   LCD_ADRES_REG,F
  MOVF   LCD_ADRES_REG,W
  CALL   _LCD_KOMUT_YAZ   ; Adres'i LCD'ye gönder
  CALL   _VOLUME_LCD
  MSDELAY    .50      ;50msn bekle
  CALL   _LCD_CLR_LINE_1   ; 1. line'ı  sil
  MOVF   LCD_ADRES_REG,W
  ANDLW   0FH      ; son 4 biti maskele      
  BTFSC   STATUS,Z      ; Z flag set ise kaydırma işlemi bitti
  RETURN
  GOTO   _VOLUME_SHIFT
.....
...

_VOLUME_TABLE
  MOVF   LCD_TABLE_COUNT,W
  ADDWF   PCL,F
  DT   "VOLUME" ,0

_VOLUME_LCD
  CLRF   LCD_TABLE_COUNT
_VOLUME_YAZ
  CALL   _VOLUME_TABLE
  IORLW   0
  BTFSC   STATUS,Z          ; Table'dan W=0 gelirse geri dön
  RETURN
  CALL   _LCD_DATA_YAZ
  INCF   LCD_TABLE_COUNT,F
  GOTO   _VOLUME_YAZ
Knowledge and Experience are Power

Tom

Tamam arkadaşım mantıgı anladım.İlk evela displaye istediğimiz yazıyı yazdırıyoruz daha sonra 50ms bekliyoruz ve aynı satır silip bu sefer satır adresini bir arttırıp tekrar yazıyoruz..Çok teşekkürler.

j_o_k_e_r

arkadaslar 18f452 kullanarak kayan yazı yapmak istiyorum...cok acil yardim edermisiniz??