avatar_ete

Kayan Yazı Öğreniyoruz

Başlatan ete, 23 Ocak 2012, 10:00:26

ete

Bu başlık altında Kayan Yazı konusunu öğrenmeye çalışacağız. Diğer mesajları buraya taşıyacağım.
Diğer konu Meyer arkadaşımızın açtığı başlık olup orada eskisi gibi devam edecektir.

Ete

Mucit23

Hocam kayan yazı ile ilgili programları paylaşıp beraber hatalarımız bu başlık altında görebilirmiyiz.
Ben dün akşam uğraştığım kayan yazı devresini 16 sütüna çıkardım. Zaten yaparsam tekrar 8 sütün olarak yapıcam. Simülasyonda yazılar takip edilemediği için 16 sütün olarak yaptım. Anlamadığım bazı noktalar var. Bir yerde iş önceliği atlanıyor. Çünkü simülasyonu hızlandırınca yazılar birbirine giriyor. Bir yerde işlem sırasının atlandığını düşünüyorum.
16 sütün için 74154 kullandım.  Kendisi negatif tarama yaptığı için işleri kolaylaştırıyor.
Yaptığım devre şeması bu şekilde hocam .

image upload
Yazılımda yine bu şekilde

DEFINE OSC 4
@ DEVICE pic16F876
@ DEVICE pic16F876, WDT_ON
@ DEVICE pic16F876, PWRT_ON
@ DEVICE pic16F876, PROTECT_OFF
@ DEVICE pic16F876, XT_OSC

ADCON1=7
;___________________________PROGRAMDA KULLANILAN DEĞİŞKEN TANIMLAMALARI________________
                                                                                       ;
SUTUN        VAR BYTE[15]                                                               ;
VERI         VAR BYTE
YRDPORT      VAR BYTE
BUFFER       VAR BYTE
GONDER       VAR BYTE                                                                  ;
KARAKTER     VAR BYTE                                                                   ;
SAYICI       VAR BYTE                                                                   ;
SIRA_NO      VAR BYTE                                                                   ;
SUTUN_SAYISI VAR BYTE                                                                   ;
SUTUN_SAYAC  VAR BYTE                                                                 ;
OFSET        VAR BYTE                                                                   ;
LINE         VAR BYTE
X            VAR BYTE                                                                ;
J            var byte                                                                   ;
I            var byte
s1           var byte
s2           var byte
s3           var byte

SYMBOL ENBLE=PORTC.4


A VAR BYTE                                                   ;
       '"*****************************************************************************************************************************"
;DATA @0,"ETE PICMAN KAYAN YAZI PROGRAMI DENEME YAZISIDIR. TOPLAM KAREKTER ADEDI 127 ADET OLABILIR. MATRIKS SAYISI ARTIRILABILMEKTEDIR",5

DATA @0,"KAYAN YAZI DEVRESiDiR YAZILIM FERHAT YOL",5
;______________________________________________________________________________________;

;______________TIMER INTERRUPT IÇİN OPTION VE INTCON REGISTERLERI KURULUYOR____________
                                                                                       ;
'           OPTION_REG = $15 ;Option registeri kur                                                          ;
'           INTCON = $a0     ;TMR0 interrupt aktif                                                          ;
'           ON INTERRUPT GOTO TMR_INT                                                  ;
;______________________________________________________________________________________;

;_________________________PORT AYAR VE DEĞİŞKEN İLK DEĞER ATAMALARI____________________                     
  TRISA=0              ;porta çıkış olarak ayarlanıyor
  TRISB=0              ;portb çıkış olarak ayarlanıyor
  TRISC=0
  PORTC=0
  PORTB=0              ;portb yi sıfırla
  PORTA=0              ;porta yı sıfırla
  J=0                  ;j değişkenini sıfırla
  I=0                  ;ı değişkenini sıfırla
  SUTUN_SAYISI=0       ; sutun sayısı değişkenini sıfırla       
  SUTUN_SAYAC=0        ;sutun sayac değişkenini sıfırla
  ENBLE=1
MAIN:                    ;program başlangıcı
    GOSUB SUTUN_TEMIZLE  ;sutun değişkenlerini temizleme alt programına git
BASLA:                   ;ana döngü etiketi             
    GOSUB TARA           ;sutun tarama alt programına git
    gosub VERI_GOSTER
GOTO BASLA              ;tarama işleminin sürekliliği için başla etiketine git

;_______________________SUTUN TEMİZLEME ALT NPROGRAMI___________________________
SUTUN_TEMIZLE:
  FOR I = 0 TO 15        ;8 sutun için döngü
    SUTUN[I]=0           ;her döngüde i degisken degerine göre bir sutun temizlenir
  NEXT I                 ; döngü başına git
  RETURN                 ;sutun temizleme alt programından çık
;_______________________________________________________________________________

;_________________________SUTUN TARAMA ALT PROGRAMI_____________________________
TARA:
ENBLE=0   
  FOR I = 0 TO 15       ;sutun taraması için döngü
     PORTB=SUTUN[I]
     PORTC=PORTC+1
     PAUSE 5
   NEXT I
   ENBLE=1                 ;döngü başına git
   PORTC=0
   PORTB=0                ;PORTB yi sıfırla
   I=0                    ;i degişkenini sıfırla
RETURN

;_______________________________________________________________________________

;_______________________________TMR0 INTERRUPT ALT PROGRAMI_____________________
'DISABLE                 ;bütün kesmeleri geçersiz yap
' TMR_INT:
'  SAYICI=SAYICI+1       ;sayıcı değişkenini bir artır
'  IF SAYICI <= 11 THEN  INT_CIK  ;sayıcı 30 mu? değilse ınt_cık etiketine git
'  SAYICI=0              ; evet sayıcıyı sıfırla
'  GOSUB VERI_GOSTER     ;veri göster alt programına git
'  INT_CIK:              ; sayıcı 30 a eşit değilse program buraya yönlenir
'  INTCON.2=0            ;
'  RESUME                ;timer interrupt alt programından çık
'ENABLE
'return
;_______________________________________________________________________________
   
