kayan yazı programının mantıgı

Başlatan savas1980, 04 Şubat 2007, 20:48:51

savas1980

herkese merhabalar elimde bir kayan yazı programı var yanlış hatırlamıyorsam bu forumdan almıstım fakat daha yeni ogrenmeye basladıgım için bazı yerleri tam anlıyamıyorum acaba bana bu programı anlatbilecek biri varmı? Mesela tarama kısmında şu şu şu yapılıyor oyuzden 4 shiftout kullanıldı,gsatır a deger nerden veriliyorda Shiftoutla data pinine yolluyoruz ???... Devrenin semasıda mevcut elimde bunun uzerinden işin mantıgını kapmak istiyorum. Simdiden herkese teşekkür ederim Devre seması kodun altındaki linkte
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT, WDT_OFF  
'kristal harici bağlanacak
cmcon=7   
DATAPIN1 VAR PORTA.0          
CLOCKPIN1 VAR PORTA.1 
LATCH   VAR PORTA.2 
TRISA=%000000 
TRISB=%00000000
kc var byte 
kb var byte
k1 var byte 
ks var byte           'kaydırma sayısı (sütun sayısı kadar kaydırmak için)
gsatir11 var byte
gsatir12 var byte
gsatir13 var byte
gsatir14 var byte
gsatir21 var byte
gsatir22 var byte
gsatir23 var byte
gsatir24 var byte
gsatir31 var byte
gsatir32 var byte
gsatir33 var byte
gsatir34 var byte
gsatir41 var byte
gsatir42 var byte
gsatir43 var byte
gsatir44 var byte
gsatir51 var byte
gsatir52 var byte
gsatir53 var byte
gsatir54 var byte
gsatir61 var byte
gsatir62 var byte
gsatir63 var byte
gsatir64 var byte
gsatir71 var byte
gsatir72 var byte
gsatir73 var byte
gsatir74 var byte
gsatir81 var byte
gsatir82 var byte
gsatir83 var byte
gsatir84 var byte
satir1 var byte
satir2 var byte
satir3 var byte
satir4 var byte
satir5 var byte
satir6 var byte
satir7 var byte
satir8 var byte
alinan var byte
clear
portb=%11111111      'portb dotmatrisin katotlarına bağlı old. için

start:
kc=0
for kc=0 to 12
lookup kc,["ABCDEFGHIJKLMNOPRSTUVYZ"], alinan
gosub karakter
for kb=0 to ks    'harf genişliği kadar kaydır
for k1=0 to 20    'tarama sayısı
gosub tarama
next k1 
gosub kaydir  
pause 5         'bir harfin kayma süresi
next kb
next kc
goto start

karakter:
if alinan=32 then gosub bosluk
if alinan=65 then gosub A
if alinan=66 then gosub B
if alinan=67 then gosub C
if alinan=68 then gosub D
if alinan=69 then gosub E
if alinan=70 then gosub F
if alinan=71 then gosub G
if alinan=72 then gosub H
if alinan=73 then gosub I
if alinan=74 then gosub J
if alinan=75 then gosub K
if alinan=76 then gosub L
if alinan=77 then gosub M
if alinan=78 then gosub N
if alinan=79 then gosub O
if alinan=80 then gosub P
if alinan=82 then gosub R
if alinan=83 then gosub S
if alinan=84 then gosub T
if alinan=85 then gosub U
if alinan=86 then gosub V
if alinan=89 then gosub Y
if alinan=90 then gosub Z

return


kaydir:

gsatir14=gsatir14<<1
gsatir14.0=gsatir13.7
gsatir13=gsatir13<<1
gsatir13.0=gsatir12.7
gsatir12=gsatir12<<1
gsatir12.0=gsatir11.7
gsatir11=gsatir11<<1

gsatir24=gsatir24<<1
gsatir24.0=gsatir23.7
gsatir23=gsatir23<<1
gsatir23.0=gsatir22.7
gsatir22=gsatir22<<1
gsatir22.0=gsatir21.7
gsatir21=gsatir21<<1

gsatir34=gsatir34<<1
gsatir34.0=gsatir33.7
gsatir33=gsatir33<<1
gsatir33.0=gsatir32.7
gsatir32=gsatir32<<1
gsatir32.0=gsatir31.7 
gsatir31=gsatir31<<1

