7 Segment Display ile 0-9 sayıcı Uygulaması

Standart

Merhaba Arkadaşlar. Bu yazımda Display ile 0-9 sayıcı uygulaması hakkında anlatıcam. Bildiğimiz gibi elektronik cihazlarının çoğunda (Asansör, saatlar, kombiler, firinlar, bombalar, klima gibi) bilgilendirme ekranı olarak kullanılan ve digital adı ile tanımlanan Display dir. 

saat

Şekil-1.

Display İç Yapısı;

  • Display’ ler 7 adet LED’ in birleştirilmesi ile yapılan bir digital ekrandır. O yüzden 7 segment Display olarak atlandırılmaktadır. 7 Segment Display; Ortak Katot ve Ortak Anodlu olmak üzere iki görünüşü vardır.

ortak-katot-display-baglanti-semasi

Şekil-2.

 

  • Ben bu uygulamada Ortak Katotlu 7 Segment Display kullandım. Display’ in Toplam 10 bacağı bulunur ve  3. ve 8. bacakları GND’ dir.

Proteus Devre Çizimi;

  • Şimdi Proteus ile devre çizimini yapalım.Proteus kütüphanesinden PIC16F877, 7 Seg-Com-Cat-GND Display ve 220RES alalım.Şekil-3’deki gibi devreyi oluşturalım.

35

Şekil-3.

 

Yazılım;

Şimdi yaptığımız devreye göre CCS-C proramı ile program kodunu oluşturalım. Kod oluşturmadan önce yapmamız gereken ilk iş ; 0-9 arası sayılara göre LED’ lerin hangisi yanacak ve bu ledlere göre ASCII kodunu oluşturalım. (Şekil-4)

Display.jpg

Şekil-4.

  • İki tür kodlama göstericem.
  1. Biraz uzun kodlama. Yani belli bir gecikme ile sayılar B Portuna aktarılacak.
  2. İse Çok kısa bir kodlama yapıcam. Bir adet değişken tanımlayarak yapıcam

1. KODLAMA;

  • İlk önce CCS-C programı ile yeni proje oluşturalım.
  • Proje Ayarları; PIC16F877, Kristal Osilatör ve Frekansı 4MHZ.
  • Şimdi Port ayarlarını yapalım.

#include <0-9 Display_Uygulama.h>

void main()
{

set_tris_b(0x00);                  // B portu tümüyle çıkış olarak yönlendiriliyor.

output_b(0x00);                     // B portu çıkışları sıfırlanıyor.

while(1)
{

}

}

 

  • Sonsuz Döngü (while(1)) kodlarını yazalım.

 

while(1)
{
//********** 0 sayısı yazılıyor *******//
output_b(0b00111111);
delay_ms(500);

//********* 1 sayısı yazılıyor *******//
output_b(0b00000110);
delay_ms(500);

//********* 2 sayısı yazılıyor *******//
output_b(0b01011011);
delay_ms(500);

//********* 3 sayısı yazılıyor ******//
output_b(0b01001111);
delay_ms(500);

//********* 4 sayısı yazılıyor ******//
output_b(0b01100110);
delay_ms(500);

//********* 5 sayısı yazılıyor ******//
output_b(0b01101101);
delay_ms(500);

//******** 6 sayısı yazılıyor ********//
output_b(0b01111100);
delay_ms(500);

//******** 7 sayısı yazılıyor *******//
output_b(0b00000111);
delay_ms(500);

//******** 8 sayısı yazılıyor *******//
output_b(0b01111111);
delay_ms(500);

//********* 9 sayısı yazılıyor *******//
output_b(0b01101111);
delay_ms(500);

}

  • “Build” diyerek hex dosyasını oluşturalım
  •  hex dosyasını proteus programına yükleyelim ve çalıştıralım.

 

36

Şekil-5.

2. KODLAMA;

  • Bu kodlama çok kısadır. Burada “i” adında bir değişken oluşturalım ve yukarıdaki gibi port ayarlarını yapalım.

 

#include <0-9 Display_Uygulama.h>

int i;                                                     // i adında 8 bitlik değiklen tanımlandı.

//***** Ortak katot display için veri değerleri ******//
const int sayi[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x6F};

void main()
{

set_tris_b(0x00);                       // B portu tümüyle çıkış olarak yönlendiriliyor

output_b(0x00);                        // B portu çıkışları sıfırlanıyor

while(1)
{

}

}

 

  • Şimdi Sonsuz Döngü (while(1)) içindeki kodları yazalım.

while(1)
{

for(i=0;i<=9;i++)
{
output_b(sayi[i]);                           // sayi[i] değerini B portuna gönder.
delay_ms(500);                              // 500ms’lik gecikme zamanı.
}

}

  • Proteus devresine hex dosyasını yükleyelim ve çalıştıralım.

 

37

Şekil-6.

 

PROTEUS DEVRE ÇİZİMİ + CCS-C KODU + HEX DOSYASI

 

Yorum bırakın