Satır Taramalı Kayan Yazı

Başlatan meyer, 18 Aralık 2011, 15:01:38

meyer

   Merhaba arkadaşlar,
Ete hocamızın matrix derslerinde matrix05.pbp örneğinden  faydalanarak 8*40 satır taramalı bir kayan yazı yapmaya çalışıyorum.Ete hocamızın da matrix derslerini inceledim fakat sadece her harfi kendi matrixinde kaydırabildim.Harfleri 75hc595 ile sütunlardan,matrix'in satırlarını da pic ile taratıyorum.
Sorunum şu arkadaşlar;harfleri bir bütün olarak bir türlü kaydıramadım.Ayar kısmını da aşağıdaki gibi değiştirdiğimde yine sonuç alamadım..
Devrenin .jpeg resmini ve pbp kodunu ekledim arkadaşlar..Yardımlarınız için şimdiden teşekkür ederim..


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 16.12.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
'****************************************************************
TRISB=0 : TRISD=0  : TRISA=0 : TRISC=0 : TRISE=0
PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0
INTCON2.7=0
'74HC595*********************************************************
Symbol CLK1   =PORTB.0
Symbol DTA1   =PORTB.1
Symbol STROBE1=PORTB.2
'****************************************************************
SUTUN     var Byte[39]
temp      VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var Byte
'****************************************************************
AA:
'Satır tarama, bilgi sütunlardan geliyor
SUTUN[0]=%01000010 : SUTUN[8] =%00111100 :SUTUN[16]=%00100010 : SUTUN[24] =%00111100
SUTUN[1]=%01000010 : SUTUN[9] =%01000010 :SUTUN[17]=%00010010 : SUTUN[25] =%01000010
SUTUN[2]=%01000010 : SUTUN[10]=%01000010 :SUTUN[18]=%00001010 : SUTUN[26] =%01000010
SUTUN[3]=%01111110 : SUTUN[11]=%01111110 :SUTUN[19]=%00000110 : SUTUN[27] =%01111110
SUTUN[4]=%01000010 : SUTUN[12]=%01000010 :SUTUN[20]=%00001010 : SUTUN[28] =%01000010
SUTUN[5]=%01000010 : SUTUN[13]=%01000010 :SUTUN[21]=%00010010 : SUTUN[29] =%01000010
SUTUN[6]=%01000010 : SUTUN[14]=%01000010 :SUTUN[22]=%00100010 : SUTUN[30] =%01000010
SUTUN[7]=%00000000 : SUTUN[15]=%00000000 :SUTUN[23]=%00000000 : SUTUN[31] =%00000000
'''''''
SUTUN[32] =%01000010
SUTUN[33] =%01000010
SUTUN[34] =%01000110
SUTUN[35] =%01001010
SUTUN[36] =%01010010
SUTUN[37] =%01100010
SUTUN[38] =%01000010
SUTUN[39] =%00000000
M=0
'****************************************************************
BASLA:
    For W=0 To 5
X=1
        For I=0 To 7
SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
PORTD=X
High STROBE1 : pauseus 200 : Low STROBE1
X=X*2
pause 3
        Next
    Next
pause 1
GoSub AYAR
'gosub ayar1
M=M+1
If M<15 Then BASLA
goto AA
'****************************************************************
AYAR:
    For I=0 To 39
SUTUN[I]=SUTUN[I]<<1
    Next I
Return
'****************************************************************
ayar1:
for I=0 to 31
sutun.0[I+8]=sutun.7[I]
sutun[I]=sutun[I]<<1
return

End


meyer

 Devrenin isis şemasını ekledim arkadaşlar..

ete

Harfleri oluşturma şeklinden yazın ancak yuları (yada aşağıya) doğru kaydırılabilir.
Matrixleri ters kullanmışsın gibime geliyor.
Sağdan sola kaydırmak için harf oluşturma şeklini ve devreni biraz değiştirmen gerek.
Harfleri  satır bilgisi olarak oluşturmuşsun. Halbuki sütun bilgisi olacak şekilde olmalı.
Yani ; H harfi için verdiğin data lara bakarsak;
oXooooXo
oXooooXo
oXooooXo
oXXXXXXo
oXooooXo
oXooooXo
oXooooXo
oooooooo