gsatir44=gsatir44<<1
gsatir44.0=gsatir43.7
gsatir43=gsatir43<<1
gsatir43.0=gsatir42.7
gsatir42=gsatir42<<1
gsatir42.0=gsatir41.7
gsatir41=gsatir41<<1

gsatir54=gsatir54<<1
gsatir54.0=gsatir53.7
gsatir53=gsatir53<<1
gsatir53.0=gsatir52.7
gsatir52=gsatir52<<1
gsatir52.0=gsatir51.7
gsatir51=gsatir51<<1

gsatir64=gsatir64<<1
gsatir64.0=gsatir63.7
gsatir63=gsatir63<<1
gsatir63.0=gsatir62.7
gsatir62=gsatir62<<1
gsatir62.0=gsatir61.7 
gsatir61=gsatir61<<1

gsatir74=gsatir74<<1
gsatir74.0=gsatir73.7
gsatir73=gsatir73<<1
gsatir73.0=gsatir72.7
gsatir72=gsatir72<<1
gsatir72.0=gsatir71.7 
gsatir71=gsatir71<<1

gsatir84=gsatir84<<1
gsatir84.0=gsatir83.7
gsatir83=gsatir83<<1
gsatir83.0=gsatir82.7
gsatir82=gsatir82<<1
gsatir82.0=gsatir81.7
gsatir81=gsatir81<<1 

gsatir11.0 = satir1.7 
gsatir21.0 = satir2.7
gsatir31.0 = satir3.7
gsatir41.0 = satir4.7
gsatir51.0 = satir5.7
gsatir61.0 = satir6.7
gsatir71.0 = satir7.7    
gsatir81.0 = satir8.7 

satir1=satir1<<1
satir2=satir2<<1
satir3=satir3<<1
satir4=satir4<<1
satir5=satir5<<1
satir6=satir6<<1
satir7=satir7<<1 
satir8=satir8<<1 
return


tarama:
 
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir14]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir13]  
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir12]    
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir11] 
high latch 
pauseus 10 
low latch 
PORTB=%01111111     '1. satır açıldı
PAUSE 1 
PORTB=%11111111     '1. satır kapandı

ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir24]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir23]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir22]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir21] 
high latch 
pauseus 10 
low latch 
PORTB=%10111111      '2. satır açıldı
PAUSE 1 
PORTB=%11111111      '2. satır kapandı

ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir34]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir33] 
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir32]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir31] 
high latch 
pauseus 10 
low latch 
PORTB=%11011111       '3. satır açıldı
PAUSE 1 
PORTB=%11111111       '3. satır kapandı

ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir44]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir43]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir42]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir41] 
high latch 
pauseus 10 
low latch 
PORTB=%11101111       '4. satır açıldı
PAUSE 1 
PORTB=%11111111       '4. satır kapandı

ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir54]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir53]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir52]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir51] 
high latch 
pauseus 10 
low latch 
PORTB=%11110111       '5. satır açıldı
PAUSE 1 
PORTB=%11111111       '5. satır kapandı

ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir64]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir63]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir62]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir61] 
high latch 
pauseus 10 
low latch 
PORTB=%11111011       '6. satır açıldı
PAUSE 1 
PORTB=%11111111       '6. satır kapandı

ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir74]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir73]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir72]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir71] 
high latch 
pauseus 10 
low latch 
PORTB=%11111101       '7. satır açıldı
PAUSE 1 
PORTB=%11111111       '7. satır kapandı

ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir84]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir83] 
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir82]
ShiftOut DATAPIN1,CLOCKPIN1,1,[gsatir81] 
high latch 
pauseus 10 
low latch 
PORTB=%11111110       '8. satır açıldı
PAUSE 1 
PORTB=%11111111       '8. satır kapandı

return

bosluk:
ks=3
satir1=%00000000 
satir2=%00000000
satir3=%00000000 
satir4=%00000000 
satir5=%00000000 
satir6=%00000000 
satir7=%00000000 
satir8=%00000000
return

A: 
ks=5
satir1=%01110000 
satir2=%10001000
satir3=%10001000 
satir4=%10001000 
satir5=%11111000 
satir6=%10001000 
satir7=%10001000 
satir8=%10001000 
return

