Ccspic.com Sitesinden Paylaşılmış Olan 18 Ledli Karaşimşek devresi

Ç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
}
}

Hiç yorum yok :

Yorum Gönder