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:
#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