Yedi Segment Display
Yedi Segment Display
Displayler üzerinde bulunan diyot ledlerin enerjilenmesi ile ışık oluşturan kompanentlerdir. Bir 7 segement displayin üzerinde bulunan 7 adet display ayrı ayrı enerjilenmesi ile bir ışık bütünü oluşur ve gerekli sayı veya yazıları sembolize ederler. Bu displaylerin anot ucundan ve katot ucundan beslenen iki çeşidi mevcuttur şimdi bunları inceleyelim.
Ortak Katot Display
Ortak katotlu (common cathode) displayde a,b,c,d,e,f,g,nokta girişleri anot(+) girişten olan displayledir.
Bu displayde görüntülenmek harf veya yazı ne ise displayin o ledini enerjilendirmemiz gerekir.
Yukarıda görünen displayde 1 sayısını görüntülemek için enerjilendirilmesi gereken uçlar b ve c uçlarıdır. Hangi harfin hangi uçlara karşılık geldiğini ve binary ve hex kodunu aşağıdaki tabloda bulabilirsiniz. Dp ucu nokta ucudur.(Tabloda Dp ucu h tır.)
Ortak Anot Display
Ortak katotlu (common anode) displayde a,b,c,d,e,f,g,nokta girişleri katot(-) girişten olan displayledir.
Ortak anot uçta sizinde fark edeceğiniz gibi ışık vermesi istenmeyen lede lojik-0 verilmektedir.
Şimdi bu gösterdiğimiz displaylerle PIC16F877’de bir uygulama yapalım.
Sayıcı Devresi
Aşağıda 0’da 9′ kadar sayan proteus devresi kurulmuş displayin kod satırları verilmiştir.
#include <16F877.h> #FUSES NOWDT //Watch Dog Timer Kullanma #FUSES XT //Kristal Osilatör ile CLKOUT #FUSES NOPUT //Power Up Timer Kullanma #FUSES NOPROTECT //Rom'a Yazılan Veriler Okunabilir #FUSES NOBROWNOUT //Brownout Reset Kullanma #FUSES NOLVP //Düşük Gerilimler ile Programlamayı Kapt #FUSES NOCPD //Data EEPROM Korumasız #FUSES NOWRT //Program Belleği Yazmaya Açık #FUSES NODEBUG //ICD için Hata Ayıklama Modu Kapalı #use delay(clock=4000000) #define buton pin_A0 #use fast_io(b) int i; /* Dizi tanımlaması Yapılıyor*/ const int dizi[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x6F}; void main() { /* PIC ayarları yağpılıyor*/ setup_psp(PSP_DISABLED); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_CCP1(CCP_OFF); setup_CCP2(CCP_OFF); /* b portu çıkış olarak yönlendiriliyor*/ set_tris_b(0x00); /* b portunun çıkışları lojik-0 yapılıyor*/ output_b(0x00); while(1) { for(i=0;i<11;i++) { output_b(dizi[i]); delay_ms(500); } } }
Program dosyalarına buradan ulaşabilirsiniz.