şeklinde değil;
oooooooo
XXXXXXXX
oooXoooo
oooXoooo
oooXoooo
oooXoooo
XXXXXXXX
oooooooo
şeklinde oluşturman gerek. Ayrıca matrixlerin üst kısmını 74HC595 lere bağla alt kısmını ise PortD ye bağla.
Soldan sağa  (yada sağdan sola) kaydırmada mutlaka sütun bilgisi kaydırılmalıdır. Yani bir sütuna ait bilgi komple diğer sutuna aktarılmalıdırki bit bazında kaydırma yapabilesin.
Senin kullandığın yöntemde yazı ancak aşğıdan yukarı kaydırılabilir.
Onuda nasıl yapılacağını programda yaptığım bir iki ilave ile görebileceğin şekle getirdim.
Aşağıdaki programı dene istersen.

define OSC 20
'****************************************************************
TRISB=0 : TRISD=0  : TRISA=0 : TRISC=0 : TRISE=0
PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0
INTCON2.7=0
'74HC595*********************************************************
Symbol CLK1   =PORTB.0
Symbol DTA1   =PORTB.1
Symbol STROBE1=PORTB.2
'****************************************************************
SUTUN     var Byte[40]
temp      VAR BYTE
ARA       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var Byte
'****************************************************************
AA:
'Satır tarama, bilgi sütunlardan geliyor
SUTUN[0]=%01000010 : SUTUN[8] =%00111100 :SUTUN[16]=%00100010 : SUTUN[24] =%00111100
SUTUN[1]=%01000010 : SUTUN[9] =%01000010 :SUTUN[17]=%00010010 : SUTUN[25] =%01000010
SUTUN[2]=%01000010 : SUTUN[10]=%01000010 :SUTUN[18]=%00001010 : SUTUN[26] =%01000010
SUTUN[3]=%01111110 : SUTUN[11]=%01111110 :SUTUN[19]=%00000110 : SUTUN[27] =%01111110
SUTUN[4]=%01000010 : SUTUN[12]=%01000010 :SUTUN[20]=%00001010 : SUTUN[28] =%01000010
SUTUN[5]=%01000010 : SUTUN[13]=%01000010 :SUTUN[21]=%00010010 : SUTUN[29] =%01000010
SUTUN[6]=%01000010 : SUTUN[14]=%01000010 :SUTUN[22]=%00100010 : SUTUN[30] =%01000010
SUTUN[7]=%00000000 : SUTUN[15]=%00000000 :SUTUN[23]=%00000000 : SUTUN[31] =%00000000
'''''''
SUTUN[32] =%01000010
SUTUN[33] =%01000010
SUTUN[34] =%01000110
SUTUN[35] =%01001010
SUTUN[36] =%01010010
SUTUN[37] =%01100010
SUTUN[38] =%01000010
SUTUN[39] =%00000000
M=0
'****************************************************************
BASLA:
    For W=0 To 4
      X=1
      For I=0 To 7
        SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 5
      Next
    Next
    pause 1
'    GoSub AYAR
GoSub KAYDIR
M=M+1
If M<9 Then BASLA
M=0

goto AA
'****************************************************************
AYAR:
    For I=0 To 39
SUTUN[I]=SUTUN[I]<<1
    Next I
Return
'****************************************************************
KAYDIR:
FOR I=0 to 4
  ARA=SUTUN[I*8] 
FOR W=0 to 7
  temp=I*8+W
  SUTUN[temp]=sutun[temp+1]
next
  SUTUN[temp]=ARA
NEXT   
Return
End


Kolay Gelsin
Ete

meyer

#3
  Ete hocam yardımınız için teşekkür ederim.Aşağıdan yukarıya,yukarıdan aşağıya kaydırma işini anladım..Verdiğiniz bilgiler çerçevesinde sağdan sola,soldan sağa kaydırma işini  yapmaya çalışayım..
Yardımınız için tekrardan teşekkür ederim hocam..

ete

Aynı programın hem aşağı hem yukarı kaydırması için ufak düzenleme yaptım.
Program aşağıdadır.  Güzel bir kaydırma örneği oldu.

