1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5 out of 5)
Loading ... Loading ...
Tem
25th

CCS C Dersleri: Yedi Segment Display Uygulamaları

ccs7seg.gif

Aşağıdaki şekilde görüldüğü gibi led kullanılarak yapılan rakam, harf gösterici devre elemanlarına display denir. Yaygın olan yedi parçalı led göstergeler anodu şase (ortak) ve katodu şase olmak üzere iki tipte üretilir.

7segmentdis1.JPG

Ortak Anotlu (common anode) display’ler
Bu tip display’lerin içinde bulunan tüm ledlerin anodları gövde içinde birbiriyle birleÅŸtirilmiÅŸtir. Eleman alıştırılırken artı (+) besleme ortak anoda uygulanır. DiÄŸer uçlara uygulanan eksi (-) beslemelere göre display’de çeÅŸitli rakamlar oluÅŸur.

Ortak Katotlu (common cathode) display’ler

Anodu şasenin tam tersi özelliktedir. Yani gövde içindeki ledlerin tümünün katot uçları birbirine bağlıdır.

Ortak Anotlu bir display’de ortak uca (+) besleme uygulanır. Display’de onlu 0 sayısını görebilmek için, a, b, c, d, e, f ledlerine kod çözücü entegre tarafından 0 V (yani ÅŸase) gönderilir. Display’de desimal (onlu) 1 sayısı görülmek istendiÄŸinde ise b ve c ledlerine 0 V uygulanır.

Aşağıdaki tabloda ortak anot ve katot displaylerde rakam oluşturmak için pinlere uygulanması gereken lojik değerler gösterilmiştir.

7segmentdis2.JPG

Rakamların yanında bazı harfleride display üzerinde göstermek mümkündür. Burada yapılması gereken gösterilmesi istenen harfi oluşturacak ledlere enerji vermektir.

Yukarıda resmi verilen devrede ilk olarak her harfi oluşturan değerler desimal olarak bir diziye atılmıştır.

int tab7seg[8]={57,109,115,6,55,55,0,63}; //C S P I m m o

ÖrneÄŸin “C” harfini oluÅŸturmak için displayde a,f,e,d segmentlerindeki ledlerin yanması diÄŸerlerinin sönük kalması gerekmektedir. Daha sonra bu segmentlerin desimal deÄŸerleri (a için 1, f için 32, e için 16 ve d için 8 toplam 57 ) toplanarak tabloya yazılır ve bu iÅŸ diÄŸer harfler içinde tekrarlanır. Buradaki tabloda desmal deÄŸer kullanılmıştır. Tabloda bu 57 deÄŸeri yerine hexadesimal olarak 0×39 yada binary olarak 0b1001110 deÄŸeri kullanılabilirdi.

Karakter tablosu oluşturulduktan sonra program aracılığıyla harf dizileri b portundan gönderilir, ve tarama yapılarak harf dizilerinin ekranda gösterilmesi sağlanır.

Tüm rakamları 7 segment dipslayde gösteren tablo aşağıdadır

int tab7seg[10]={0×3F,0×06,0×5B,0×4F,0×66,0×6D,0×7D,0×07,0×7F,0×67}; //0-9

AÅŸağıda 0-9 yukarı sayıcı devresi verilmiÅŸtir. Programı inceleyecek olursak standart tanımlamalar yapıldıktan sonra ana foksiyonda rakamları ifade eden tablo oluÅŸturulmuÅŸtur. Daha sonra sonsuz döngü içerisinde “i” deÄŸiÅŸkeni sürekli artırılarak tablodan sırası gelen rakam b portundan dışarı gönderilir. “i” deÄŸiÅŸkeni 9 sayısını geçerse sıfıra eÅŸitlenerek tekrar baÅŸa dönülür.

s11.JPG

AÅŸağıdaki programda ise 0-9 sayıcı verilmiÅŸtir. Burada “i” deÄŸiÅŸkeni ilk baÅŸta 9′a eÅŸitlenir daha sonra sonsuz döngü içerisinde sürekli azaltılır.

s2.JPG

Aşağıdaki örnekte ise yukarıdaki iki programın bileşimi olan aşağı yukarı sayıcıuygulaması yer almaktadır. Programda yukarı ve aşağı sayma işlemleri fonksiyon olarak tanımlanmışlardır. Devreda A0 pinine bağlanacak anahtarın durumuna göre aşağı yada yukarı sayma işlemi gerçekleştirilir. Eğer anahtar 1 konumunda ise yukarı, 0 konumunda ise aşağı doğru sayar.

