Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Kayan yazı nasıl yapılır?

Başlatan Recep METE, 13 Mayıs 2013, 16:28:34

Recep METE

Arkadaşlar 5x7 dot matrixte yazıları kaydırarak geçirmek istiyorum.pic 16f877 den başka bir entegre kullanmak istemiyorum.Böyle bir şey mümkün mü?Bu işin proram mantığı nedir acaba.internette araştırmama rağmen ccs c de yazılmış açıklayıcı bir kod bulamadım.Yardımlarınızı sabırsızlıkla bekliyorum.Saygılar.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

mr_knox

Dostum ccs c ile şöyle bir kayan yazı örneği var. İncelemişmiydin ?
http://ccspic.com/projeler/ccs-c-ile-kayan-yazi.html
kutsal kitapları okuyup anlamayan dindar okuyup anlayan ateist olur.  ( Nikola Tesla )

meta1453

Mümkün. Ama uğraştırır. Eğer yapmak istiyorsan mantığı anlatıyım.

Recep METE

Hocam burayı incelemiştim.Ben 16f877 yazılmış kod olup olmadığını araştırıyorum.Birde bu işin mantığını.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

Kabil ATICI

Bu iş şu anda iki yöntemle yapılıyor...
Birincisinde seri giriş pararlel çıkış entegresi kullanılarak sütun doğrudan gnd'ye bağlanıyor. Satırlardahi her bir led (aynı satırdaki) 74164 gibi bir entegrenin çıkışına bağlanıyor. Böylece 7 satır için 7  74164 entegresi kullanılarak veri hatları işlemcinin bir portuna bağlanıyor. Her saat darbesinde 1 sütun bilgisi çıkarılarak işlemci tarafından sürülüyor. Avantajı sürmesi kolaydır dezavantajı sürülecek led sayısı arttıkça çekilen akım artar. Ve karmaşık bir bağlantanı gerektirir.

İkincisinde;Çoğullama yöntemidir. Burada LED'ler satır ve sütun olarak ayrılır ve matris oluşturulur. Çoğunlukla sütunlar taranır.
Sütun ile bilgi işlemci tarafından satıra çıkartılır sonra sütun sürücü aktifleştirilir. Sütun sürücüsü kapatılır. Bir sonraki sütun için işlemci tarafından satıra bilgi çıkartılır. ve devam eder.
Burada iki tane sayıcı vardır. 1. tarama sayıcısı  2. kaydırma sayıcısı. Tarama sayıcısının frekansı yüksektir.
Buradaki devre nispeten daha basit programı karışıktır.
Çünkü muhtemeler ekrana yazdırılacak verinin tamamı ram üzerinde oluşturulur ve tarama ve kaydırma sayıcısına göre adreslenerek görüntülenir.
Önemli olarak taranacak led sayısı arttıkça led parlaklığının azaldığı göz önüne alınmalıdır. Bu durumda ya led gerilimi artılır, yada panel parçalara ayırılarak modüller halinde taramak ve sürmek.
ambar7

ziyaretci

#5
Ders 9

http://www.elektrocavus.com/konularim_pic_ccsc.php# 

CCSC de 1 adet 8x8 dot matrix ile ufak bir yazılım ekledim. Umarım mantığı anlamanda yardımcı olur.

Recep METE

#6
Hocam aşağıdaki resimde oklarla gösterilen terslenmiş veri(not) olarak gösterilen olaya neden gerek duyulmuştur.Resimde pic 16f877 kullanılmış,entegre olarak da 74hc154 vardır.Birde ben breadboarda bu devreyi kurduğumda bu terslemeyi nasıl yapacağım.Bu veri terslemesine neden gerek duyuluyor.Bu terslemeyi yapmasakta devre çalışır mı?Bu konuda değerli yorumlarınızı bekliyorum.


[IMG]http://img209.imageshack.us/img209/7483/terslenmiveri2.jpg[/img]

Uploaded with ImageShack.us
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

Kabil ATICI

NOT olayını doğrudan olduğu gibi değilde sürücü olarak düşün(bu hazır sürücü olabildiği gibi transistörle yapılmış bir devrede olabilir). İşlemci tarafın doğrudan sürebilirsin ama diğer tarafta 8 tane led aynı anda yandığında  74154'ün bacağı bu 8 led'in akımını kaldırmayacaktır. Bu durumda entegre yanmaması için LED'in akımını kaldıracak bir devreye ihtiyaç var. Bu NOT kapısı ile temsil edilen durumda işte bu LED'in akımını sürebilmek için kullanılıyor.
ambar7

Recep METE

Hocam bu ddeğillemeyi ben breadboarda kurduğum devrede nasıl yapacağım.Bu işin yapım şekli nedir?
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

Kabil ATICI

#9


Bu sürme şekli sana bir fikir verir.
Ek: Transistörlerin Emetor uçları Vcc=5V
ambar7