Ete
define OSC 20
'****************************************************************
TRISB=0 : TRISD=0  : TRISA=0 : TRISC=0 : TRISE=0
PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0
INTCON2.7=0
'74HC595*********************************************************
Symbol CLK1   =PORTB.0
Symbol DTA1   =PORTB.1
Symbol STROBE1=PORTB.2
'****************************************************************
SUTUN     var Byte[40]
temp      VAR BYTE
ARA       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var Byte
'****************************************************************
AA:
'Satır tarama, bilgi sütunlardan geliyor
SUTUN[0]=%01000010 : SUTUN[8] =%00111100 :SUTUN[16]=%00100010 : SUTUN[24] =%00111100
SUTUN[1]=%01000010 : SUTUN[9] =%01000010 :SUTUN[17]=%00010010 : SUTUN[25] =%01000010
SUTUN[2]=%01000010 : SUTUN[10]=%01000010 :SUTUN[18]=%00001010 : SUTUN[26] =%01000010
SUTUN[3]=%01111110 : SUTUN[11]=%01111110 :SUTUN[19]=%00000110 : SUTUN[27] =%01111110
SUTUN[4]=%01000010 : SUTUN[12]=%01000010 :SUTUN[20]=%00001010 : SUTUN[28] =%01000010
SUTUN[5]=%01000010 : SUTUN[13]=%01000010 :SUTUN[21]=%00010010 : SUTUN[29] =%01000010
SUTUN[6]=%01000010 : SUTUN[14]=%01000010 :SUTUN[22]=%00100010 : SUTUN[30] =%01000010
SUTUN[7]=%00000000 : SUTUN[15]=%00000000 :SUTUN[23]=%00000000 : SUTUN[31] =%00000000
'''''''
SUTUN[32] =%01000010
SUTUN[33] =%01000010
SUTUN[34] =%01000110
SUTUN[35] =%01001010
SUTUN[36] =%01010010
SUTUN[37] =%01100010
SUTUN[38] =%01000010
SUTUN[39] =%00000000
M=0
'****************************************************************
BASLA:
      gosub yerles
      GoSub KAYDIR
      M=M+1
      If M<9 Then BASLA
      M=0
BASLA_BIR:     
      gosub yerles
      GOSUB KAYDIR_ASAGI
      m=M+1
      IF M<9 then BASLA_BIR
      m=0
      goto AA

YERLES:
    For W=0 To 4
      X=1
      For I=0 To 7
        SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
    Next
    return

'****************************************************************
AYAR:
    For I=0 To 39
SUTUN[I]=SUTUN[I]<<1
    Next I
Return
'****************************************************************
KAYDIR:
FOR I=0 to 4
  ARA=SUTUN[I*8] 
FOR W=0 to 6
  temp=I*8+W
  SUTUN[temp]=sutun[temp+1]
next
  SUTUN[I*8+7]=ARA
NEXT   
Return

KAYDIR_ASAGI:
FOR I=0 to 4
  ARA=SUTUN[I*8+7] 
FOR W=7 to 1 step -1
  temp=I*8+W
  SUTUN[temp]=sutun[temp-1]
next
  SUTUN[I*8]=ARA
NEXT   
Return

End

meyer

 İlginiz ve yardımlarınız için tekrardan teşekkür ederim hocam..Bende en kısa zamanda hem aşağıdan yukarıya hem de sağdan sola kayan yazı devresi hazırlayıp paylaşmayı düşünüyorum..

meyer

 İyi günler Ete Hocam,
Hocam dediğiniz gibi  matrixlerin üst kısmını 74HC595 lere,alt kısmını da PortD ye bağladım.Devreyi bu şekilde sağa,sola,aşağı ve yukarı doğru kaydırabiliyorum.
Hocam bu konu hakkında kafama takılan tek bir soru var..Oda şu ;
-Bu yaptığım devre satır tarama mı yoksa sütun tarama mı oluyor ?

