15 Haziran 2018 Cuma

PIC 0-9 ve f sayıcı

PIC 16f877 ve ortak katotlu 7 segment display ile yapılmış 0-9 sayıcı devresidir. 12voltla çalışır 7805 entegresiyle gerilim PIC'in çalışa bileceği  5volt'a düşürülmüştür.Devreye enerji verildiğinde 0 dan 9'a ve A,B,C,D,E,F harflerinide gösterir. Programda harfleri çoğaltarak farklı harfte yaza bilir veya bu kısmı sile bilir siniz.



MALΖEME LİSTESİ:
1-7805
2-4MHz kristal
3-2adet 22pf
4-100nf
5-2adet 4k7
6-7adet 330hom
7-bc337
8-16F684A
9-2adet 1k
10-7segment ortak katotlu displey
DEVRE ŞEMASI:
















CCSC KODU:

#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
//***********Denetleyici konfigürasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor
#use fast_io(a)           // kullanılacak pin gurubu yada pinleri       
#use fast_io(b)           // kullanılacak pin gurubu yada pinleri       

int i;  // i isminde 8 bitlik bir değişken tanıtılıyor.
// Ortak katot display için veri değerleri
const int digit[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
/********* ANA PROGRAM FONKSİYONU********/
void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_a(0x00); // A portu tümüyle çıkış olarak yönlendiriliyor
   set_tris_b(0x00); // B portu tümüyle çıkış olarak yönlendiriliyor
   output_b(0x00);  // B portu çıkışları sıfırlanıyor
   output_a(0x02);  // RA1 pini lojik-1 yapılıyor, diğer pinler lojik-0

   while(1)   // Sonsuz döngü oluşturuluyor
   {
           
              for(i=0;i<=15;i++)
  
  {
  
         output_b(digit[i]); // digit[i] değerini B portuna gönder
         delay_ms(300);      // 700 msn bekle
   
    } 
  }
}

Hiç yorum yok:

Yorum Gönder