B: 
ks=5
satir1=%11110000 
satir2=%10001000
satir3=%10001000  
satir4=%11110000  
satir5=%10001000 
satir6=%10001000  
satir7=%10001000  
satir8=%11110000   
return

C: 
ks=5
satir1=%01110000 
satir2=%10001000
satir3=%10000000  
satir4=%10000000    
satir5=%10000000    
satir6=%10000000    
satir7=%10001000    
satir8=%01110000   
return

_C: 
ks=5
satir1=%01110000   
satir2=%10001000  
satir3=%10000000   
satir4=%10000000    
satir5=%10000000    
satir6=%10101000    
satir7=%01110000    
satir8=%00100000   
return

D: 
ks=5
satir1=%11110000  
satir2=%10001000 
satir3=%10001000  
satir4=%10001000 
satir5=%10001000  
satir6=%10001000  
satir7=%10001000  
satir8=%11110000  
return

E: 
ks=5
satir1=%11111000   
satir2=%10000000   
satir3=%10000000   
satir4=%11110000   
satir5=%10000000   
satir6=%10000000   
satir7=%10000000   
satir8=%11111000   
return

F: 
ks=5
satir1=%11111000  
satir2=%10000000 
satir3=%10000000  
satir4=%11110000  
satir5=%10000000 
satir6=%10000000  
satir7=%10000000  
satir8=%10000000   
return

G: 
ks=5
satir1=%01110000   
satir2=%10001000  
satir3=%10000000   
satir4=%10000000   
satir5=%10111000   
satir6=%10001000   
satir7=%10001000   
satir8=%01110000   
return

_G: 
ks=5
satir1=%01110000   
satir2=%00000000  
satir3=%01110000   
satir4=%10001000   
satir5=%10000000   
satir6=%10111000   
satir7=%10001000  
satir8=%01110000   
return

H: 
ks=5
satir1=%10001000   
satir2=%10001000 
satir3=%10001000   
satir4=%10001000  
satir5=%11111000   
satir6=%10001000   
satir7=%10001000   
satir8=%10001000  
return

I: 
ks=1
satir1=%10000000    
satir2=%10000000   
satir3=%10000000    
satir4=%10000000    
satir5=%10000000    
satir6=%10000000    
satir7=%10000000    
satir8=%10000000   
return

_I: 
ks=1
satir1=%10000000     
satir2=%00000000    
satir3=%10000000     
satir4=%10000000     
satir5=%10000000     
satir6=%10000000     
satir7=%10000000     
satir8=%10000000   
return

J: 
ks=5
satir1=%00001000      
satir2=%00001000     
satir3=%00001000      
satir4=%00001000      
satir5=%00001000     
satir6=%00001000     
satir7=%10001000     
satir8=%01110000  
return

K: 
ks=6
satir1=%10001000     
satir2=%10010000    
satir3=%10100000     
satir4=%11000000    
satir5=%10100000     
satir6=%10010000      
satir7=%10001000      
satir8=%10000100   
return

L: 
ks=5
satir1=%10000000      
satir2=%10000000     
satir3=%10000000      
satir4=%10000000      
satir5=%10000000     
satir6=%10000000     
satir7=%10000000     
satir8=%11111000   
return

M: 
ks=7
satir1=%10000010       
satir2=%11000110     
satir3=%10101010      
satir4=%10010010      
satir5=%10000010       
satir6=%10000010     
satir7=%10000010     
satir8=%10000010   
return

N: 
ks=6
satir1=%10000100      
satir2=%11000100      
satir3=%10100100       
satir4=%10010100       
satir5=%10001100       
satir6=%10000100        
satir7=%10000100       
satir8=%10000100  
return

O: 
ks=5
satir1=%01110000        
satir2=%10001000       
satir3=%10001000        
satir4=%10001000       
satir5=%10001000        
satir6=%10001000        
satir7=%10001000        
satir8=%01110000   
return

_O: 
ks=5
satir1=%01010000       
satir2=%00000000      
satir3=%01110000       
satir4=%10001000       
satir5=%10001000       
satir6=%10001000       
satir7=%10001000       
satir8=%01110000  
return

