avatar_haberlesme

Ufak Bir Soru

Başlatan haberlesme, 12 Ocak 2013, 21:59:30

haberlesme

#30
Hocam galiba benden bir halt olmayacak.
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 16.01.2013                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628A, INTOSC_OSC_CLKOUT
@ DEVICE pic16F628A, WDT_OFF                                               
@ DEVICE pic16F628A, PWRT_ON           
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, BOD_OFF
@ DEVICE pic16F628A, LVP_OFF
@ DEVICE pic16F628A, CPD_OFF
@ DEVICE pic16F628A, PROTECT_OFF

DEFINE OSC 4   '***************************YENİ İLAVE ETTİM
CMCON=7        '***************************YENI İLAVE ETTİM
TRISB=0 : TRISA=0
PORTB=0 : PORTA=0
                                                             
DTA VAR PORTA.0     
CLK VAR PORTA.1       
OE VAR PORTA.2
I VAR BYTE
SAYIA VAR BYTE
SAYIB VAR BYTE
INDEX VAR BYTE
ALINAN VAR BYTE
DISP1 VAR BYTE[8]
DISP2 VAR BYTE[8]
A VAR BYTE

BASLA:
    pause 500   
   FOR I=0 To 7
   GOSUB AKTAR         
   PORTB=DCD I  '  ***********************BU SATIR DÜZELTİLDİ***********************
   Pause 1
   PORTB=0
   next     
   GOTO BASLA

       
HARF_SEC:
    FOR INDEX=0 TO 7
    GOSUB TABLO
    DISP1[INDEX]=ALINAN
    NEXT 
    FOR INDEX=8 TO 15
    GOSUB TABLO
    DISP2[INDEX]=ALINAN
    NEXT INDEX
    RETURN
   
AKTAR:
    DISP1[I]=ALINAN:DISP2[I]=ALINAN
    SHIFTOUT DTA,CLK,1,[DISP1,DISP2]
    PULSOUT OE,1
    GOTO basla
    RETURN
   
TABLO:
    LOOKUP INDEX,[66,36,24,16,16,16,16,0,_
                  66,66,66,90,90,102,102,0],ALINAN
                    RETURN

haberlesme

Hocam sayfalarca açıklama yaptınız anlayamadıgım için inanın çok mahcup yazıyorum sizin anlattıklarınıza göre ortaya bişey koyamamak size ve emeginize yaptıgım saygısızlıgı gösteriyor ama bir yandan da ögrenmek istiyorum.Hocam şu algoritmayı kuramıyorum deniyorum deniyorum yok olmuyor birtürlü

Başla etiketinden sonra 500 ms açılış gecikmemizi verdik

başla etiketinin altı aynı kalıcak ben sadece şu eklentiyi mi eklicem

BASLA:
   PAUSE 500   
   FOR I=0 To 7   
   GOSUB HARF_SEC   'BURAYA BU EKLENTİYİ EKLEYİP ALT PROGRAM OLARAK ÇAĞIRCAM     
   GOSUB AKTAR
   PORTB=DCD I 
   Pause 1
   PORTB=0
   NEXT   
   GOTO BASLA

aLT PROGRAM DA

HARF_SEC:
      FOR INDEX=O TO 7
      GOSUB TABLO
      DISP1[INDEX]=ALINAN
      NEXT INDEX
      FOR INDEX=8 TO 15
      GOSUB TABLO
      DISP2[INDEX]=ALINAN
      NEXT INDEX
      RETURN

     AKTAR KISMINDAKİ YERDE
    SHIFTOUT DTA,CLK,1,[DISP1,DISP2]
    PULSOUT OE,1
    RETURN

     



ete

Senden bir şeyler olurda acelen olduğu için bir şey olmuyor. Yavaş yavaş sindire sindire gitsen olacak.

Bak bakalım kullandığın dizi değişkenin 8 tane yani 0-7 arası index değeri alabilir.
Peki sen ne yapmışsın ?
      FOR INDEX=8 TO 15
      GOSUB TABLO
      DISP2[INDEX]=ALINAN
      NEXT INDEX
      RETURN
