7 Segment Sayıcı (0-9)

7 segment sayıcı

Bu uygulamada 1 adet 7 segment display kullanarak 0 ile 9 arası yukarı ve aşağı sayıcı  yaptık. Örnek olması açısından incelenebilir bir proje.

Projede ortak anot 7 segment display, PIC16F628A mikrodenetleyicisi ve butonlar kullanıldı. Proje mikroc derleyicisi ile yazılmıştır.

Devre şeması

Devre şeması

Programın algoritması şöyledir;

Ana fonksiyon içinde sonsuz döngüde UP ve DWN butonlarından herhangi birine basıldığında, butonlarla ilgili yapılacak olan işlemler blok içinde tanımlandı.

Bu işlemler ;

– Buton arkını önlemek için 180 ms bekle,

– Hangi butona basıldığını tespit et ve sayı değerinin 0-9 arası olmasını sağla

– sayi değişkenini 7 segmentte göster.

mikroC programı

</pre>
#define UP PORTA.B0
#define DWN PORTA.B1
//----------------------------------------------
char Ledkod[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}, sayi=0;
void kurulum() // ilk ayarlamalar
{
 CMCON=7; // PORTA dijital
 TRISA=3; // Pin 0 ve Pin 1 giriş diğerleri çıkış
 TRISB=0; // PORTB çıkış
 PORTB=LedKod[0]; // PORTB'ye 0'ın 7 segment kodunu gönder
}
void main()
{
 kurulum(); // kurulum fonk. çalıştır
 while(1) // sonsuz döngü
 {
 if(!UP||!DWN) // eğer UP veya DWN tuşlarına basıldıysa
 {
 Delay_ms(180); // buton arkı için 180 ms bekle
 if(!UP&&sayi<9) sayi++; // eğer UP butonuna basıldıysa ve sayi 9'dan küçükse sayiyi arttır
 if(!DWN&&sayi>0) sayi--; // eğer DWN butonuna basıldıysa ve sayi 0'dan büyükse sayiyi azalt
 PORTB=Ledkod[sayi]; // sayi değerinin 7 segment kodunu PORTB'de göster
 }
 }
}
<pre>

Proje dosyalarına buradan erişebilirsiniz.

Projenin videosu

17 thoughts on “7 Segment Sayıcı (0-9)

    • PIC16F84A içinde dahili osilatör olmadığı için harici 4 Mhz. osilatör kullanılarak proje 16F84a için tekrar derlenmeli. Mikroc demo programı ile derleme yapabilirsiniz.

      • Ben programı derlenmiş ve genellikle çalışıyor.
        Ben bir acemi ve 16F84 ile oynadı.
        Teşekkür ederim.

  1. Çevrelerinde çalışan için:

    Delay_ms(120);
    if(!UP) sayi++;
    if(sayi==20) sayi=0; //Ben bazı çizgiler eklendi >2020) sayi=19;
    PORTB=Ledkod[sayi];
    }
    }
    }

    • Bu register PIC16F628A microcontrollerinin PORTA’nın dijitale çevrilmesi içini yapıyor. PIC16F84A da analog port olmadığı için bu komutu kaldırıyoruz. Teşekkürler ve başarılar…

  2. Ben başka bir gecikme ile başka bir düğmeye tanıtmak yardımcı olabilir.
    #define FAST PORTA.B2
    delay_ms(10) …
    Eğer Saygılar.

  3. merhabalar ccs c kulaniyorum direk hex olarak paylaşma imkaniniz varmi şimdiden tesekur ederim

  4. Merhaba, elinize sağlık. Elektrik kesintisinde sayıcının sıfırlanmaması için ne eklenmesi gerekiyor?

  5. hex kodu simulasyonda çalışıyor fakat gerçekte entegreye yukleme yaparken hata veriyor olmuyor???

elektrokod için bir cevap yazın Cevabı iptal et