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

Reklamlar

9 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.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s