s3.JPG

Yukarıda anlatılan programları ve proteus devre şemalarını, 0 99 ,0 9999 sayıcı, led dotmatrix uygulamalarını ve daha fazlasını buradan indirebilirsiniz.

Åžifre: ccspic.com


Benzer Yazılar


8 Yorum “CCS C Dersleri: Yedi Segment Display Uygulamaları”

  1. gökhan Eki 29, 2009

    int tab7seg[10]={0*3F,0*06,0*5B,0*4F,0*66,0*6D,0*7D,0*07,0*7F,0*67};

    bu komutta hata var galiba

    0*5B de 0*6D de ve 0*7D de hata veriyor neden olabilir acaba?

  2. admin Eki 29, 2009

    * yerine x yaparak deneyiniz

  3. gökhan Eki 29, 2009

    bu arada
    0*3F,0*06,0*5B,0*4F vs işaretlerin anlamını anlatabilirmisiniz?
    ben 0b10000001 (b0 ve b7 ledlerini yak gibi)
    gibi yazıyorum öyle daha anlaşılır oluyor ama sizin kullandığınız şekilde kullanıyor herkes.

  4. admin Eki 29, 2009

    bunu üç şekilde yapabiliriz. birincisi senin kullandığın gibi 0b10000001 şeklinde olan binary gösterimdir
    ikincisi bu sayfada gösterilen hexadesimal gösterim bu örnek için 0×21 olur
    son olarak ta desimal (onlu) gösterimde 129 olur.

  5. gökhan Eki 30, 2009

    taban aritmatiÄŸi ile çevirme konusunu biliyorum ama 0×21 gibi biÅŸey hiç görmedim bildiÄŸim tek fark hexadecimal de 9 dan sonra sırayla A B C D E F harflerinin gelmesi.0x ne anlama geliyor? Müsaitseniz anlatırmısınız veya döküman paylaÅŸabilirmisiniz?

  6. admin Eki 30, 2009

    sabit sayı tanımlamalarında;
    0b sağındaki sayının binary olduğunu belirtir
    0x sağındaki sayının hexadesimal olduğunu belirtir
    herhangi bir ifade yoksa sayı desimaldir

  7. gökhan Eki 30, 2009

    teşekkürler hocam

  8. ImHACK Ara 25, 2009

    Merhaba ArkadaÅŸlar,

    Portan hertürlü veri gönderilebilir.
    Örneğin:

    Karakter ‘A’ verisini gönderebilirsiniz.
    Ama displayde bu A karakteri olarak belirmez.
    O harfin binary değerini alırsınız.

    char veri = ‘A’;
    output_b(veri);

    “veri” burda sabit veya deÄŸiÅŸken olabilir.
    Bunu siz direkt olarak

    output_b(’A'); // diyede yazabilirsiniz.

    Göndereceğiniz veriyi string olarak gönderemezsiniz.

    Örneğin:

    output_b(”Serhat”); //diye

    yalnız

    char veri[] = {”Serhat”};

    veya

    char veri[7] = “Serhat”;

    diye yazarak

    for(i=0; i<7; i++)
    {
    output_b(veri[i]);
    }

    şeklinde bir döngü işlemiyle gönderebilirsiniz.

    char tanımlamasında veri[7] bildirilmiş ama karakter adedi 6 ydı. Bunun nedeni string veriler birde null taşır. null yani yazının sonunu bildiren veri.

    Hexadecimal, karakterler, octal sayıların hepsi sonunda binary olarak anlaşılır. Siz bu verileri ister binary olarak girin ister hex olarak. Derleyici hepsini anlar.

    Hesap Makinasını bilimsel segmesini tıklayarak veri çevrimi yapabilirsiniz.

    ÖrneÄŸin binary verimiz 0b10100011 olsun bu sayının Hex karşılığı 0xA3′tür.

    C dilinde * işareti pointerlarda (işaretçilerde) ve çarpma işleminde kullanılır.

    Yanlış [ char i = 0*23; ]
    DoÄŸru [ char i = 0×23; ]

    Yukarıda yanlış veri tanımlama ve doğru veri tanımlamayıda göstermiş oldum.

    Umarım işlerinizde başarılı olursunuz.
    Bu site size çok şey kazandırır.
    Takip edin.

    Başarılar.

Yorum yapın