VERI_GOSTER:;___________________________________________________________________
  GOSUB KARAKTER_AL                           ;TABLODAN KARAKTER AL                                                                         ;
  GOSUB SENTEZ                                ;SENTEZ ALT PROGRAMINA GIT                      ;
  IF ( SUTUN_SAYAC = SUTUN_SAYISI ) THEN      ;sutun sayac , sutun sayısı na eşitmi
      GOSUB KAYDIR                            ; evet , kaydır alt programına git                           ;
      SUTUN[0]=0                              ;sutun0 ı sıfırla                                                  ;                                                                              ;
      SUTUN_SAYAC=0                           ;sutun sayac değişkenini sıfırla                                                 ;
      LINE=0                                                                                     ;
      J=J+1                                                                                      ;
   ENDIF
'  pause 200                                                                                      ;
RETURN;______________________________________________________________________________________;     
 
KARAKTER_AL:;_______________J DEGİSKEN DEGERİNE GÖRE KARAKTER ALINIYOR________________________
    READ J,KARAKTER                                                        ;
RETURN;______________________________________________________________________________________; 

SENTEZ:;_________________________________ALINAN KARAKTER BİLGİSİ KARŞILAŞTIRILIYOR____________
  IF KARAKTER=5 THEN SON_KARAKTER
 
  SELECT CASE KARAKTER
    CASE 65: SIRA_NO=4     ;A
    CASE 66: SIRA_NO=9     ;B
    CASE 67: SIRA_NO=14    ;C
    CASE 68: SIRA_NO=19    ;D
    CASE 69: SIRA_NO=24    ;E
    CASE 70: SIRA_NO=29    ;F
    CASE 71: SIRA_NO=34    ;G
    CASE 72: SIRA_NO=39    ;H
    CASE 73: SIRA_NO=42    ;I
    CASE 74: SIRA_NO=47    ;J
    CASE 75: SIRA_NO=52    ;K
    CASE 76: SIRA_NO=57    ;L
    CASE 77: SIRA_NO=62    ;M
    CASE 78: SIRA_NO=67    ;N
    CASE 79: SIRA_NO=72    ;O
    CASE 80: SIRA_NO=77    ;P
    CASE 81: SIRA_NO=82    ;Q
    CASE 82: SIRA_NO=87    ;R
    CASE 83: SIRA_NO=92    ;S 
    CASE 84: SIRA_NO=97    ;T 
    CASE 85: SIRA_NO=102   ;U 
    CASE 86: SIRA_NO=107   ;V
    CASE 87: SIRA_NO=112   ;W
    CASE 88: SIRA_NO=117   ;X
    CASE 89: SIRA_NO=122   ;Y
    CASE 90: SIRA_NO=127   ;Z
    CASE 32: SIRA_NO=132 ;BOSLUK   
    CASE 48: SIRA_NO=137 ;0 
    CASE 49: SIRA_NO=140 ;1
    CASE 50: SIRA_NO=145 ;2
    CASE 51: SIRA_NO=150 ;3
    CASE 52: SIRA_NO=155 ;4
    CASE 53: SIRA_NO=160 ;5
    CASE 54: SIRA_NO=165 ;6 
    CASE 55: SIRA_NO=170 ;7
    CASE 56: SIRA_NO=175 ;8 
    CASE 57: SIRA_NO=180 ;9
    CASE 46: SIRA_NO=185 ;.
    CASE 199:SIRA_NO=190 ;Ç
    case 208:sira_no=195 ;Ğ
    case 221:sira_no=198 ;İ
    case 214:sira_no=203 ;Ö
    case 220:sira_no=208 ;Ü
    case 222:sira_no=213 ;Ş

  end select   
  IF ((KARAKTER=49) OR (KARAKTER=73) OR (karakter=221)) THEN
    SUTUN_SAYISI=3
   ELSE
    SUTUN_SAYISI=5
  ENDIF
  SUTUN_SAYAC=SUTUN_SAYAC+1     
  GOSUB ORT_ISLM
RETURN

SON_KARAKTER:
     VERI=0 : SUTUN_SAYISI=0 :  LINE=0 : SUTUN_SAYAC=0 : KARAKTER=0 : SUTUN_SAYISI=0 : J=0
RETURN
     ;__________________________________SENTEZ ALT PROGRAM SONU_______________________ 
 
ORT_ISLM:
  OFSET= SIRA_NO-LINE
  GOSUB TABLO
  VERI=VERI REV 8
  VERI=VERI>>1
  GOSUB KAYDIR
  LINE=LINE+1
RETURN

KAYDIR:
;s1=7:s2=6 
;         for s3= 0 to 6         ;7 DEFA DÖNGÜ KURULDU.
;          sutun[s1] = sutun[s2]
;          s1=s1-1 : s2=s2-1
;         next
         sutun[15]=SUTUN[14]
         sutun[14]=SUTUN[13]
         SUTUN[13]=SUTUN[12]
         sutun[12]=SUTUN[11]
         SUTUN[11]=SUTUN[10]
         sutun[10]=SUTUN[9]
         SUTUN[9]=SUTUN[8]
         sutun[8]=SUTUN[7]
         SUTUN[7]=SUTUN[6]
         SUTUN[6]=SUTUN[5]
         SUTUN[5]=SUTUN[4]
         SUTUN[4]=SUTUN[3]
         SUTUN[3]=SUTUN[2]
         SUTUN[2]=SUTUN[1]
         SUTUN[1]=SUTUN[0]
         sutun[0]=veri
         PAUSEUS 1000 
RETURN