Yardımınız için şimdiden teşekkür ederim hocam..İyi günler dilerim...


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18.12.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
'****************************************************************
TRISB=0 : TRISD=0  : TRISA=0 : TRISC=0 : TRISE=0
PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0
INTCON2.7=0
'74HC595*********************************************************
Symbol CLK1   =PORTB.0
Symbol DTA1   =PORTB.1
Symbol STROBE1=PORTB.2
'****************************************************************
SUTUN     var Byte[40]
temp      VAR BYTE
ARA       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var Byte
a         var byte
'****************************************************************
AA:
'Satır tarama, bilgi sütunlardan geliyor
SUTUN[0]=%11111111 : SUTUN[8] =%11111111 :SUTUN[16]=%11111111 : SUTUN[24] =%11111111
SUTUN[1]=%10000000 : SUTUN[9] =%10000001 :SUTUN[17]=%10000000 : SUTUN[25] =%10000001
SUTUN[2]=%11110111 : SUTUN[10]=%11110110 :SUTUN[18]=%11110111 : SUTUN[26] =%11110110
SUTUN[3]=%11110111 : SUTUN[11]=%11110110 :SUTUN[19]=%11101011 : SUTUN[27] =%11110110
SUTUN[4]=%11110111 : SUTUN[12]=%11110110 :SUTUN[20]=%11011101 : SUTUN[28] =%11110110
SUTUN[5]=%11110111 : SUTUN[13]=%11110110 :SUTUN[21]=%10111110 : SUTUN[29] =%11110110
SUTUN[6]=%10000000 : SUTUN[14]=%10000001 :SUTUN[22]=%11111111 : SUTUN[30] =%10000001
SUTUN[7]=%11111111 : SUTUN[15]=%11111111 :SUTUN[23]=%11111111 : SUTUN[31] =%11111111
'''''''
SUTUN[32] =%11111111
SUTUN[33] =%10000000
SUTUN[34] =%11111011
SUTUN[35] =%11110111
SUTUN[36] =%11101111
SUTUN[37] =%11011111
SUTUN[38] =%10000000
SUTUN[39] =%11111111
'M=0
'****************************************************************
BASLA:
    For W=0 To 4
      X=1
      For I=0 To 7
        SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 5
      Next
    Next
    pause 1
M=M+1
If M<40           Then gosub sola_kay   : goto  BASLA
If M>40 and m<80  Then gosub saga_kay   : goto  BASLA
If M>80 and m<89  Then gosub asagi_kay  : goto  BASLA
if m>89 and m<98  then gosub yukari_kay : goto  basla
If m>98 then m=0
'M=0
goto AA
'****************************************************************
sola_kay:
For I=0 To 38
    sutun[i]= sutun[i+1]
   If i=39 Then sutun[39]=sutun[0]
Next i
return
'****************************************************************
saga_kay:
For I=38 to 0 step -1
    sutun[i]= sutun[i-1]
   If i=0 Then sutun[0]=sutun[39]
Next i
return
'****************************************************************
asagi_kay:
    For I=0 To 39
SUTUN[I]=SUTUN[I]<<1
    Next I
Return
'****************************************************************
yukari_kay:
    For I=0 To 39
SUTUN[I]=SUTUN[I]>>1
    Next I
Return

End

ete

#7
Matrix displeylerin ortak uçlarını satırlara bağlamış isen bu satır tarama olur. Sütunlara bağlamış isen bu sütun tarama olur. Dikkat edersen programda X=X*2 şeklinde bir komut satırı var. Bu komut satırların bağlı olduğu Port pinlerini sırası ile HIGH yapmaktadır. Her defasında bir pin HIGH olduğu için bu satır tarıyordur. Her defasında bir pinin HIGH (yada terside olabilir LOW) yapılmasına tarama deniliyor.Çünki o anda bir satırı aktif ediyorsun ve sütundan da o satırın bilgisi verilmiş oluyor. Dikkat edersen satır taramada tarayacağın alan yalnızca 8 adet port pinidir. Bitince yeniden başatan başlarsın.

Sütun tarama işleminde ise bütün sütunlar sırası ile HIGH yapılır ve karekter bilgisi port pininden verilir. Yani sen bir sütunu yukarıdan aktif edersin o sütuna ait bilgide PORT dan çıkar.
BU işlemde kaç tane sütun var ise hepsini taradıktan sonra yeniden başa dönersin ve işlem uzun sürer. Buda çok sütunlu devrelerde ledlerin yeterince parlamasına zaman bırakmaz.

Şimdi sen karar ver bakalım hangi taramayı yapıyorsun. Bu yazıyı son programına bakmadan öncekileri esas alarak yaptım.

Programlamadaki alt yapını bilemiyorum ama epeyce iyi durumda olduğunu söyleyebilirim. Yazı kaydırma çok kişinin zorlukla yapabildiği bir iştir. Sen bir noktadan sonra mantığı kavradın ve işi çözdün. Tebrik ederim.
Aslında çok zor değil ama etaplı düşünmek gerekiyor. Bit bazında düşündüün zaman iş kolay ama işi bütün olarak ele alınca zor gibi geliyor. Bende pek sevmem kayan yazı işini. Her zaman çok karmaşık gelir bana programlama mantığı.

