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=0PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0INTCON2.7=0'74HC595*********************************************************Symbol CLK1   =PORTB.0Symbol DTA1   =PORTB.1Symbol STROBE1=PORTB.2'****************************************************************SUTUN     var Byte[39] temp      VAR BYTEI         var ByteX         var ByteW         var ByteM         var Byte'****************************************************************AA:'Satır tarama, bilgi sütunlardan geliyorSUTUN[0]=%01000010 : SUTUN[8] =%00111100 :SUTUN[16]=%00100010 : SUTUN[24] =%00111100SUTUN[1]=%01000010 : SUTUN[9] =%01000010 :SUTUN[17]=%00010010 : SUTUN[25] =%01000010SUTUN[2]=%01000010 : SUTUN[10]=%01000010 :SUTUN[18]=%00001010 : SUTUN[26] =%01000010SUTUN[3]=%01111110 : SUTUN[11]=%01111110 :SUTUN[19]=%00000110 : SUTUN[27] =%01111110 SUTUN[4]=%01000010 : SUTUN[12]=%01000010 :SUTUN[20]=%00001010 : SUTUN[28] =%01000010SUTUN[5]=%01000010 : SUTUN[13]=%01000010 :SUTUN[21]=%00010010 : SUTUN[29] =%01000010SUTUN[6]=%01000010 : SUTUN[14]=%01000010 :SUTUN[22]=%00100010 : SUTUN[30] =%01000010SUTUN[7]=%00000000 : SUTUN[15]=%00000000 :SUTUN[23]=%00000000 : SUTUN[31] =%00000000'''''''SUTUN[32] =%01000010SUTUN[33] =%01000010SUTUN[34] =%01000110SUTUN[35] =%01001010SUTUN[36] =%01010010SUTUN[37] =%01100010SUTUN[38] =%01000010SUTUN[39] =%00000000M=0'****************************************************************BASLA:    For W=0 To 5X=1        For I=0 To 7SHiftOut DTA1,CLK1,1,[SUTUN[I+32],SUTUN[I+24],SUTUN[I+16],SUTUN[I+8],SUTUN[I]]PORTD=XHigh STROBE1 : pauseus 200 : Low STROBE1 X=X*2pause 3        Next    Nextpause 1GoSub AYAR'gosub ayar1M=M+1If M<15 Then BASLAgoto AA'****************************************************************AYAR:    For I=0 To 39SUTUN[I]=SUTUN[I]<<1    Next I Return'****************************************************************ayar1:for I=0 to 31sutun.0[I+8]=sutun.7[I]sutun[I]=sutun[I]<<1returnEnd

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=0PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0INTCON2.7=0'74HC595*********************************************************Symbol CLK1   =PORTB.0Symbol DTA1   =PORTB.1Symbol STROBE1=PORTB.2'****************************************************************SUTUN     var Byte[40] temp      VAR BYTEARA       VAR BYTEI         var ByteX         var ByteW         var ByteM         var Byte'****************************************************************AA:'Satır tarama, bilgi sütunlardan geliyorSUTUN[0]=%01000010 : SUTUN[8] =%00111100 :SUTUN[16]=%00100010 : SUTUN[24] =%00111100SUTUN[1]=%01000010 : SUTUN[9] =%01000010 :SUTUN[17]=%00010010 : SUTUN[25] =%01000010SUTUN[2]=%01000010 : SUTUN[10]=%01000010 :SUTUN[18]=%00001010 : SUTUN[26] =%01000010SUTUN[3]=%01111110 : SUTUN[11]=%01111110 :SUTUN[19]=%00000110 : SUTUN[27] =%01111110 SUTUN[4]=%01000010 : SUTUN[12]=%01000010 :SUTUN[20]=%00001010 : SUTUN[28] =%01000010SUTUN[5]=%01000010 : SUTUN[13]=%01000010 :SUTUN[21]=%00010010 : SUTUN[29] =%01000010SUTUN[6]=%01000010 : SUTUN[14]=%01000010 :SUTUN[22]=%00100010 : SUTUN[30] =%01000010SUTUN[7]=%00000000 : SUTUN[15]=%00000000 :SUTUN[23]=%00000000 : SUTUN[31] =%00000000'''''''SUTUN[32] =%01000010SUTUN[33] =%01000010SUTUN[34] =%01000110SUTUN[35] =%01001010SUTUN[36] =%01010010SUTUN[37] =%01100010SUTUN[38] =%01000010SUTUN[39] =%00000000M=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 AYARGoSub KAYDIRM=M+1If M<9 Then BASLAM=0goto AA'****************************************************************AYAR:    For I=0 To 39SUTUN[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]=ARANEXT    ReturnEnd


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=0PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0INTCON2.7=0'74HC595*********************************************************Symbol CLK1   =PORTB.0Symbol DTA1   =PORTB.1Symbol STROBE1=PORTB.2'****************************************************************SUTUN     var Byte[40] temp      VAR BYTEARA       VAR BYTEI         var ByteX         var ByteW         var ByteM         var Byte'****************************************************************AA:'Satır tarama, bilgi sütunlardan geliyorSUTUN[0]=%01000010 : SUTUN[8] =%00111100 :SUTUN[16]=%00100010 : SUTUN[24] =%00111100SUTUN[1]=%01000010 : SUTUN[9] =%01000010 :SUTUN[17]=%00010010 : SUTUN[25] =%01000010SUTUN[2]=%01000010 : SUTUN[10]=%01000010 :SUTUN[18]=%00001010 : SUTUN[26] =%01000010SUTUN[3]=%01111110 : SUTUN[11]=%01111110 :SUTUN[19]=%00000110 : SUTUN[27] =%01111110 SUTUN[4]=%01000010 : SUTUN[12]=%01000010 :SUTUN[20]=%00001010 : SUTUN[28] =%01000010SUTUN[5]=%01000010 : SUTUN[13]=%01000010 :SUTUN[21]=%00010010 : SUTUN[29] =%01000010SUTUN[6]=%01000010 : SUTUN[14]=%01000010 :SUTUN[22]=%00100010 : SUTUN[30] =%01000010SUTUN[7]=%00000000 : SUTUN[15]=%00000000 :SUTUN[23]=%00000000 : SUTUN[31] =%00000000'''''''SUTUN[32] =%01000010SUTUN[33] =%01000010SUTUN[34] =%01000110SUTUN[35] =%01001010SUTUN[36] =%01010010SUTUN[37] =%01100010SUTUN[38] =%01000010SUTUN[39] =%00000000M=0'****************************************************************BASLA:      gosub yerles      GoSub KAYDIR      M=M+1      If M<9 Then BASLA      M=0BASLA_BIR:            gosub yerles      GOSUB KAYDIR_ASAGI      m=M+1      IF M<9 then BASLA_BIR      m=0      goto AAYERLES:    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 39SUTUN[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]=ARANEXT    ReturnKAYDIR_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]=ARANEXT    ReturnEnd

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=0PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0INTCON2.7=0'74HC595*********************************************************Symbol CLK1   =PORTB.0Symbol DTA1   =PORTB.1Symbol STROBE1=PORTB.2'****************************************************************SUTUN     var Byte[40] temp      VAR BYTEARA       VAR BYTEI         var ByteX         var ByteW         var ByteM         var Bytea         var byte'****************************************************************AA:'Satır tarama, bilgi sütunlardan geliyorSUTUN[0]=%11111111 : SUTUN[8] =%11111111 :SUTUN[16]=%11111111 : SUTUN[24] =%11111111SUTUN[1]=%10000000 : SUTUN[9] =%10000001 :SUTUN[17]=%10000000 : SUTUN[25] =%10000001SUTUN[2]=%11110111 : SUTUN[10]=%11110110 :SUTUN[18]=%11110111 : SUTUN[26] =%11110110SUTUN[3]=%11110111 : SUTUN[11]=%11110110 :SUTUN[19]=%11101011 : SUTUN[27] =%11110110 SUTUN[4]=%11110111 : SUTUN[12]=%11110110 :SUTUN[20]=%11011101 : SUTUN[28] =%11110110SUTUN[5]=%11110111 : SUTUN[13]=%11110110 :SUTUN[21]=%10111110 : SUTUN[29] =%11110110SUTUN[6]=%10000000 : SUTUN[14]=%10000001 :SUTUN[22]=%11111111 : SUTUN[30] =%10000001SUTUN[7]=%11111111 : SUTUN[15]=%11111111 :SUTUN[23]=%11111111 : SUTUN[31] =%11111111'''''''SUTUN[32] =%11111111SUTUN[33] =%10000000SUTUN[34] =%11111011SUTUN[35] =%11110111SUTUN[36] =%11101111SUTUN[37] =%11011111SUTUN[38] =%10000000SUTUN[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 1M=M+1If M<40           Then gosub sola_kay   : goto  BASLAIf M>40 and m<80  Then gosub saga_kay   : goto  BASLAIf M>80 and m<89  Then gosub asagi_kay  : goto  BASLAif m>89 and m<98  then gosub yukari_kay : goto  baslaIf m>98 then m=0'M=0goto AA'****************************************************************sola_kay: For I=0 To 38    sutun[i]= sutun[i+1]    If i=39 Then sutun[39]=sutun[0] Next ireturn'****************************************************************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 39SUTUN[I]=SUTUN[I]<<1    Next I Return'****************************************************************yukari_kay:    For I=0 To 39SUTUN[I]=SUTUN[I]>>1    Next IReturnEnd

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=0PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0INTCON2.7=0'74HC595*********************************************************Symbol CLK1   =PORTB.0Symbol DTA1   =PORTB.1Symbol STROBE1=PORTB.2'****************************************************************SUTUN     var Byte[40] temp      VAR BYTEARA       VAR BYTESOL       var byteSAG       VAR BYTEI         var ByteX         var ByteW         var ByteM         var Bytea         var byteZ         VAR BIT'****************************************************************AA:'Satır tarama, bilgi sütunlardan geliyorSUTUN[0]=%11111111 : SUTUN[8] =%11111111 :SUTUN[16]=%11111111 : SUTUN[24] =%11111111SUTUN[1]=%10000000 : SUTUN[9] =%10000001 :SUTUN[17]=%10000000 : SUTUN[25] =%10000001SUTUN[2]=%11110111 : SUTUN[10]=%11110110 :SUTUN[18]=%11110111 : SUTUN[26] =%11110110SUTUN[3]=%11110111 : SUTUN[11]=%11110110 :SUTUN[19]=%11101011 : SUTUN[27] =%11110110 SUTUN[4]=%11110111 : SUTUN[12]=%11110110 :SUTUN[20]=%11011101 : SUTUN[28] =%11110110SUTUN[5]=%11110111 : SUTUN[13]=%11110110 :SUTUN[21]=%10111110 : SUTUN[29] =%11110110SUTUN[6]=%10000000 : SUTUN[14]=%10000001 :SUTUN[22]=%11111111 : SUTUN[30] =%10000001SUTUN[7]=%11111111 : SUTUN[15]=%11111111 :SUTUN[23]=%11111111 : SUTUN[31] =%11111111   '''''''SUTUN[32] =%11111111SUTUN[33] =%10000000SUTUN[34] =%11111011SUTUN[35] =%11110111SUTUN[36] =%11101111SUTUN[37] =%11011111SUTUN[38] =%10000000SUTUN[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+1If M<40           Then gosub sola_kay   : goto  BASLAIf M>40 and m<80  Then gosub saga_kay   : goto  BASLAIf M>80 and m<89  Then gosub asagi_kay  : goto  BASLAif m>89 and m<98  then gosub yukari_kay : goto  baslaIf 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 ireturn'****************************************************************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.7FOR X=7 to 1 STEP -1   ARA.0[x]=ARA.0[X-1] NEXT   ara.0=Z   sutun[I]=ARAnext Return'****************************************************************yukari_kay:FOR I=0 to 39   ARA=SUTUN[I]   z=ARA.0FOR X=0 to 6   ARA.0[X]=ARA.0[X+1]NEXT   ARA.7=Z   SUTUN[I]=ARANEXT ReturnEnd

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]<<1next Ireturn''''''''''''''''''''yukari_kay:for I=0 to 39 sutun[I]=sutun[I]>>1next Ireturn


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=0PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0INTCON2.7=0'74HC595*********************************************************Symbol CLK1   =PORTB.0Symbol DTA1   =PORTB.1Symbol STROBE1=PORTB.2'****************************************************************SUTUN     var Byte[40] temp      VAR BYTEARA       VAR BYTESOL       var byteSAG       VAR BYTEI         var ByteX         var ByteW         var ByteM         var Bytea         var byteZ         VAR BIT'''''''''''''''''''yazi_reg  var byteharf_reg  var byteadres_sec var byteveri      var bytet         var byte'****************************************************************AA:'I=0 : yazi_reg=0 yazi_reg=0 : m=0 : i=0 : x=1'''''''''''''''''BASLA:    For W=0 To 4GOSUB yazi : yazi_reg=yazi_reg+1gosub 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+1If M<5 Then AA goto BASLA '****************************************************************yazi:LookUp yazi_reg,["ABCDE",5],harf_regReturn'**************************************************************** data_sec:Select Case harf_regCase "A"adres_sec=0    : ReturnCase "B"adres_sec=8    : ReturnCase "C"adres_sec=16   : ReturnCase "D"adres_sec=24   : ReturnCase "E"adres_sec=32   : ReturnCase "F"adres_sec=40   : ReturnCase "G"adres_sec=48   : ReturnCase "H"adres_sec=56   : ReturnCase "I"adres_sec=64   : ReturnCase "J"adres_sec=72   : ReturnCase "K"adres_sec=80   : ReturnCase "L"adres_sec=88   : ReturnCase "M"adres_sec=96   : ReturnCase "N"       adres_sec=104  : ReturnCase "O"adres_sec=112  : ReturnCase "P"adres_sec=120  : ReturnCase "R"adres_sec=128  : ReturnCase "S"adres_sec=136  : ReturnCase "T"adres_sec=144  : ReturnCase "U"                                    adres_sec=152  : ReturnCase "V"adres_sec=160  : ReturnCase "Y"adres_sec=168  : ReturnCase "Z"adres_sec=176  : ReturnCase " "adres_sec=184  : ReturnEnd SelectReturn'****************************************************************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ŞLUKReturn               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=0PORTB=0 : PORTD=0  : PORTA=0 : PORTC=0 : PORTE=0INTCON2.7=0'74HC595*********************************************************Symbol CLK1   =PORTB.0Symbol DTA1   =PORTB.1Symbol STROBE1=PORTB.2'****************************************************************SUTUN     var Byte[200]   ' 1497 adet byte tipinde değişken tanımlanabilir.ARA       VAR BYTEI         var ByteX         var ByteW         var ByteM         var Byte'''''''''''''''''''yazi_reg  var byteharf_reg  var byteadres_sec var byteveri      var bytet         var bytez         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 Nextpause 1  goto basla1'****************************************************************BASLA1:x=1  : yazi_reg=0For 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 Nextpause 1  M=M+1if 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 ireturn'****************************************************************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_regReturn'**************************************************************** data_sec:Select Case harf_regCase "A"adres_sec=0    : ReturnCase "B"adres_sec=8    : ReturnCase "C"adres_sec=16   : ReturnCase "D"adres_sec=24   : ReturnCase "E"adres_sec=32   : ReturnCase "F"adres_sec=40   : ReturnCase "G"adres_sec=48   : ReturnCase "H"adres_sec=56   : ReturnCase "I"adres_sec=64   : ReturnCase "J"adres_sec=72   : ReturnCase "K"adres_sec=80   : ReturnCase "L"adres_sec=88   : ReturnCase "M"adres_sec=96   : ReturnCase "N"       adres_sec=104  : ReturnCase "O"adres_sec=112  : ReturnCase "P"adres_sec=120  : ReturnCase "R"adres_sec=128  : ReturnCase "S"adres_sec=136  : ReturnCase "T"adres_sec=144  : ReturnCase "U"                                    adres_sec=152  : ReturnCase "V"adres_sec=160  : ReturnCase "Y"adres_sec=168  : ReturnCase "Z"adres_sec=176  : ReturnCase " "adres_sec=184  : ReturnEnd SelectReturn'****************************************************************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ŞLUKReturn               End

meyer


Powered by EzPortal