;SUTUN7=SUTUN6
;SUTUN6=SUTUN5
;SUTUN5=SUTUN4
;SUTUN4=SUTUN3
;SUTUN3=SUTUN2
;SUTUN2=SUTUN1
;SUTUN1=SUTUN0
;SUTUN0=veri
TABLO:
   LOOKUP OFSET,[_
   $3F,$48,$48,$48,$3F,_      ;A   0-4
   $36,$49,$49,$49,$7F,_      ;B   4-9
   $22,$41,$41,$41,$3E,_      ;C   9-14
   $3E,$41,$41,$41,$7F,_      ;D   14-19
   $41,$49,$49,$49,$7F,_      ;E   19-24
   $40,$48,$48,$48,$7F,_      ;F   24-29
   $2E,$49,$49,$41,$3E,_      ;G   29-34
   $7F,$08,$08,$08,$7F,_      ;H   34-39
   $41,$7F,$41,_              ;I   39-42
   $40,$7E,$41,$01,$02,_      ;J   42-47
   $41,$22,$14,$08,$7F,_      ;K   47-52
   $01,$01,$01,$01,$7F,_      ;L   52-57
   $7F,$20,$10,$20,$7F,_      ;M   57-62
   $7F,$04,$08,$10,$7F,_      ;N   62-67
   $3E,$41,$41,$41,$3E,_      ;O   67-72
   $30,$48,$48,$48,$7F,_      ;P   72-77
   $3D,$42,$45,$41,$3E,_      ;Q   77-82
   $31,$4A,$4C,$48,$7F,_      ;R   82-87
   $26,$49,$49,$49,$32,_      ;S   87-92
   $40,$40,$7F,$40,$40,_      ;T   92-97
   $7E,$01,$01,$01,$7E,_      ;U   97-102
   $7C,$02,$01,$02,$7C,_      ;V   102-107
   $7E,$01,$0E,$01,$7E,_      ;W   107-112
   $63,$14,$08,$14,$63,_      ;X   112-117
   $70,$08,$07,$08,$70,_      ;Y   117-122
   $61,$51,$49,$45,$43,_      ;Z   122-127
   $00,$00,$00,$00,$00,_      ;bosluk   127-132
   $3E,$51,$49,$45,$3E,_      ;0   132-137
   $01,$7F,$21,_              ;1   137-140
   $31,$49,$45,$43,$21,_      ;2   140-145   
   $46,$69,$51,$41,$42,_      ;3   145-150
   $04,$7F,$24,$14,$0C,_      ;4   150-155
   $4E,$51,$51,$51,$72,_      ;5   155-160
   $06,$49,$49,$29,$1E,_      ;6   160-165
   $60,$50,$48,$47,$40,_      ;7   165-170
   $36,$49,$49,$49,$36,_      ;8   170-175
   $3C,$4A,$49,$49,$30,_      ;9   175-180
   $00,$00,$00,$00,$01,_      ;.   
   $24,$42,$43,$42,$3c,_      ;Ç   185-190
   $16,$65,$61,$61,$1e,_      ;Ğ   190-195
   $21,$7f,$21,_              ;İ   195-198
   $1e,$61,$21,$61,$1e,_      ;Ö   198-203
   $1e,$41,$01,$41,$1e,_      ;Ü   203-208
   $26,$49,$4b,$49,$32],VERI  ;Ş   208-213
RETURN
   
END   
   


YAzılımı iyleştirmek istiyorum.
Dosyaları buraya ekledim hocam.
http://hotfile.com/dl/143478598/7d7315e/8x8kayan_yaz.rar.html

Bu arada 16 Sütün için 74154 kullandım. Bu enteğrenin negatif çıkış akımı 16ma yazıyor datasheedinde. Yeterli gelirmi yoksa Tpic benzeri bir shift registermi kullanayım.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ELZEMEFE

Mucit23 hocam aslında  gerçi ete  hocam da belirtmiş ama  kayan yazı  konusunda biizm daha farklı bir girişimimiz  olmuştu
zaten sizde  orda yazmışsınız işi   ardaşlaradn biri biri anlatsın ve bilmeyenler yada işi kavrayamayan (benim gibi) arkadaşlarda adım adım   giderek  öğrensin diyorum ben ..

ve tavsiyem  simülasyonda74595 kullanıp gerçekte tpıc595 kullanmak.. şimdilik

Mucit23

Ben aslında epeyce kavradım. Şimdi Tek display için bir deneme yapıcam. Bu yazıların iç içe  girme olayınıda çözdüm gibi. Yani tek display artık simülasyonda daha iyi görünüyor. Sorun ise işlem önceliğiymiş.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

#4
Bugün tüm öğlenden sonra dışarılarda idim. Mesajlara bakamadım.
Bu arada sende işi ilerletmişsin. Cevap yazmama gerek kalmadı.
Aslında biraz yol aldıktan sonra bakmam daha doğru olacaktı zaten.

Ete

Mucit23

hocam biz burada yazılım teknikleri üzerine konuşalım.

Benimde yapılacaklar Listesinde 64X32 bicolor matrix display board projem var. Projeyi meteorolojik monitör olarak tasarlamayı düşünüyorum.  Bu Boyutlarda Bi Grafik ekran için sürüş teknikleri nasıl olabilir.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

BAHAR

Merhaba Mucit23, bence işin başındayken 74hc154 değil de, 74hc595 ile projelerini gerçekleştirsen daha iyi olmaz mı? Çünkü baskı devre zorlaşıyor ve gerçekte tasarımını yaparken ek malzemelerde kullanacaksın ya, zorluk yaşamayasın. tabi sen bilirsin ama sürüm kolaylığı için 74hc154'ün zıttıda var ya o da iş görür sanırım.

Mucit23

Deneme amaçlı 74154 ü kullandım. Onunlada güzel çalışıyor. Zaten elimde yok simülasyonda gözlem yapıyorum. Gerçekte devreyi kurup tpic ile deneyeceğim.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ELZEMEFE

Hocam
bende de bi kayan yazı merağı var
ama ben başlığı görünce biri anlatacak bizde  üzerinde  uğraşacağız sandım ..
Siz sanırım  olayı çözmüşsünüz birde ben  çözsem .. sizin yaptğınız satır taramalı olanmı ... _?
595 kullanınca kodta baya bi değişme olması gerekmiyomu ...




Mucit23

#9
Ete hocanın yazılımlaru sütün taramalı sütün kaydırmalı. Veri satırdan veriliyor. 74595 leri sütünları taramak için kullanacağım. Yazılımda pek fazla değişiklik yapılmıyacak. Sadece tarama bölümünde ufak çaplı bir iki değişiklik yapılması gerekiyor.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

#10
Elzemefe,