Her neyse şu anda değişkenlere verilecek sütun bilgilerini artık bir lookup tablosu kullanarak verme konusuna eğil biraz. İleride bir yerden okuyarak yazılacak yazıyı oluşturduğun zaman üniversal bir şekilde değişken ler yerli yerini bulmalıdır.

Daha sonraki adımda yazılacak yazının eproma kaydedilmesine geçersin. Sonrasında ne yapacağımıza birlikte karar veririz.
Ete

meyer

  İyi günler Ete Hocam,
Öncelikle teşekkür ederim hocam.Sizin yardımlarınız sayesinde yazıyı sağa,sola,aşağı ve yukarı kaydırabilmeyi anladım...
Hocam şimdi verdiğiniz bilgiler doğrultusunda;yaptığımız kayan yazı devresinin satır taramalı olduğunu anladım.Umarım yanlış anlamamışımdır..
Sutun bilgilerini Lookup tablosunu kullanarak verme ve eeproma kaydetme  konusunda uğraşayım hocam..
İlginiz ve yardımlarınız için tekrardan teşekkür ederim hocam.İyi günler..

ete

Programına şimdi bakabildim. Ama aşağı ve yukarı kaydırmaları biraz kestirmeden hallettiğini gördüm.
Benim yaptığım gibi olabilirdi. Biraz mantığı değiştirerek kolayca yapabilirdin. Ama dediğim gibi kolay da değil. İnsanın beyni sulanıyor. İyice konsantre olman gerekiyor.

Aşağıdaki kodları incemeni istiyorum. Yukarı ve aşağı kaydırmaları düzelttim.

Şimdi sistem hem aşağı - yukarı  hemde sağa sola güzel olarak kayabilmektedir.

Ete

define OSC 20
'****************************************************************
TRISB=0 : TRISD=0  : TRISA=0 : TRISC=0 : TRISE=0
PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0
INTCON2.7=0
'74HC595*********************************************************
Symbol CLK1   =PORTB.0
Symbol DTA1   =PORTB.1
Symbol STROBE1=PORTB.2
'****************************************************************
SUTUN     var Byte[40]
temp      VAR BYTE
ARA       VAR BYTE
SOL       var byte
SAG       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var Byte
a         var byte
Z         VAR BIT
'****************************************************************
AA:
'Satır tarama, bilgi sütunlardan geliyor
SUTUN[0]=%11111111 : SUTUN[8] =%11111111 :SUTUN[16]=%11111111 : SUTUN[24] =%11111111
SUTUN[1]=%10000000 : SUTUN[9] =%10000001 :SUTUN[17]=%10000000 : SUTUN[25] =%10000001
SUTUN[2]=%11110111 : SUTUN[10]=%11110110 :SUTUN[18]=%11110111 : SUTUN[26] =%11110110
SUTUN[3]=%11110111 : SUTUN[11]=%11110110 :SUTUN[19]=%11101011 : SUTUN[27] =%11110110
SUTUN[4]=%11110111 : SUTUN[12]=%11110110 :SUTUN[20]=%11011101 : SUTUN[28] =%11110110
SUTUN[5]=%11110111 : SUTUN[13]=%11110110 :SUTUN[21]=%10111110 : SUTUN[29] =%11110110
SUTUN[6]=%10000000 : SUTUN[14]=%10000001 :SUTUN[22]=%11111111 : SUTUN[30] =%10000001
SUTUN[7]=%11111111 : SUTUN[15]=%11111111 :SUTUN[23]=%11111111 : SUTUN[31] =%11111111
   
'''''''
SUTUN[32] =%11111111
SUTUN[33] =%10000000
SUTUN[34] =%11111011
SUTUN[35] =%11110111
SUTUN[36] =%11101111
SUTUN[37] =%11011111
SUTUN[38] =%10000000
SUTUN[39] =%11111111
'M=0
'****************************************************************
BASLA:
    For W=0 To 4
      X=1
      For I=0 To 7
        SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        pause 3
      Next
    Next
    pause 1
   
M=M+1
If M<40           Then gosub sola_kay   : goto  BASLA
If M>40 and m<80  Then gosub saga_kay   : goto  BASLA
If M>80 and m<89  Then gosub asagi_kay  : goto  BASLA
if m>89 and m<98  then gosub yukari_kay : goto  basla
If m>98 then m=0
 
goto AA

