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.
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.
- 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.
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)
- İki tür kodlama göstericem.
- Biraz uzun kodlama. Yani belli bir gecikme ile sayılar B Portuna aktarılacak.
- İ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.
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.
PROTEUS DEVRE ÇİZİMİ + CCS-C KODU + HEX DOSYASI