Bu iş alfabe öğretilir gibi baştan aşağıya anlatılamaz.  İşin can alıcı noktaları var. Bunları DERS-13 de anlattım zaten.
Normal şartlarda biraz programlama bilen ve birazda elektronik elemanları tanıyan birisi orada yazılanları  okuduktan sonra bir kaç da yazılmış programı takip ettikten sonra kendisi bir şeyler yapacak hale gelebilir. Bunun ötesinde yinede anlamadığı yerler olabilir. Onlarıda ayrıca sorar ve işi öğrenir. Bunu yapacak durumda değil isen bir şeylerin eksik demektir. Bu eksiklik programlama bilgisi - algoritma oluşturma bilgisi veya devre tasarlama bilgisi olabilir. O zaman eksikliğini kendin belirleyip açığını kapama yönünde çalışmalısın.
Kayan yazı işi çok fazla konsantrasyon gerektiriyor. Oda yetmiyor satranç oyunu gibi kafanda olayları canlandırman ve bir kaç  adım ötesi veya gerisi ni görebilmen gerekiyor. Buda zamanla çalışarak kazanılan bir yetenek.
Ben bunları zaten biliyorum diyorsan o zaman kayan yazı için hazırsın demektir. Gerisi zaman ayırıp devreni oluşturmak ve üzerinde çalışmaktan öteye geçmez. Kolları şimdiden sıva bakalım.

Ete

edit: Hem satır hem sütün taramalı programlar yazdım. Ama programlarım zaman içinde eridi gitti. Bazılarını hiç bulamıyorum.

Mucit23

Tek matrixle devreyi çalıştırdım fakat bazı problemler vardı. Bunlardan en önemlisi yazı ve tarama hızının birbirine bağımlı olmasıydı. Yazı hızını yavaşlatınca display taraması sekteye uğradığı için görüntüde kıpraşmalar oluşuyordu. Yazı hızı arttrılınca tüm yazılar iç içe giriyor yazıyı okumak imkansızlaşıyordu. Bunu aşmak için kesmeyi devreye soktum.  Kesme ile yaklaşık 240 Hz frekansda displayleri taradım. her bir sütün yaklaşık 2 ms ekranda beliriyor. İlk başta 3 ms olarak ayarlamıştım ama çok dikkatli bakınca titremeyi görebiliyor insan. 2ms ekranda belirmesi ve kaybolması en  en ideali
Arka planda kesme displayleri tarayıp sütün bilgisini portb ye veriyor. Ana programdada diğer veri seçip alma gibi işlemler yürütülüyor. Ana programdaki delay ile yazı hızı ayarlanabilir.
Kısacık bir video parçası.
http://www.youtube.com/watch?v=akJAJD7jbA0&feature=youtu.be
Sağdaki displayi daha devreye sokmadım akşam onuda devreye alıp 8x16 deneyeceğim.

Güzel çalışıyor bu program
DEFINE OSC 4
@ DEVICE pic16F876
@ DEVICE pic16F876, WDT_ON
@ DEVICE pic16F876, PWRT_ON
@ DEVICE pic16F876, PROTECT_OFF
@ DEVICE pic16F876, XT_OSC

;_______________________________SETUP___________________________________________
  TRISA=0              ;Tüm portlar çıkış
  TRISB=0       
  TRISC=0
  PORTC=0
  PORTB=0         
  PORTA=0
ADCON1 = 7
ON INTERRUPT GoTo KESME   
OPTION_REG=%00000011  ;Bölme oranı 1/16
INTCON=%00100000 
symbol GIEH = INTCON.7
TMR0=131              ;3ms kesme için tmr0 ön değeri
;____________________PROGRAMDA KULLANILAN DEĞİŞKEN TANIMLAMALARI________________
   Z            VAR WORD                                                                                       
   SUTUN        VAR BYTE[7]                                                             
   VERI         VAR BYTE
   SYC          VAR BYTE
   YRDPORT      VAR BYTE
   GONDER       VAR BYTE                                                                 
   KARAKTER     VAR BYTE                                                                 
   SAYICI       VAR BYTE                                                                 
   SIRA_NO      VAR BYTE                                                                   
   SUTUN_SAYISI VAR BYTE                                                                 
   SUTUN_SAYAC  VAR BYTE                                                                 
   OFSET        VAR BYTE                                                                 
   LINE         VAR BYTE
   X            VAR BYTE                                                           
   J            var byte                                                           
   I            var byte
   s1           var byte
   s2           var byte
   s3           var byte                                       
DATA @0,"8X8 KAYAN YAZI DEVRESİDİR. WWW.ETEPİC.COM MUCİT23 8",5

;_________________________PORT AYAR VE DEĞİŞKEN İLK DEĞER ATAMALARI____________________                                   ;porta yı sıfırla
  J=0           
  I=0         
  SUTUN_SAYISI=0             
  SUTUN_SAYAC=0     
  X=128
  GIEH=1               ;Tüm kesmeler açıldı
MAIN:                 
    GOSUB SUTUN_TEMIZLE
BASLA:                           
    gosub VERI_GOSTER
    FOR Z=0 TO 1500:PAUSEUS 1:NEXT ;bu gecikme yazı hızını belirler.
GOTO BASLA             
;_______________________SUTUN TEMİZLEME ALT NPROGRAMI___________________________
SUTUN_TEMIZLE:
  FOR I = 0 TO 7         ;8 sutun için döngü
    SUTUN[I]=0           ;her döngüde i degisken degerine göre bir sutun temizlenir
  NEXT I                 ; döngü başına git
  RETURN                 ;sutun temizleme alt programından çık
;_________________________SUTUN TARAMA ALT PROGRAMI_____________________________

DISABLE
KESME:
  SYC=SYC+1
  IF SYC=>8 THEN
    X=128:SYC=0
  ENDIF
  PORTC=255-X
  PORTB=SUTUN[SYC]
  X=X/2
INTCON.2=0        ;İnterrupt flağı temizlendi
TMR0=131          ;TMR0 ön değeri yüklendi
RESUME
ENABLE
__________________________________________________________________________
   
VERI_GOSTER:;___________________________________________________________________
  GOSUB KARAKTER_AL                           ;TABLODAN KARAKTER AL                                                                         ;
  GOSUB SENTEZ                                ;SENTEZ ALT PROGRAMINA GIT                     
  IF ( SUTUN_SAYAC = SUTUN_SAYISI ) THEN      ;sutun sayac , sutun sayısı na eşitmi
      GOSUB KAYDIR                            ; evet , kaydır alt programına git                         
      SUTUN[0]=0                              ;sutun0 ı sıfırla                                                  ;                                                                              ;
      SUTUN_SAYAC=0                           ;sutun sayac değişkenini sıfırla                                                 ;
      LINE=0                                                                                     
      J=J+1                                                                                     
   ENDIF                                                                               