P: 
ks=5
satir1=%11110000       
satir2=%10001000      
satir3=%10001000       
satir4=%10001000       
satir5=%11110000       
satir6=%10000000       
satir7=%10000000      
satir8=%10000000  
return

R: 
ks=5
satir1=%11110000       
satir2=%10001000      
satir3=%10001000       
satir4=%10001000       
satir5=%11110000       
satir6=%10100000       
satir7=%10010000       
satir8=%10001000   
return

S: 
ks=5
satir1=%01110000       
satir2=%10001000      
satir3=%10000000       
satir4=%01110000       
satir5=%00001000       
satir6=%00001000       
satir7=%10001000       
satir8=%01110000   
return

_S: 
ks=5
satir1=%01110000           
satir2=%10001000          
satir3=%10000000           
satir4=%01110000           
satir5=%00001000           
satir6=%10101000           
satir7=%01110000           
satir8=%00100000   
return

T: 
ks=5
satir1=%11111000           
satir2=%00100000          
satir3=%00100000           
satir4=%00100000           
satir5=%00100000           
satir6=%00100000           
satir7=%00100000           
satir8=%00100000   
return

U: 
ks=5
satir1=%10001000            
satir2=%10001000           
satir3=%10001000            
satir4=%10001000            
satir5=%10001000            
satir6=%10001000            
satir7=%10001000            
satir8=%01110000   
return

_U: 
ks=5
satir1=%01010000             
satir2=%00000000            
satir3=%10001000                                        
satir4=%10001000             
satir5=%10001000             
satir6=%10001000             
satir7=%10001000             
satir8=%01110000   
return

V: 
ks=5
satir1=%10001000           
satir2=%10001000          
satir3=%10001000           
satir4=%10001000           
satir5=%10001000           
satir6=%10001000           
satir7=%01010000           
satir8=%00100000   
return

Y: 
ks=5
satir1=%10001000           
satir2=%10001000          
satir3=%01010000           
satir4=%00100000          
satir5=%00100000           
satir6=%00100000          
satir7=%00100000          
satir8=%00100000   
return

Z: 
ks=6
satir1=%11111100            
satir2=%00000100           
satir3=%00001000            
satir4=%00010000           
satir5=%00100000           
satir6=%01000000            
satir7=%10000000            
satir8=%11111100  
return

http://rapidshare.com/files/14909352/satir_tarama_ornek.dsn.html

savas1980

Bu arada lütfen yanlış anlamayın Karakoy Selanik pasajından bir yuruyen yazı kiti aldım devre verdigimin 1 e 1 aynısı oyuzden bu program ve devre semasını verdim umarım bi yanliş anlaşilma olmaz... Biturlu çaliştiramadım sonra bu programı gordum birden bir ümit ışığı belirdi benim için  ;)  Allah yardımcı olandanda olmayandanda razı olsun...

serpil_07

linki kontrol et istersen link çalışmıyor. bu şekilde sana kimse yardımcı olamaz. ;)

savas1980

Mod arkadaslar linki duzeltmiş galiba teşekkürler

ilker_32

Sen kodları anlatmamızımı istiyorsun. Yoksa devreyimi çalıştıramadın. Açıkçası anlamadım ben yukarda farklı konuşmuşsun
aşağıda farklı konuşmuşsun. :?:

savas1980

Alıntı yapılan: "ilker_32"Sen kodları anlatmamızımı istiyorsun. Yoksa devreyimi çalıştıramadın. Açıkçası anlamadım ben yukarda farklı konuşmuşsun
aşağıda farklı konuşmuşsun. :?:
kodu devreye yukleyince calişiyo zaten devreyi anladım fakat kodu tam cozemedim desem anlasılırmı.......
Elimde budevre hazır halde var bukodlar devreyi cok guzel caliştiriyor fakat ben mantıgını anlamak istiyorum

serpil_07

her şey ortada zaten açıklanacak şey yok. ben göremiyorum. :mrgreen:

savas1980

iyi size gore hersey ortadaysa sorun yok ozaman. Arkadaslardanricam madem anlatılabilecek bisey yok kapatsınlar baslıgı bosu bosuna yer kaplamasın... Paylaşım için teşekkürler   :!:   :!:

aster

serpil, yazılarına dikkat etmeni rica ederim.