Gökhan BEKEN

Harici entegre ile terslemek saçmalık. Pic ile direkt ters göndermek varken. Ayrıca 74hc154 ile bir yere varamazsınız. Shift register kullanmak mantıklı.
Donanımlar genelde birbirine benzer kayan yazıda. Önemli olan yazılımdır. Yazılımı ise hazır kullanırsanız bir arpa boyu yol alamazsınız. İnsan bazen kendi yazdığı kodu bile anlamakta zorlanıyor(eğer açıklama satırı kullanmazsa). Bence kendiniz algoritma geliştirin.
Özel mesaj okumuyorum, lütfen göndermeyin.

Recep METE

Arkadaşlar 16f877 pici için yazılmış ccs c kodu olan varsa paylaşırsa sevinirim.Üç gündür aramama rağmen düzgün bir şey bulamadım da.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

RaMu

Bu işi kendin mi yapmak istiyorsun hazırını mı anlamış değilim? Kendin yapmak istiyorsan sadece pic ile led yakıp söndürebiliyor olman yeterli, verilen linklerde ve diğer kaynaklarda anlatılanları öğrenmeye çalışarak yapabilirsin, bahsedildiği gibi hazır kodu bu adam nasıl yazmoş diye anlamaya çalışacaksan işin çok zor, yok hazır kod olsun ben içine sadece göstereceği yazıyı gireyim olsun bitsin diyorsan, bir açıdan güzel fikir ama bunu bulman öğrenip yapmandan daha zor olabilir.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

malaga

pic basicde ete hocanın yazmış oldugu bir matrix uygulaması vardı ordan bakıp uygulayabilirsin mantıgını ögrendikten sonra ccs c uygularsın. Kolaygelsin
Hiç bir kimsenin gönlünü yapmak için Allahın hükmünü çiğneme

Recep METE

#14
Hocam, hazır kod olaak ete hocanın micro c de yazdığı kodları kullanıyorum.Ancak eklediğim harfler ters çıkıyor.Bir türlü düzeltemedim.Ne yapmam gerekir.

Birde microC de yazılmış kodu nasıl ccs c ye uyarlamalıyım.Aşağıdaki kodu ccs c koduna çevirmenin püf noktaları nelerdir.Yardımcı olursanız sevinirim.


char harf[63]={


0x00,0x00,0x00,0x00,0x00,//Boşluk

0x7F,0x9,0x19,0x29,0x46, //'R' harfinin kodları.
0x00,                     //Boşluk
0x7F,0x49,0x49,0x49,0x41, //'E' harfinin kodları.
  0x00,                     //Boşluk
0x3E,0x41,0x41,0x41,0x22, //'C' harfinin kodları.
0x00,                     //Boşluk
0x7F,0x49,0x49,0x49,0x41, //'E' harfinin kodları.
0x00,                     //Boşluk
0x7F,0x9,0x9,0x9,0x6, //'P' harfinin kodları.
0x00,                     //Boşluk
0x00,0x00,0x00,0x00,0x00,//Boşluk
0x7F,0x2,0xC,0x2,0x7F,
0x00,                     //Boşluk
0x7F,0x49,0x49,0x49,0x41, //'E' harfinin kodları.
  0x00,                     //Boşluk
  0x1,0x1,0x7F,0x1,0x1,
  0x00,                     //Boşluk
0x7F,0x49,0x49,0x49,0x41, //'E' harfinin kodları.



};
char dizi[15];
char j=0,a=14,h,k;
signed char i=0;

//******************************************************************
//******************************************************************

void goster()
{
for(k=0;k<5;k++)       //Hız ayarı (Düşürdükçe hızlanır)
                {
                 for(h=0;h<15;h++)
                                 {
                                  PORTA=15;  // Düzgün gözükmesi için sütunu söndürmek gerekiyor. 7 yüklememin sebebi tüm sütunları söndürmek.
                                  PORTB=dizi[h];// Sırası ile harf'in sütun sütun kodları PORTB'ye yükleniyor.
                                  PORTA=h;    //PORTA'da hangi sütunun aktif edileceği saydırılıyor.
                                  delay_us(500);  //Ledlerin  belli bir süre yanması sağlanıyor.
                                 }
                }
}

//******************************************************************
//******************************************************************

void main()
{
trisb=0;
cmcon=7;
trisa=0;
portb=0;

while(1)
         {
          for(i=14;i>=0;i--) //harf katarını dizi katarına aktarmak için kullanılan döngü..
                           { // Her seferinde dizi katarının değişkenlerini bir sola kaydırarak aktarır.
                            dizi=harf[a-j];
                            j++;
                           }
          goster();
          a++;
          j=0;
          if(a==63)a=14; //eğer a değeri "harf" katarının boyunu aşmışsa a değerini 14 yap.
         }
}
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d