RETURN;______________________________________________________________________________________     
 
KARAKTER_AL:;_______________J DEGİSKEN DEGERİNE GÖRE KARAKTER ALINIYOR________________________
    READ J,KARAKTER                                                       
RETURN;______________________________________________________________________________________ 

SENTEZ:;_________________________________ALINAN KARAKTER BİLGİSİ KARŞILAŞTIRILIYOR____________
  IF KARAKTER=5 THEN SON_KARAKTER
 
  SELECT CASE KARAKTER
    CASE 65: SIRA_NO=4     ;A
    CASE 66: SIRA_NO=9     ;B
    CASE 67: SIRA_NO=14    ;C
    CASE 68: SIRA_NO=19    ;D
    CASE 69: SIRA_NO=24    ;E
    CASE 70: SIRA_NO=29    ;F
    CASE 71: SIRA_NO=34    ;G
    CASE 72: SIRA_NO=39    ;H
    CASE 73: SIRA_NO=42    ;I
    CASE 74: SIRA_NO=47    ;J
    CASE 75: SIRA_NO=52    ;K
    CASE 76: SIRA_NO=57    ;L
    CASE 77: SIRA_NO=62    ;M
    CASE 78: SIRA_NO=67    ;N
    CASE 79: SIRA_NO=72    ;O
    CASE 80: SIRA_NO=77    ;P
    CASE 81: SIRA_NO=82    ;Q
    CASE 82: SIRA_NO=87    ;R
    CASE 83: SIRA_NO=92    ;S 
    CASE 84: SIRA_NO=97    ;T 
    CASE 85: SIRA_NO=102   ;U 
    CASE 86: SIRA_NO=107   ;V
    CASE 87: SIRA_NO=112   ;W
    CASE 88: SIRA_NO=117   ;X
    CASE 89: SIRA_NO=122   ;Y
    CASE 90: SIRA_NO=127   ;Z
    CASE 32: SIRA_NO=132 ;BOSLUK   
    CASE 48: SIRA_NO=137 ;0 
    CASE 49: SIRA_NO=140 ;1
    CASE 50: SIRA_NO=145 ;2
    CASE 51: SIRA_NO=150 ;3
    CASE 52: SIRA_NO=155 ;4
    CASE 53: SIRA_NO=160 ;5
    CASE 54: SIRA_NO=165 ;6 
    CASE 55: SIRA_NO=170 ;7
    CASE 56: SIRA_NO=175 ;8 
    CASE 57: SIRA_NO=180 ;9
    CASE 46: SIRA_NO=185 ;.
    CASE 199:SIRA_NO=190 ;Ç
    case 208:sira_no=195 ;Ğ
    case 221:sira_no=198 ;İ
    case 214:sira_no=203 ;Ö
    case 220:sira_no=208 ;Ü
    case 222:sira_no=213 ;Ş

  end select   
  IF ((KARAKTER=49) OR (KARAKTER=73) OR (karakter=221)) THEN
    SUTUN_SAYISI=3
   ELSE
    SUTUN_SAYISI=5
  ENDIF
  SUTUN_SAYAC=SUTUN_SAYAC+1     
  GOSUB ORT_ISLM
RETURN

SON_KARAKTER:
     VERI=0 : SUTUN_SAYISI=0 :  LINE=0 : SUTUN_SAYAC=0 : KARAKTER=0 : SUTUN_SAYISI=0 : J=0
RETURN
     ;__________________________________SENTEZ ALT PROGRAM SONU_______________________ 
 
ORT_ISLM:
  OFSET= SIRA_NO-LINE
  GOSUB TABLO
  VERI=VERI REV 8
  VERI=VERI>>1
  GOSUB KAYDIR
  LINE=LINE+1
RETURN

KAYDIR:
;s1=7:s2=6 
;         for s3= 0 to 6         ;7 DEFA DÖNGÜ KURULDU.
;          sutun[s1] = sutun[s2]
;          s1=s1-1 : s2=s2-1
;         next
;         sutun[15]=SUTUN[14]
;         sutun[14]=SUTUN[13]
;         SUTUN[13]=SUTUN[12]
;         sutun[12]=SUTUN[11]
;         SUTUN[11]=SUTUN[10]
;         sutun[10]=SUTUN[9]
;         SUTUN[9]=SUTUN[8]
;         sutun[8]=SUTUN[7]
         SUTUN[7]=SUTUN[6]
         SUTUN[6]=SUTUN[5]
         SUTUN[5]=SUTUN[4]
         SUTUN[4]=SUTUN[3]
         SUTUN[3]=SUTUN[2]
         SUTUN[2]=SUTUN[1]
         SUTUN[1]=SUTUN[0]
         sutun[0]=veri
         PAUSEUS 1000 
RETURN