savas1980, verdiği kodların açılımlarını yaptığı işlemleri birinin anlatmasını istiyor

yani o bunu bilmiyor ben de bilmiyorum bilmeyen daha çok kişi olabilir

Efendice soruyoruz, biri bunu kıymetli vaktini harcayıp bize anlatabilir mi?

OG

savas1980,
Eğer bütününün anlatılmasını istiyorsan iş biraz karışır. Çünkü bilmek gerekenler hemen ilk bakışta;
Dot matrix LED displeyler
Multiplex tarama sistemi
Shift Register
Latch
PIC
PBP
Seri data transferi


Sistem yukarıdaki maddeler üzere inşaa edilmiş. Tümünü anlatmak ciddi bir zaman ister. Bu sebeple anlamadığın noktaları secerek sorarsan daha kolay cevap alacaksın.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

savas1980

Benim anlamak istedigim
1)tarama bolumunde gsatır icerisindeki bilgi clock sinyali ile senkronize olarak data ya gidiyo tmm ama gsatır degişkenine bilgi nerden gidiyo?

2)Kullanılan SHIFTOUT komut sayısı ile 74hc595 in sayısı arasında bir bağlantı varmı?

3)gsatır11,gsatır12.....,gsatır14
  gsatır21,gsatır22......gsatır24
  ...........................................
  ..........................................
hersatır icin neden 4 degişken kullanılmıs

ilginize teşekkür ederim

c_merhametli

arkadaslar link calısmıyor ilgilenirseniz sevinirm kolay gelsin

M_B

Programın calısmasını dilim dondugunce acıklamaya calısayım.
Oncelıkle sutun sayısı kadar kaydırmak ıcın gecici satır değişkenleri tanımlanıyor.
gsatır11 var byte gibi.

Burda gsatır demek gecici satır anlamında 1 ise satır numarası diger 1 ise sutun  anlamında.
Ornek: gsatır14 demek 1 sutun 4. satır anlamında.

Burda Kayacak metin  ıse Lookup tablosunun icinde yer almakta.
Start: 
for kc=0 to 12 
lookup kci ,["ABCDEFGHIJKLMNOPRSTUVYZ"], alinan


simdi burayı acıklayayım.
burda kc sıfırdan baslayıp 12 ye kadar donguye girer.
Bu dongu bizim lookup tablosundaki yazının tek tek harflerine ulasmamızı saglamaktadır.

ornek kc =2 olsun. o zaman lookup tablosunda bizim secmiş oldugumuz harf C dir bu C harfi alınan degişkenine aktarılır.
sonra
gosup karakter altprogramına dallanır
Burda  alınan ın icindeki degerle rakamlar karsılastırılır.
( Not: C nın ascı deki rakam degeri 67 dir )
hangisine eşit se o altprograma dallanır.
Burda gosub C ye dallanır.
ve gosub C ye dallandıgımızda
C: 
ks=5 
satir1=%01110000 
satir2=%10001000 
satir3=%10000000  
satir4=%10000000    
satir5=%10000000    
satir6=%10000000    
satir7=%10001000    
satir8=%01110000    
return

bu bilgiler satırlara aktarılır.
ve geri doner
nereye dersenız
bu kısma doner
for kb=0 to ks    'harf genişliği kadar kaydır
for k1=0 to 20    'tarama sayısı
gosub tarama

burda  tarama alt programına gider
ve ekrana 20 kez veriyi gönderir.

daha sonra
kaydır alt programına dallanır.
burda veriler kaydırma işlemine tabi olur.
ornek olarak dersek

kaydir:

gsatir14=gsatir14<<1   burda gsatır14 icindeki veri bir sola kaydırılıp gsatır14 icine konur
gsatir14.0=gsatir13.7   burda ise gsatır13.7 ise gsatır13 icindeki 7.bitini gsatır14.0 aktarır. Yanı gsatır14 un 0. bitine koyar boyle devam etmektedir.
gsatir13=gsatir13<<1
gsatir13.0=gsatir12.7
gsatir12=gsatir12<<1
gsatir12.0=gsatir11.7
gsatir11=gsatir11<<1


kaydırma bittikten sonra tekrar start kısmına gider.

dilim dondukce anlatmaya calıstım umarım faydalı olabilmişimdir.
Kolay gelsın
M_B
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet