Ortak anot display sürmek için ccs c kodları lazım

Başlatan Recep METE, 28 Nisan 2013, 16:07:53

Recep METE

Arkadaşlar dün  2 adet 38mm 7 segment ortak katot display aldım.Maalesef ortak anot çıktılar.Bunların çalışması için pinlerden eksi vermek gerkiyormuş.Şuan bunları değiştirmem mümkün değil. Benim elimde ortak katotda yazılmış kod var.Ben bu displayları kullanmam için ccs c de kodlarda nasıl değiiklik yapmam gerekiyor.Ayrıca ortak anotun bağlantı şekli ile ortak katotun bağlantı şekli aynımıdır.Displayı çalıştırmam için ne yapmalıyım.Yardımlarınızı bekliyorum.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

mehmet

Herşey tamam da; nasıl sürdüğünü de
yazsaydın tam olacaktı...
Transistör mü, hc595 mi, uln serisi mi?
Neyle sürüyorsun?
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

xoom

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.

http://ccspic.com/ccs-c-dersleri/ccs-c-dersleri-yedi-segment-display-uygulamalari.html


subram

display pinleri sıralı ise Katot için ayarlanmış veriyi anoda çevirmek için 0x7F den  den çıkarman yeterli. nokta hariç. örnğin 3 için;

Katotda; 000 0110 (0x06)
anotta;   111 1001 (0x79)

0x7F-0x06=0x79
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

Recep METE

#4
Alıntı yapılan: xoom - 28 Nisan 2013, 16:38:50
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.

http://ccspic.com/ccs-c-dersleri/ccs-c-dersleri-yedi-segment-display-uygulamalari.html





Displayi bc337 transistörle sürüyorum.

mesaj birleştirme:: 28 Nisan 2013, 17:26:31

Alıntı yapılan: subram - 28 Nisan 2013, 17:20:56
display pinleri sıralı ise Katot için ayarlanmış veriyi anoda çevirmek için 0x7F den  den çıkarman yeterli. nokta hariç. örnğin 3 için;

Katotda; 000 0110 (0x06)
anotta;   111 1001 (0x79)

0x7F-0x06=0x79

Hocam sadece verileri (0x7F =0x79 v.b.) değiştirsem display çalışır mı?Bunu deneyeceğim.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

subram

daha detaylı bilgi için lütfen şema ve kod paylaşın.
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

arslan74

Alıntı yapılan: semfero - 28 Nisan 2013, 16:07:53
Arkadaşlar dün  2 adet 38mm 7 segment ortak katot display aldım.Maalesef ortak anot çıktılar.Bunların çalışması için pinlerden eksi vermek gerkiyormuş.Şuan bunları değiştirmem mümkün değil. Benim elimde ortak katotda yazılmış kod var.Ben bu displayları kullanmam için ccs c de kodlarda nasıl değiiklik yapmam gerekiyor.Ayrıca ortak anotun bağlantı şekli ile ortak katotun bağlantı şekli aynımıdır.Displayı çalıştırmam için ne yapmalıyım.Yardımlarınızı bekliyorum.

Senin burada kod ile bir şey yapman gerekmiyor. Sadece donanım kısmını değiştirmen gerekiyor. Kod kısmı aynı kalabilir.

Recep METE

#7
Hocam anot display için kullandığım kodu aşağıdadır.Verileri ortak anota göre değiştirdim.Fakat benim display hala 1-9 arası rakamları saymıyor.Sadece bir cizgisi sabit yanık duruyor.




#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=4000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

int i;  // i isminde 8 bitlik bir değişken tanıtılıyor.

// Ortak anot display için veri değerleri
const int digit[16]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x83, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

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

   output_b(0x00);  // B portu çıkışları sıfırlanıyor
   output_a(0x02);  // RA1 pini lojik-1 yapılıyor, diğer pinler lojik-0

   while(1)   // Sonsuz döngü oluşturuluyor
   {
      for(i=0;i<=15;i++)
      {
         output_b(digit); // digit değerini B portuna gönder
         delay_ms(500);      // 500 msn bekle
      }
   }
}
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

artapon

keşke devre şemanı da yollasaydın. o zaman daha kesin bir çözüm sunabilirdim.

aşağıda belirteceğim kodu bir dene büyük ihtimalle sorununu halledecektir.

#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=4000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

int i;  // i isminde 8 bitlik bir değişken tanıtılıyor.

// Ortak anot display için veri değerleri
const int digit[16]={192,249,164,176,153,146,130,248,128,144,136,199,198,161,134,142};
//                  [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , a , L , c , d , e , f ]

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

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

   output_b(0x00);  // B portu çıkışları sıfırlanıyor
   output_a(0x02);  // RA1 pini lojik-1 yapılıyor, diğer pinler lojik-0

   while(1)   // Sonsuz döngü oluşturuluyor
   {
      for(i=0;i<=15;i++)
      {
         output_b(digit); // digit değerini B portuna gönder
         delay_ms(500);      // 500 msn bekle
      }
   }
}
Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)

artapon

ya da hexadecimal olarak değerleri istersen:

// Ortak anot display için veri değerleri
const int dit[16]={0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x03, 0x78, 0x00, 0x10, 0x08, 0x03, 0x46, 0x21, 0x06, 0x0E};
//                [ 0 ,   1 ,    2 ,  3 ,    4 ,   5 ,   6 ,   7 ,   8 ,   9 ,   a ,   b ,   c ,  d ,    e ,  f ]
Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)

Recep METE

[IMG]http://img62.imageshack.us/img62/8845/displayp.png[/img]

Uploaded with ImageShack.us


Hocam, ortak anotta display ucu yani transistörden doğru gelen uc(com a takılan uc) + olması gerekiyormuş.Burada - durumunda.Transistörüm bc 337 bu ucu + nasıl yapabiliriz acaba.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

Kabil ATICI


Buradaki transitörler gibi. Transistör BC327'de olabilir..
ambar7

artapon

transistöre gerek yok. direkt olarak + beslemeye bağla. pic bacağındaki dirençleri bağla. gerisi problem olmaz.
Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)

Recep METE

Hocam,şimdide ikili tümleşik display sürme çalışmalarım var.Ancak herşey sanki yolunda olmasına rağmen display ekranında yarım göstermeler,ledin bir tanesinin silik göstermesi,yada onlar rakamının hızlı sayması birler basamağının yerinde durması,8 şeklinde göstermeler gibi sorunlar yaşıyorum.Anot display kullanıyorum.PNP transistör kullanmaktaım.Daha sonra kodları ve breadboard görüntüsünüde ekleyeceğim.Acaba sorunum nedir?Defalarca denedim,olmadı.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

Kabil ATICI

Muhtemelen birler basamağı yerinde durmuyor sadece senin göremeyeceğin kadar hızlı sayıyor.
Giriş frekansın çok yüksek olabilir.

Sabit bir sayıyı göstermeye çalış. Bu sayı gösterdikten sonra diğer işleme geç.

Tarama işleminden bir sorun olabilir Adım adım git. 1. display göster, 2. display göster..... Sonra diğre işlemlere geç.
ambar7