;SUTUN7=SUTUN6
;SUTUN6=SUTUN5
;SUTUN5=SUTUN4
;SUTUN4=SUTUN3
;SUTUN3=SUTUN2
;SUTUN2=SUTUN1
;SUTUN1=SUTUN0
;SUTUN0=veri
TABLO:
   LOOKUP OFSET,[_
   $3F,$48,$48,$48,$3F,_      ;A   0-4
   $36,$49,$49,$49,$7F,_      ;B   4-9
   $22,$41,$41,$41,$3E,_      ;C   9-14
   $3E,$41,$41,$41,$7F,_      ;D   14-19
   $41,$49,$49,$49,$7F,_      ;E   19-24
   $40,$48,$48,$48,$7F,_      ;F   24-29
   $2E,$49,$49,$41,$3E,_      ;G   29-34
   $7F,$08,$08,$08,$7F,_      ;H   34-39
   $41,$7F,$41,_              ;I   39-42
   $40,$7E,$41,$01,$02,_      ;J   42-47
   $41,$22,$14,$08,$7F,_      ;K   47-52
   $01,$01,$01,$01,$7F,_      ;L   52-57
   $7F,$20,$10,$20,$7F,_      ;M   57-62
   $7F,$04,$08,$10,$7F,_      ;N   62-67
   $3E,$41,$41,$41,$3E,_      ;O   67-72
   $30,$48,$48,$48,$7F,_      ;P   72-77
   $3D,$42,$45,$41,$3E,_      ;Q   77-82
   $31,$4A,$4C,$48,$7F,_      ;R   82-87
   $26,$49,$49,$49,$32,_      ;S   87-92
   $40,$40,$7F,$40,$40,_      ;T   92-97
   $7E,$01,$01,$01,$7E,_      ;U   97-102
   $7C,$02,$01,$02,$7C,_      ;V   102-107
   $7E,$01,$0E,$01,$7E,_      ;W   107-112
   $63,$14,$08,$14,$63,_      ;X   112-117
   $70,$08,$07,$08,$70,_      ;Y   117-122
   $61,$51,$49,$45,$43,_      ;Z   122-127
   $00,$00,$00,$00,$00,_      ;bosluk   127-132
   $3E,$51,$49,$45,$3E,_      ;0   132-137
   $01,$7F,$21,_              ;1   137-140
   $31,$49,$45,$43,$21,_      ;2   140-145   
   $46,$69,$51,$41,$42,_      ;3   145-150
   $04,$7F,$24,$14,$0C,_      ;4   150-155
   $4E,$51,$51,$51,$72,_      ;5   155-160
   $06,$49,$49,$29,$1E,_      ;6   160-165
   $60,$50,$48,$47,$40,_      ;7   165-170
   $36,$49,$49,$49,$36,_      ;8   170-175
   $3C,$4A,$49,$49,$30,_      ;9   175-180
   $00,$00,$00,$00,$01,_      ;.   
   $24,$42,$43,$42,$3c,_      ;Ç   185-190
   $16,$65,$61,$61,$1e,_      ;Ğ   190-195
   $21,$7f,$21,_              ;İ   195-198
   $1e,$61,$21,$61,$1e,_      ;Ö   198-203
   $1e,$41,$01,$41,$1e,_      ;Ü   203-208
   $26,$49,$4b,$49,$32],VERI  ;Ş   208-213
RETURN
END 


Akşama tpiclerle bir deneme yapacağım ama aklıma takılan bir konu var. Tpic6B595 in çıkışlar aktif olmadı sürece open collektör durumundadır. Ben direk çıkışlar displayin sütünlarına bağlasam ledlerin yanmasında bir problem olmaz değilmi yani ayrıca sütünları pull-up yapmaya gerek varmıdır.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ELZEMEFE

Hocam zaten inceliyorum şu an hatta biraz anladım gibi .. bu gece sabahlarım sanırım  yoksa olmayacak ... bakalım nasıl olacak .. ama biraz kafama takılan yer var ama biraz daha  uğraşayım  .... adeta ders çalışıyorum kalem kağıt  görmeniz lazım yaa  ..:D

Mucit23

Ete hocam 16 sütün yapacağım fakat bir yerde takıldım. İsiste Tpic yok. Bende 74595 ile uln2803 ikilisini kullandım. Taramayı yine kesmeyle yapıyorum. Fakat bir türlü simülasyonda görüntüyü alamadım.
Ne olup bittiğini anlamak için kesme alt programında tarama işini adım adım yaptım. İşleri yavaşlatınca tam olarak anlayamadım ama normal olarak görünüyor. Fakat normal hızda çalıştırınca hiçbirşey ekranda belirmiyor.

Yeni şemayı bu şekilde kurdum.

jpeg image hosting

Yazılımda bu şekilde
DEFINE OSC 4
@ DEVICE pic16F876
@ DEVICE pic16F876, WDT_ON
@ DEVICE pic16F876, PWRT_ON
@ DEVICE pic16F876, PROTECT_OFF
@ DEVICE pic16F876, XT_OSC

;_______________________________SETUP___________________________________________
  TRISA=0              ;Tüm portlar çıkış
  TRISB=0       
  TRISC=0
  PORTC=0
  PORTB=0         
  PORTA=0
ADCON1 = 7
;DEFINE SHIFT_PAUSEUS 1000
ON INTERRUPT GoTo KESME   
OPTION_REG=%00000111  ;Bölme oranı 1/16
INTCON=%00100000 
symbol GIEH = INTCON.7
TMR0=131              ;2ms kesme için tmr0 ön değeri
SYMBOL DTA=PORTC.0
SYMBOL CLK=PORTC.1
SYMBOL KLT=PORTC.2
;____________________PROGRAMDA KULLANILAN DEĞİŞKEN TANIMLAMALARI________________
   Z            VAR WORD
   SDATA        VAR WORD                                                                                       
   SUTUN        VAR BYTE[15]                                                             
   VERI         VAR BYTE
   SYC          VAR BYTE
   YRDPORT      VAR BYTE
   GONDER       VAR BYTE                                                                 
   KARAKTER     VAR BYTE                                                                 
   SAYICI       VAR BYTE                                                                 
   SIRA_NO      VAR BYTE                                                                   
   SUTUN_SAYISI VAR BYTE                                                                 
   SUTUN_SAYAC  VAR BYTE                                                                 
   OFSET        VAR BYTE                                                                 
   LINE         VAR BYTE
   X            VAR BYTE                                                           
   J            var byte                                                           
   I            var byte
   s1           var byte
   s2           var byte
   s3           var byte                                       
DATA @0,"8X8 KAYAN YAZI DEVRESİDİR. WWW.ETEPİC.COM MUCİT23 8",5

;_________________________PORT AYAR VE DEĞİŞKEN İLK DEĞER ATAMALARI____________________                                   ;porta yı sıfırla
  J=0           
  I=0         
  SUTUN_SAYISI=0             
  SUTUN_SAYAC=0               
MAIN:                 
    GOSUB SUTUN_TEMIZLE
GIEH=1  ;Tüm kesmeler açıldı 
BASLA:                           
    gosub VERI_GOSTER
    FOR Z=0 TO 1500:PAUSEUS 1:NEXT ;bu gecikme yazı hızını belirler.
GOTO BASLA             
;_______________________SUTUN TEMİZLEME ALT NPROGRAMI___________________________
SUTUN_TEMIZLE:
  FOR I = 0 TO 15         ;8 sutun için döngü
    SUTUN[I]=0           ;her döngüde i degisken degerine göre bir sutun temizlenir
  NEXT I                 ; döngü başına git
  RETURN                 ;sutun temizleme alt programından çık
;_________________________SUTUN TARAMA ALT PROGRAMI_____________________________

DISABLE
KESME:
  SYC=SYC+1
  IF SYC=>16 THEN SYC=0
SELECT CASE SYC
CASE 0
  SHIFTOUT DTA,CLK,1,[%10000000,%00000000]
  PULSOUT KLT,1
  PORTB=SUTUN[0]
CASE 1
  SHIFTOUT DTA,CLK,1,[%01000000,%00000000]
  PULSOUT KLT,1
  PORTB=SUTUN[1]
CASE 2
  SHIFTOUT DTA,CLK,1,[%00100000,%00000000]
  PULSOUT KLT,1
  PORTB=SUTUN[2]
CASE 3
  SHIFTOUT DTA,CLK,1,[%00010000,%00000000]
  PULSOUT KLT,1
  PORTB=SUTUN[3]
CASE 4
  SHIFTOUT DTA,CLK,1,[%00001000,%00000000]
  PULSOUT KLT,1
  PORTB=SUTUN[4]
CASE 5
  SHIFTOUT DTA,CLK,1,[%00000100,%00000000]
  PULSOUT KLT,1
  PORTB=SUTUN[5]
CASE 6
  SHIFTOUT DTA,CLK,1,[%00000010,%00000000]
  PULSOUT KLT,1
  PORTB=SUTUN[6]
CASE 7
  SHIFTOUT DTA,CLK,1,[%00000001,%00000000]
  PULSOUT KLT,1
  PORTB=SUTUN[7]
CASE 8
  SHIFTOUT DTA,CLK,1,[%00000000,%10000000]
  PULSOUT KLT,1
  PORTB=SUTUN[8]
CASE 9
  SHIFTOUT DTA,CLK,1,[%00000000,%01000000]
  PULSOUT KLT,1
  PORTB=SUTUN[9]
CASE 10
  SHIFTOUT DTA,CLK,1,[%00000000,%00100000]
  PULSOUT KLT,1
  PORTB=SUTUN[10]
CASE 11
  SHIFTOUT DTA,CLK,1,[%00000000,%00010000]
  PULSOUT KLT,1
  PORTB=SUTUN[11]
CASE 12
  SHIFTOUT DTA,CLK,1,[%00000000,%00001000]
  PULSOUT KLT,1
  PORTB=SUTUN[12]
CASE 13
  SHIFTOUT DTA,CLK,1,[%00000000,%00000100]
  PULSOUT KLT,1
  PORTB=SUTUN[13]
CASE 14
  SHIFTOUT DTA,CLK,1,[%00000000,%00000010]
  PULSOUT KLT,1
  PORTB=SUTUN[14]
CASE 15
  SHIFTOUT DTA,CLK,1,[%00000000,%00000001]
  PULSOUT KLT,1
  PORTB=SUTUN[15]
END SELECT
INTCON.2=0        ;İnterrupt flağı temizlendi
TMR0=131          ;TMR0 ön değeri yüklendi
RESUME
ENABLE
__________________________________________________________________________
   
VERI_GOSTER:;___________________________________________________________________
  GOSUB KARAKTER_AL                           ;TABLODAN KARAKTER AL                                                                         ;
  GOSUB SENTEZ                                ;SENTEZ ALT PROGRAMINA GIT                     
  IF ( SUTUN_SAYAC = SUTUN_SAYISI ) THEN      ;sutun sayac , sutun sayısı na eşitmi
      GOSUB KAYDIR                            ; evet , kaydır alt programına git                         
      SUTUN[0]=0                              ;sutun0 ı sıfırla                                                  ;                                                                              ;
      SUTUN_SAYAC=0                           ;sutun sayac değişkenini sıfırla                                                 ;
      LINE=0                                                                                     
      J=J+1                                                                                     
   ENDIF                                                                               
RETURN;______________________________________________________________________________________     
 
KARAKTER_AL:;_______________J DEGİSKEN DEGERİNE GÖRE KARAKTER ALINIYOR________________________
    READ J,KARAKTER                                                       
RETURN;______________________________________________________________________________________ 

SENTEZ:;_________________________________ALINAN KARAKTER BİLGİSİ KARŞILAŞTIRILIYOR____________
  IF KARAKTER=5 THEN SON_KARAKTER
 
  SELECT CASE KARAKTER
    CASE 65: SIRA_NO=4     ;A
    CASE 66: SIRA_NO=9     ;B
    CASE 67: SIRA_NO=14    ;C
    CASE 68: SIRA_NO=19    ;D
    CASE 69: SIRA_NO=24    ;E
    CASE 70: SIRA_NO=29    ;F
    CASE 71: SIRA_NO=34    ;G
    CASE 72: SIRA_NO=39    ;H
    CASE 73: SIRA_NO=42    ;I
    CASE 74: SIRA_NO=47    ;J
    CASE 75: SIRA_NO=52    ;K
    CASE 76: SIRA_NO=57    ;L
    CASE 77: SIRA_NO=62    ;M
    CASE 78: SIRA_NO=67    ;N
    CASE 79: SIRA_NO=72    ;O
    CASE 80: SIRA_NO=77    ;P
    CASE 81: SIRA_NO=82    ;Q
    CASE 82: SIRA_NO=87    ;R
    CASE 83: SIRA_NO=92    ;S 
    CASE 84: SIRA_NO=97    ;T 
    CASE 85: SIRA_NO=102   ;U 
    CASE 86: SIRA_NO=107   ;V
    CASE 87: SIRA_NO=112   ;W
    CASE 88: SIRA_NO=117   ;X
    CASE 89: SIRA_NO=122   ;Y
    CASE 90: SIRA_NO=127   ;Z
    CASE 32: SIRA_NO=132 ;BOSLUK   
    CASE 48: SIRA_NO=137 ;0 
    CASE 49: SIRA_NO=140 ;1
    CASE 50: SIRA_NO=145 ;2
    CASE 51: SIRA_NO=150 ;3
    CASE 52: SIRA_NO=155 ;4
    CASE 53: SIRA_NO=160 ;5
    CASE 54: SIRA_NO=165 ;6 
    CASE 55: SIRA_NO=170 ;7
    CASE 56: SIRA_NO=175 ;8 
    CASE 57: SIRA_NO=180 ;9
    CASE 46: SIRA_NO=185 ;.
    CASE 199:SIRA_NO=190 ;Ç
    case 208:sira_no=195 ;Ğ
    case 221:sira_no=198 ;İ
    case 214:sira_no=203 ;Ö
    case 220:sira_no=208 ;Ü
    case 222:sira_no=213 ;Ş

  end select   
  IF ((KARAKTER=49) OR (KARAKTER=73) OR (karakter=221)) THEN
    SUTUN_SAYISI=3
   ELSE
    SUTUN_SAYISI=5
  ENDIF
  SUTUN_SAYAC=SUTUN_SAYAC+1     
  GOSUB ORT_ISLM
RETURN

SON_KARAKTER:
     VERI=0 : SUTUN_SAYISI=0 :  LINE=0 : SUTUN_SAYAC=0 : KARAKTER=0 : SUTUN_SAYISI=0 : J=0
RETURN
     ;__________________________________SENTEZ ALT PROGRAM SONU_______________________ 
 
ORT_ISLM:
  OFSET= SIRA_NO-LINE
  GOSUB TABLO
  VERI=VERI REV 8
  VERI=VERI>>1
  GOSUB KAYDIR
  LINE=LINE+1
RETURN

KAYDIR:
         sutun[15]=SUTUN[14]
         sutun[14]=SUTUN[13]
         SUTUN[13]=SUTUN[12]
         sutun[12]=SUTUN[11]
         SUTUN[11]=SUTUN[10]
         sutun[10]=SUTUN[9]
         SUTUN[9]=SUTUN[8]
         sutun[8]=SUTUN[7]
         SUTUN[7]=SUTUN[6]
         SUTUN[6]=SUTUN[5]
         SUTUN[5]=SUTUN[4]
         SUTUN[4]=SUTUN[3]
         SUTUN[3]=SUTUN[2]
         SUTUN[2]=SUTUN[1]
         SUTUN[1]=SUTUN[0]
         sutun[0]=veri
         PAUSEUS 1000 
RETURN

TABLO:
   LOOKUP OFSET,[_
   $3F,$48,$48,$48,$3F,_      ;A   0-4
   $36,$49,$49,$49,$7F,_      ;B   4-9
   $22,$41,$41,$41,$3E,_      ;C   9-14
   $3E,$41,$41,$41,$7F,_      ;D   14-19
   $41,$49,$49,$49,$7F,_      ;E   19-24
   $40,$48,$48,$48,$7F,_      ;F   24-29
   $2E,$49,$49,$41,$3E,_      ;G   29-34
   $7F,$08,$08,$08,$7F,_      ;H   34-39
   $41,$7F,$41,_              ;I   39-42
   $40,$7E,$41,$01,$02,_      ;J   42-47
   $41,$22,$14,$08,$7F,_      ;K   47-52
   $01,$01,$01,$01,$7F,_      ;L   52-57
   $7F,$20,$10,$20,$7F,_      ;M   57-62
   $7F,$04,$08,$10,$7F,_      ;N   62-67
   $3E,$41,$41,$41,$3E,_      ;O   67-72
   $30,$48,$48,$48,$7F,_      ;P   72-77
   $3D,$42,$45,$41,$3E,_      ;Q   77-82
   $31,$4A,$4C,$48,$7F,_      ;R   82-87
   $26,$49,$49,$49,$32,_      ;S   87-92
   $40,$40,$7F,$40,$40,_      ;T   92-97
   $7E,$01,$01,$01,$7E,_      ;U   97-102
   $7C,$02,$01,$02,$7C,_      ;V   102-107
   $7E,$01,$0E,$01,$7E,_      ;W   107-112
   $63,$14,$08,$14,$63,_      ;X   112-117
   $70,$08,$07,$08,$70,_      ;Y   117-122
   $61,$51,$49,$45,$43,_      ;Z   122-127
   $00,$00,$00,$00,$00,_      ;bosluk   127-132
   $3E,$51,$49,$45,$3E,_      ;0   132-137
   $01,$7F,$21,_              ;1   137-140
   $31,$49,$45,$43,$21,_      ;2   140-145   
   $46,$69,$51,$41,$42,_      ;3   145-150
   $04,$7F,$24,$14,$0C,_      ;4   150-155
   $4E,$51,$51,$51,$72,_      ;5   155-160
   $06,$49,$49,$29,$1E,_      ;6   160-165
   $60,$50,$48,$47,$40,_      ;7   165-170
   $36,$49,$49,$49,$36,_      ;8   170-175
   $3C,$4A,$49,$49,$30,_      ;9   175-180
   $00,$00,$00,$00,$01,_      ;.   
   $24,$42,$43,$42,$3c,_      ;Ç   185-190
   $16,$65,$61,$61,$1e,_      ;Ğ   190-195
   $21,$7f,$21,_              ;İ   195-198
   $1e,$61,$21,$61,$1e,_      ;Ö   198-203
   $1e,$41,$01,$41,$1e,_      ;Ü   203-208
   $26,$49,$4b,$49,$32],VERI  ;Ş   208-213
RETURN
END   
       


yazılımı defalarca inceledim ama bu duruma bir türlü anlam veremiyorum.
Hocam bi incelerseniz sevinirim. Nerde hata yaptığımı gerçekten bilmek istiyorum.
http://hotfile.com/dl/143688426/0699d0e/8x16_kayan_yaz.rar.html

Bende bu arada 74154 ile deniyeyim. Bu gün iki tane aldım. Olmadı onunla devreyi kuracam.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Mucit23

Hocam yine kesme alt programında veri verme önceliğini değiştirdim sorun kısmen düzeldi. Yani görüntü geliyor fakat bu seferde harfler yarım yamalak çıkıyor. Bunu nasıl açıklayabiliriz Araştırıyorum. 74 154 dede aynı sonucu aldım. Yani hem 74154 ile devreyi denedim hemde 74595 ile denedim sonuç aynı. Değişen hiçbirşey yok. Tabi simülasyonda. Ben tpic ile devreyi kuracam. Herhalde ozaman kadar çözeriz.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Powered by EzPortal