Burada dikkat edersen INDEX değişkeni 8 den 15'e kadar değer alacak. Örnek olarak birinci döngü değerine bakalım.
INDEX=8 iken TABLOYA gittin. Oradan 8. sıradaki rakamı aldın ve ALINAN=66 oldu. Buraya kadar her şey doğru. Sonra!
DISP2[INDEX]=ALINAN demişsin, INDEX değeri 8 olduğuna göre DISP2(8)=66 olmaya çalışıyor. Ama senin 8 nolu index değişkenin yokki? 0-7 arasını tanımladın. Burası yanlış. Bundan sonrakilerde yanlış Zira birsonraki döngüde INDEX=9 olacak sonra  DISP2(9)=ALINAN yapılmaya çalışılacak senin 9 nolu DISP2 değişkjenin yokki!!!!!. Bunları düşünemiyormusun. ? ezberdenmi yazıyorsun anlamadım.
Yazdığın her satırı benim yaptığın gibi tek tek irdele bakalım yaptığın şeyler doğrumu? O zaman doğrusunu bulursun sanırım. Yanlışını göremiyorsun kusurun bu.  Her şeyi doğru sanıyorsun.
Ete

haberlesme

Hocam burda başla etiketi ve altındakiler tamam aktar etiketindekide tamam sadece harf_sec etiketinde aramalıyım hatamı degil mi yani sizinde dediginiz gibi hatamı bulamıyorum yoksa ezberden yazmıyorum hocam.sadece Harf_sec etiketini düzenlemeliyim yani.

haberlesme

#34
Hocam şöyle bir düzeltme yaptım ama simulasyonda bişey göremedim buda programın diger kısımdaki işlem sırasından galiba bu kısmında dogrulugundan emin degilim ama önceki açıklamada alırken ındex+8 alman lazım demişsiniz o açıklamaya uygun yazmaya çalıştım.Ve hocam senden bişey olacak demeniz bile çok azim verici cümle oluyor ilginiz için ömür boyu minnettar olcagım.
HARF_SEC:
HARF_SEC:
    FOR INDEX=0 TO 7
    GOSUB TABLO
    DISP1[INDEX]=ALINAN
    NEXT 
    FOR INDEX=0 TO 7
    GOSUB TABLO
    DISP2[INDEX+8]=ALINAN
    NEXT INDEX
    RETURN


böyle yaptım hocam

ete

#35
Bak ne söylemiştim. benim yaptığım gibi yazdıklarını doğrulaman lazım . Yoksa yanlışını göremezsin.
Şimdi yeniden irdeleme yapıyoruz.
Birinci okuma gurubun doğru yani DISP1 değişkenlerini doğru okuyup yerine yerleştiriyorsun.
Yanlış olan DISP2 değişkenlerini yerleştirme işin. En son yazdığına bakıyoruz. ve irdeliyoruz.

    FOR INDEX=0 TO 7
    GOSUB TABLO
    DISP2[INDEX+8]=ALINAN
    NEXT INDEX
    RETURN

INDEX=0  ile başladın. GOSUB TABLO ile TABLOya Gittin. Orada, INDEX değerine göre sırası denk gelen sayıyı alıp ALINAN değişkenine yerleştireceksin. Peki index ne olmalıdır doğru sayıyı bulman için hiç düşündünmü?
Baştan 0-7 sırasını aldın. DISP1 e yerleştirdin Sıra kimde tabiiki 8 den başlaman gerekiyor. 8-15 arasınıda DISP2 ye yerleştireceksin. Peki senin index in kaç?, tabiiki sıfır !!!!! oldumu şimdi bu . Bak yanlışımı bulamıyorum diyorsun ben kolaylıkla buluveriyorum. İredeleyince (yada test edince diyelim) nasıl görüyorsun hatanı. Neden yapmıyorsun bunu bir türlü anlamıyorum doğrusu. Zırt bir şey yazıp hemen buraya mesaj olarak koyuyorsun.
Bir şey daha yazarsan sileceğim yazdıklarını olmaz böyle şey !!!!. Doğrusunu bulana kadar uğrajacaksın. 3 gün içinde bulamaz isen Pazar günü yazarsın mesajını. Ondan önce ne yazarsan sileceğim bilmiş ol.
Demekki hatan neymiş İndex değişkenine yanlış değer veriyorsun.
Senin İndex değişkenin 8 den başlayacak ama değişkenin sıralama değeri sıfırdan başlayacak. Çünki değişken indexin sıfır ile 7 arasında olması gerekiyor. Ama Tablo dan okunacak değerlerin 8-15 arasında. Tablodan doğru yerden okuyabilmen için INDEX isimli değişkene 8 den 15 e kadar değer vermen gerekiyor. Ama bu değeleri götürüp DISP2[INDEX] şeklinde kullanırsan bu seferde DISP2 nin parametreleri yanlış olacak.
Yapılacakişi bir kez daha tekrarlıyorum.
Tablodan okurken index değişkenin 8-15 arası değer alacak oradan okuduğun ve ALINAN isimli değişkene aktardığın rakamı DISP2[....] değişkenine aktarırken köşeli parantezler içindeki değişken numaralarıda 0-7 arasında olacak.
İyice anlaman için INDEX=8 ike DISP2[0]  , INDEX=9 iken DISP2[1]  INDEX=10 iken DISP[2] .... INDEX=15 iken DISP2[7] olması gerekir ki her kes yerli yerine doğru yerleşsin.
Bak şimdi hatalarına neler yapmışsın. Düşünmeden incelemeden mantığını çalıştırmadan.!!!!

Bu son mesajım bu gün. Bir daha açıklamayacağım. Yapıyorsan yaparsın yapamıyorsan bırakırsın bu işi .

Ete


haberlesme

8*16 satır taramalı da Y ve W harflerini gösteren program.

ete

#37
Sonunda Haberleşme işi çözebildi. Çözebildi diyorum çünki okadar fazla açıklamada bulundum ve yol gösterdimki buna rağmen doğru çözümü bulmakta epeyce zorlandı. Tabiiki alışkanlıkları son derece kötü. Birazcık sıkışınca hemen yardım arıyor. Ben biraz kafa yorayımda düşüneyim demiyor. Ama ambargoyu koyunca iş başa düştü ve sonunda bir şeyler yapmaya başladı. Şu anda 3 matrix displayde adını yazdırabiliyor. Aslında ne kadar kolay bu iş. Bilene tabiiki. Bilmeyene de yol gösterince kolay olması gerekirken o biraz zorlandı. Her neyse bu onun için büyük başarı elbette.

Bende son noktayı koyayım istedim. İlişikte verdiğim program kayan yazıda 4 yöne yani yukarı, aşağı, sola ve sağa yazı kaydırması yapmaktadır. Kayan yazılarla ilgilenenlerin bu programı örnek alarak kendi projelerini geliştirmeleri mümkündür.
Karakter tablosundaki pek çok karekteri hazır olarak diğer programlardan aldım ancak bunlar bizim programa uygun değiller. O yüzden kafanız karışmasın. Bu program 8x8 matrix kullandığı için en doğrusu  harfleri ikişer dot kullanarak yaratmak. Bir gönüllü arıyorum bunu yapacak. Gerçi programlar var bunu yapacak ama makinamda kurulu bir şey yok.

Ete

haberlesme

Evet hocam sonun anlayabildim aslında %99 unu sizin yazıdıgınız programdan sonra yaptıgınız açıklamaya bakarak matrix projesini daha dikkatli baksaydım çoktan çözmüştüm bunu için ayrıca özür dilerim.Hocam karakter oluşturma işine gelince bunun için ben gönüllü olabilirim bende Lcd Karaktermatik diye karakter oluşturabildigim bir dosya var ama sutun tarama için tasarlanmış satıra uygun olması için yan bir şekilde oluşturmam gerekiyor buda dengeyi bozuyo biraz satır taramaya uygun veya ben var dediginiz programa ulaşabilme şansım varsa hemen bu işe koyulmak isterim.

ete

Bende bir şey olmadığını söyledim zaten. Bu nedenle gönüllü arıyorum demiştim.
Bir ara görmüştüm bir program ama adını şimdi hatırlamıyorum. 16x16 matrix karekter bile oluşturup datalarını verebiliyor idi. Adını bilen var ise buraya yazarsa sevinirim.
Oluşturulması gereken karekterler çif sıra dot olarak tasarlanacak. Örnek vermek gerekir ise Yapmış olduğun A harfinin içinde yer alan bir A harfi daha olacak gibi düşün.

Ete

haberlesme

Hocam elimde böyle bir program var ekte veriyorum eger ordaki oluşturulanlar işinize yarıyosa tüm harflerin datalarını ben oluşturabilirim.

ete

Aradığım program buna benzer ama benim gördüğümde matrix si sen seçiyordun. Mesela 8x8 seçitiğin zaman karekter ona göre oluşturuluyor idi . Bu yalnızca 16x16 çalışıyor. Bana 8x8 , 16x16 , 32x16 vey 32x32 matrixler için karekter kodları lazım olacak.

Ete

haberlesme

Hocam dediginiz programı araştırıp bulmaya çalışacağım en kısa zamanda geri dönüş yaparım.Sonrası ise verdiginiz örnek programı satır satır harf harf inceleyip anlamak olacak.

haberlesme

Hocam ne kadar site gezdiysemde birtürlü dediginiz programı bulamadım forumda bilen arkadaşlar varsa program oldugu sürece görevi üstlenmeye hazırım.Şuan için elimde programlar ile  8*8 8*16 16*8 16*16 olarak kod hazırlayabilirim hocam.

muratu

Acaba şu program mı istediğiniz ? programı yapan arkadaşımız truvadc idi yanlış hatırlamıyorsam ellerine sağlık.

Powered by EzPortal