'****************************************************************
sola_kay:
For I=0 To 38
    sutun[i]= sutun[i+1]
   If i=39 Then sutun[39]=sutun[0]
Next i
return
'****************************************************************
saga_kay:
For I=38 to 0 step -1
    sutun[i]= sutun[i-1]
   If i=0 Then sutun[0]=sutun[39]
Next i
return
'****************************************************************
asagi_kay:
for I=0 to 39
   ARA=SUTUN[I]
   z=ARA.7
FOR X=7 to 1 STEP -1
   ARA.0[x]=ARA.0[X-1]
NEXT
   ara.0=Z
   sutun[I]=ARA
next
Return
'****************************************************************
yukari_kay:
FOR I=0 to 39
   ARA=SUTUN[I]
   z=ARA.0
FOR X=0 to 6
   ARA.0[X]=ARA.0[X+1]
NEXT
   ARA.7=Z
   SUTUN[I]=ARA
NEXT
Return
End

meyer

 Haklısınız hocam..Benim yaptığım şekilde aşağı ve yukarı kaydırmalar sanırım sadece animasyonlarda kullanılabilir...

  İlginiz için tekrardan teşekkür ederim hocam..


asagi_kay:
for I=0 to 39
sutun[I]=sutun[I]<<1
next I
return
''''''''''''''''''''
yukari_kay:
for I=0 to 39
sutun[I]=sutun[I]>>1
next I
return


meyer

  Lookup tablosunu kullanarak harfleri  displaylere yazdırabildim hocam..Sıradaki adımım da bunları kaydırabilmek olacak..


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18.12.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
'****************************************************************
TRISB=0 : TRISD=0  : TRISA=0 : TRISC=0 : TRISE=0
PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0
INTCON2.7=0
'74HC595*********************************************************
Symbol CLK1   =PORTB.0
Symbol DTA1   =PORTB.1
Symbol STROBE1=PORTB.2
'****************************************************************
SUTUN     var Byte[40]
temp      VAR BYTE
ARA       VAR BYTE
SOL       var byte
SAG       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var Byte
a         var byte
Z         VAR BIT
'''''''''''''''''''
yazi_reg  var byte
harf_reg  var byte
adres_sec var byte
veri      var byte
t         var byte
'****************************************************************
AA:
'I=0 : yazi_reg=0
yazi_reg=0 : m=0 : i=0 : x=1
'''''''''''''''''
BASLA:
    For W=0 To 4
GOSUB yazi : yazi_reg=yazi_reg+1
gosub data_sec
      For t=0 To 7
      gosub datalar
      sutun[I]=veri : adres_sec=adres_sec+1
        SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
        PORTD=X
        High STROBE1 : pauseus 200 : Low STROBE1
        X=X*2
        i=i+1
'        pause 3
      pauseus 500
      Next
     Next
    pause 1
   
M=M+1
If M<5 Then AA

goto BASLA

'****************************************************************
yazi:
LookUp yazi_reg,["ABCDE",5],harf_reg
Return
'****************************************************************
data_sec:
Select Case harf_reg
Case "A"
adres_sec=0    : Return
Case "B"
adres_sec=8    : Return
Case "C"
adres_sec=16   : Return
Case "D"
adres_sec=24   : Return
Case "E"
adres_sec=32   : Return
Case "F"
adres_sec=40   : Return
Case "G"
adres_sec=48   : Return
Case "H"
adres_sec=56   : Return
Case "I"
adres_sec=64   : Return
Case "J"
adres_sec=72   : Return
Case "K"
adres_sec=80   : Return
Case "L"
adres_sec=88   : Return
Case "M"
adres_sec=96   : Return
Case "N"       
adres_sec=104  : Return
Case "O"
adres_sec=112  : Return
Case "P"
adres_sec=120  : Return
Case "R"
adres_sec=128  : Return
Case "S"
adres_sec=136  : Return
Case "T"
adres_sec=144  : Return
Case "U"                                   
adres_sec=152  : Return
Case "V"
adres_sec=160  : Return
Case "Y"
adres_sec=168  : Return
Case "Z"
adres_sec=176  : Return
Case " "
adres_sec=184  : Return
End Select
Return
'****************************************************************
DATALAR:
     LookUp adres_sec,[$FF,$81,$F6,$F6,$F6,$F6,$81,$FF,_     ;  A
                       $FF,$80,$B6,$B6,$B6,$B6,$C9,$FF,_     ;  B
                       $FF,$C1,$BE,$BE,$BE,$BE,$DD,$FF,_     ;  C
                       $FF,$80,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  D
                       $FF,$80,$B6,$B6,$B6,$B6,$BE,$FF,_     ;  E
                       $FF,$80,$F6,$F6,$F6,$F6,$FE,$FF,_     ;  F
                       $FF,$80,$BE,$B6,$B6,$B6,$86,$FF,_     ;  G
                       $FF,$80,$F7,$F7,$F7,$F7,$80,$FF,_     ;  H
                       $FF,$BE,$BE,$80,$80,$BE,$FF,$FF,_     ;  I
                       $FF,$CE,$BE,$80,$80,$FE,$FF,$FF,_     ;  J
                       $FF,$80,$F7,$EB,$DD,$BE,$FF,$FF,_     ;  K
                       $FF,$80,$BF,$BF,$BF,$BF,$BF,$FF,_     ;  L
                       $FF,$80,$FB,$F7,$F7,$FB,$80,$FF,_     ;  M
                       $FF,$80,$FB,$F7,$EF,$DF,$80,$FF,_     ;  N
                       $FF,$C1,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  O
                       $FF,$80,$F6,$F6,$F6,$F6,$F9,$FF,_     ;  P
                       $FF,$80,$F6,$E6,$D6,$B6,$B9,$FF,_     ;  R
                       $FF,$D9,$B6,$B6,$B6,$B6,$CD,$FF,_     ;  S
                       $FF,$FE,$FE,$80,$80,$FE,$FE,$FF,_     ;  T
                       $FF,$C0,$BF,$BF,$BF,$BF,$C0,$FF,_     ;  U
                       $FF,$E0,$DF,$BF,$BF,$DF,$E0,$FF,_     ;  V
                       $FF,$FC,$FB,$87,$87,$FB,$FC,$FF,_     ;  Y                     
                       $FF,$9E,$AE,$B6,$BA,$BC,$BE,$FF,_     ;  Z
                       $FF,$FF,$FF,$FF,$FF,$FF,$FF],veri     ;  BOŞLUK
Return               


End


meyer

#12
 Devre şemasını da ekledim hocam..

meyer

 hocam lookup dan harfleri çekip,ekranda yazdırdıktan sonra  sola doğru kaydırmayı başarabildim .Kaydırmadaki tek sorunum lookup'ın  içinde "ABCDE" var kaydır dediğimde bütün alfabe sola doğru kayıyor hocam..Bunu çözebilirsem eğer;sağa,aşağı ve yukarı kaydırma işlemlerini yapmaya çalışacağım..

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18.12.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define OSC 20
'****************************************************************
TRISB=0 : TRISD=0  : TRISA=0 : TRISC=0 : TRISE=0
PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0
INTCON2.7=0
'74HC595*********************************************************
Symbol CLK1   =PORTB.0
Symbol DTA1   =PORTB.1
Symbol STROBE1=PORTB.2
'****************************************************************
SUTUN     var Byte[200]   ' 1497 adet byte tipinde değişken tanımlanabilir.
ARA       VAR BYTE
I         var Byte
X         var Byte
W         var Byte
M         var Byte
'''''''''''''''''''
yazi_reg  var byte
harf_reg  var byte
adres_sec var byte
veri      var byte
t         var byte
z         var byte
'****************************************************************
AA:
yazi_reg=0 : i=0 : x=1 : m=0
''''''''''''''''''''''''''''
BASLA:
For W=0 To 4
GOSUB yazi : yazi_reg=yazi_reg+1
  gosub data_sec
   For t=0 To 7
    gosub datalar
     sutun[I]=veri : adres_sec=adres_sec+1     
      SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
       PORTD=X
      High STROBE1 : pauseus 200 : Low STROBE1
     X=X*2
    i=i+1
   pauseus 500
  Next
Next
pause 1 
goto basla1
'****************************************************************
BASLA1:
x=1  : yazi_reg=0
For W=0 To 4
GOSUB yazi : yazi_reg=yazi_reg+1
  gosub data_sec
  adres_sec=adres_sec+m
   For t=0 To 7
    gosub datalar
     sutun[I]=veri : adres_sec=adres_sec+1     
      SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]
       PORTD=X
      High STROBE1 : pauseus 200 : Low STROBE1
     X=X*2
    i=i+1
   pauseus 500
  Next
Next
pause 1 
M=M+1
if m<200 then gosub sola_kay :pause 1: goto basla1
'''if m<39 yaptığımda tam olarak düzgün bir kayma işlemi olmuyor..
goto aa
'****************************************************************
sola_kay:
For I=0 To 38
    sutun[i]= sutun[i+1]
   If i=40 Then sutun[40]=sutun[0]
Next i
return
'****************************************************************
saga_kay:
For I=38 to 0 step -1
    sutun[i]= sutun[i-1]
   If i=0 Then sutun[0]=sutun[39]
Next i
return
'****************************************************************
yazi:
LookUp yazi_reg,["ABCDE",8],harf_reg
Return
'****************************************************************
data_sec:
Select Case harf_reg
Case "A"
adres_sec=0    : Return
Case "B"
adres_sec=8    : Return
Case "C"
adres_sec=16   : Return
Case "D"
adres_sec=24   : Return
Case "E"
adres_sec=32   : Return
Case "F"
adres_sec=40   : Return
Case "G"
adres_sec=48   : Return
Case "H"
adres_sec=56   : Return
Case "I"
adres_sec=64   : Return
Case "J"
adres_sec=72   : Return
Case "K"
adres_sec=80   : Return
Case "L"
adres_sec=88   : Return
Case "M"
adres_sec=96   : Return
Case "N"       
adres_sec=104  : Return
Case "O"
adres_sec=112  : Return
Case "P"
adres_sec=120  : Return
Case "R"
adres_sec=128  : Return
Case "S"
adres_sec=136  : Return
Case "T"
adres_sec=144  : Return
Case "U"                                   
adres_sec=152  : Return
Case "V"
adres_sec=160  : Return
Case "Y"
adres_sec=168  : Return
Case "Z"
adres_sec=176  : Return
Case " "
adres_sec=184  : Return
End Select
Return
'****************************************************************
DATALAR:
     LookUp adres_sec,[$FF,$81,$F6,$F6,$F6,$F6,$81,$FF,_     ;  A
                       $FF,$80,$B6,$B6,$B6,$B6,$C9,$FF,_     ;  B
                       $FF,$C1,$BE,$BE,$BE,$BE,$DD,$FF,_     ;  C
                       $FF,$80,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  D
                       $FF,$80,$B6,$B6,$B6,$B6,$BE,$FF,_     ;  E
                       $FF,$80,$F6,$F6,$F6,$F6,$FE,$FF,_     ;  F
                       $FF,$80,$BE,$B6,$B6,$B6,$86,$FF,_     ;  G
                       $FF,$80,$F7,$F7,$F7,$F7,$80,$FF,_     ;  H
                       $FF,$BE,$BE,$80,$80,$BE,$BE,$FF,_     ;  I
                       $FF,$CE,$BE,$80,$80,$FE,$FF,$FF,_     ;  J
                       $FF,$80,$F7,$EB,$DD,$BE,$FF,$FF,_     ;  K
                       $FF,$80,$BF,$BF,$BF,$BF,$BF,$FF,_     ;  L
                       $FF,$80,$FB,$F7,$F7,$FB,$80,$FF,_     ;  M
                       $FF,$80,$FB,$F7,$EF,$DF,$80,$FF,_     ;  N
                       $FF,$C1,$BE,$BE,$BE,$BE,$C1,$FF,_     ;  O
                       $FF,$80,$F6,$F6,$F6,$F6,$F9,$FF,_     ;  P
                       $FF,$80,$F6,$E6,$D6,$B6,$B9,$FF,_     ;  R
                       $FF,$D9,$B6,$B6,$B6,$B6,$CD,$FF,_     ;  S
                       $FF,$FE,$FE,$80,$80,$FE,$FE,$FF,_     ;  T
                       $FF,$C0,$BF,$BF,$BF,$BF,$C0,$FF,_     ;  U
                       $FF,$E0,$DF,$BF,$BF,$DF,$E0,$FF,_     ;  V
                       $FF,$FC,$FB,$87,$87,$FB,$FC,$FF,_     ;  Y                     
                       $FF,$9E,$AE,$B6,$BA,$BC,$BE,$FF,_     ;  Z
                       $FF,$FF,$FF,$FF,$FF,$FF,$FF],veri     ;  BOŞLUK
Return               


End


meyer


Powered by EzPortal