19 Nisan 2011 Salı

Pic ile Kara Şimşek Devresi

yuruyenyazi.gif
Çocukluğumuzun meşhur dizisi Knight Rider yada kara şimşek’deki siyah arabanın önündeki led efektini sanırım hepimiz biliriz. Bu uygulamada B,C,D portları kullanarak 18 led ile yürüyen ışık devresi yapılmıştır. Kodlarda yapacağınız değişiklik ile led sayısını artırıp azaltabilirsiniz.
-------------------------------------------------------------------------------
 
#include <16f877.h>
#fuses XT,NOWDT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NOCPD
#use delay(clock=4000000)
//Tüm programdaki gecikmeleri ayarlama
#define gecikme 30 
void main ()
{int i,j; 

   while(1)
   { // İLERİYE SAYIM 

      // B portu için
      j=1;  //kaydırma işlemi için sayı değeri
      for(i=0;i<8;i++)
      {  output_b(j);      // j sayı değeri B portunda
         j=j<<1;         // j sayısını  1 bit sola kaydır
         delay_ms(gecikme);  //ledin yanık kalma süresigecikme veriliyor
      }

   // C portu için
      output_b(0);//son kalan portb bilgisi sıfırlanır
      j=1;
      for(i=0;i<8;i++)
      {  output_c(j);
         j=j<<1;
         delay_ms(gecikme);
      }

      // D portu için
      output_c(0);//son kalan portc bilgisi sıfırlanır
      j=1;
      for(i=0;i<8;i++)
      {  output_d(j);
         j=j<<1;
         delay_ms(gecikme);
      }
      //İLERİYE SAYIM SONU
     //GERİYE SAYIM D PORTU İLE BAŞLAR

      j=128; //kaydırma işlemi için sayı değeri
     for(i=0;i<7;i++)
      {  j=j>>1;    // j sayısını  1 bit sola kaydır
         output_d(j); //j sayısı çıkış portunda
         delay_ms(gecikme); //ledin yanık kalma süresi
      }
      output_d(0);//son kalan portd bilgisi sıfırlanır
      j=128; //kaydırma işlemi için sayı değeri
     for(i=0;i<7;i++)
      {  j=j>>1;    // j sayısını  1 bit sola kaydır
         output_c(j); //j sayısı çıkış portunda
         delay_ms(gecikme); //ledin yanık kalma süresi
      }

     output_c(0);//son kalan portc bilgisi sıfırlanır
      j=128; //kaydırma işlemi için sayı değeri
     for(i=0;i<7;i++)
      {  j=j>>1;    // j sayısını  1 bit sola kaydır
         output_b(j); //j sayısı çıkış portunda
         delay_ms(gecikme); //ledin yanık kalma süresi
      }
     //GERİYE SAYDIRMA SONU 

   }
}
 
----------------------------------------------------------------------------
Devrenin kaynak kodlarına ve proteus simülasyonuna buradan ulaşabilirsiniz.


Devamı: http://ccspic.com/ccs-uygulamalari/pic-ile-kara-simsek-devresi.html#ixzz1JzFhYA3O
Under Creative Commons License: Attribution

Hiç yorum yok:

Yorum Gönder