4017 Display Sürme Sorunu

Başlatan cezzza06, 29 Aralık 2011, 12:51:37

cezzza06

Merhaba arkadaşlar.
Elimde bir HCF4017, MBI5168 entegreleri ve M16C işlemciden oluşan bir devre var. Devrede 6 tane 7segment displayi aynı anda sürmem lazım. Bağlantılarda herhangi bir sıkıntı yok. Çünkü bu devre daha önce başarılı olarak çalışmış ancak şimdi programı silip tekrar yazıyorum.
Şimdi 4017'de çıkışları teker teker aktif edebiliyorum ancak birden fazla çıkışı birden aktif edemiyorum. Bunun için fonksiyonu sürekli yenileyen döngü kurdum. Frekansı ayarladım. Bu durumda bütün display'lere aynı rakam yazılırsa sıkıntı yok. Ancak display'lere farklı rakam yazmaya çalıştığımda sanki display'in bütün segmentleri yanıyor. Bu sorunu nasıl çözebilirim? 4017 ile birden fazla çıkış aynı anda düzgün olarak nasıl aktif olur? Forumu ve daha nice forumları araştırdım bu konu için ama bir çözüm bulamadım.
Yardımlarınız için şimdiden teşekkürler.

z

Şema vermezseniz bu yazdığınızdan bir şey anlaşılmaz.

Alıntı YapŞimdi 4017'de çıkışları teker teker aktif edebiliyorum ancak birden fazla çıkışı birden aktif edemiyorum

Demişsiniz. 4017 çipinin birden fazla çıkışını aktif edemezsiniz. Bu çipin böyle bir yeteneği yok.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Kabil ATICI

4017 bildğim kadarı ile sayıcıdır ve birden fazla çıkışı aktifleştirilemez. Bunun için 4015 kullan. Seri giriş paralel çıkış için kullanılabilir.
http://www.nxp.com/documents/data_sheet/HEF4015B.pdf adresinden veri kağıtlarına ulaşabilirsin..
ambar7

My75

#3
Sanırım 4017 ile display leri sıra ile aktif yapıyorsunuz,her aktif yaptığınız display e göre o display e ait bilgiyi yüklemeniz gerekli, kısaca bu.Ama işlemci kullanıyorsanız mantıksız bir uygulama..Şema yüklerseniz yardımcı oluruz.
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

drmp

4017  meşhur kara şimşek entegresidir  1 reset pini 1 clock pini yapacağınız uygulama için gerekli olan pinlerdir  en önemli şartınız şudur clock sinyali uygulamadan önce bütün segmentleri(display ledlerini) söndürün  ardından clock sinyalini uygulayıp tekrar yakmanız yeterli  bu şekilde basit bir tarama mantığı ile temiz bir görüntü elde edebilirsiniz

cezzza06

Şemayı vereyim vermesine de bu sorunun şema ile pek anlaşılacağını düşünmüyorum. Ama kodlar konunun anlaşılmasında daha çok yardımcı olacaktır. Kodları aşağıda verdim. Bu kodla display'de 2 rakam aynı anda yanıyor gibi görünüyor. Yani çok hızlı döngü yaparak öyle göstermeye çalıştım. Arkadaşlar dediğim gibi bu devre daha önce başarılı olarak çalışmış. Yani adam programla bir şekilde bu display'leri aynı anda net olarak yakmış. Bu yüzden farklı entegre veya farklı bağlantıya gerek olmaması gerek. Kodlar yardımcı olmazsa yine şemayı da vereyim ama dediğim gibi benim derdim programla:(..
   while(1)
   {
//DİSPLAY'e "0" RAKAMINI YAZIYORUM (MBI5168 İLE)

   MBI_DTA=0;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=0;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=1;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=1;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=1;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=1;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=1;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=1;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_LE=1;
   MBI_LE=0;
//"0" RAKAMI YAZILDI, ŞİMDİ BUNU 4017'YE 1 CLOCK PULSE GÖNDEREREK 0 NOLU ÇIKIŞINI AKTİF EDİYORUM

        _4017_RST=1;
        _4017_RST=0;
/*AYNI ZAMANDA İLK CLOCK'DAN ÖNCE 4017'Yİ RESETLEYEREK DÖNGÜ TEKRAR ETTİĞİNDE HEP AYNI ÇIKIŞLARIN AKTİF OLMASINI SAĞLIYORUM.*/

   _4017_CLK=1;
   _4017_CLK=0;
      DelayMs(10);

//DİSPLAY'E MBI5168 İLE "1" RAKAMINI YAZIYORUM.

   MBI_DTA=0;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=0;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=0;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=0;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=0;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=1;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=1;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_DTA=0;
   MBI_CLK=1;
   MBI_DTA=0;
   MBI_CLK=0;

   MBI_LE=1;
   MBI_LE=0;
//"1" 'İ DE YAZDIM. ŞİMDİ 4017'YE BİR CLOCK DAHA GÖNDEREREK "1" NOLU ÇIKIŞINI AKTİF EDİYORUM.

   _4017_CLK=1;
   _4017_CLK=0;
      DelayMs(10);
}//VE BU DÖNGÜYÜ SÜREKLİ DÖNDÜRÜYORUM. DelayMs bekleme süresini rakamların durur pozisyonda göründüğü süreye ayarladım.Yani 100 microsn civarında.

My75

#6
Alıntı yapılan: drmp - 29 Aralık 2011, 13:44:51
4017  meşhur kara şimşek entegresidir  1 reset pini 1 clock pini yapacağınız uygulama için gerekli olan pinlerdir  en önemli şartınız şudur clock sinyali uygulamadan önce bütün segmentleri(display ledlerini) söndürün  ardından clock sinyalini uygulayıp tekrar yakmanız yeterli  bu şekilde basit bir tarama mantığı ile temiz bir görüntü elde edebilirsiniz

Çıkış ile yüklenen bilginin senkron olması lazım.Dediğim gibi 4017' nin hangi pini aktif ise ona göre bilgi yüklenmeli.Yani ilk display değeri yüklenmeden 4017 aynı zamanda resetlenmeli..Kendi başına sayarsa olmaz..

İşlemciniz 7 segment,1.display bilgisini yükleyecek.Sonra clock verecek 4017 display 1 aktif olacak.
İşlemciniz 7 segment,2.display bilgisini yükleyecek.Sonra clock verecek 4017 display 2 aktif olacak.
İşlemciniz 7 segment,3.display bilgisini yükleyecek.Sonra clock verecek 4017 display 3 aktif olacak.
İşlemciniz 7 segment,4.display bilgisini yükleyecek.Sonra clock verecek 4017 display 4 aktif olacak.
İşlemciniz 7 segment,5.display bilgisini yükleyecek.Sonra clock verecek 4017 display 5 aktif olacak.
İşlemciniz 7 segment,6.display bilgisini yükleyecek.Sonra clock verecek 4017 display 6 aktif olacak.
İşlemciniz reset verecek.Aynı şekil devam edecek..
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

cezzza06

Alıntı Yapİşlemciniz 7 segment,1.display bilgisini yükleyecek.Sonra clock verecek 4017 display 1 aktif olacak.
İşlemciniz 7 segment,2.display bilgisini yükleyecek.Sonra clock verecek 4017 display 2 aktif olacak.
İşlemciniz 7 segment,3.display bilgisini yükleyecek.Sonra clock verecek 4017 display 3 aktif olacak.
İşlemciniz 7 segment,4.display bilgisini yükleyecek.Sonra clock verecek 4017 display 4 aktif olacak.
İşlemciniz 7 segment,5.display bilgisini yükleyecek.Sonra clock verecek 4017 display 5 aktif olacak.
İşlemciniz 7 segment,6.display bilgisini yükleyecek.Sonra clock verecek 4017 display 6 aktif olacak.
İşlemciniz reset verecek.Aynı şekil devam edecek..

İşte verdiğim kodda da görüldüğü gibi ben de aynen böyle yaptım. Ancak rakam net olmuyor. Yani mesela display'lerin birine 0 birine 1 yazıyorum ama ilk display sönük olarak bütün segmentleri yakıyor, 2. display 0 rakamını koyu yazıyor ama diğer segmentleri de sönük olarak yanıyor, 3. displayde 1 rakamı net olarak yanıyor. Programda 4017'nin reset sinyalinin yerini değiştirdim, clock sinyallerini değiştirdim, bekleme sürelerini değiştirdim ama en iyi görüntü bu.

Kabil ATICI

LED ekranın ortak ucunu ne ile sürüyorsun. Eğer doğrudan entegre ile sürüyorsaon çıkış gücü yetmeyebilir.  Transistörle sürmen gerekebilir.
Aynı yekilde akım sınırlama direncini ortak ucu koyduysan bu da sorun olabilir. Özellikle  birden fazla parça yandığı zaman ekran parlıklığı düşer.

Birde segmanları sürdüğün zaman bir sonraki dijite geçmeden parçaları söndür. Böylece karışma sorunları azalır.
Transistörle sürüyorsan transistörün baz ucuna 10K pull up veya pull down (ekran seçilmediği zaman sönmesini sağlayacak direnç koy)
ambar7

My75

#9
Şu sıralama ile olacak,yoksa bir değer ,geçişlerde diğerine yansıma yapar..

Değer yükle
1. çıkış aktif
delayus 100
1. çıkış pasif


Değer yükle
2. çıkış aktif
delayus 100
2. çıkış pasif

Yani bir çıkışı pasif yapmadan sonraki çıkışın değerini yükleme..

Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

cezzza06

Tamamdır arkadaşlar. Devrede display'lere bağlı kondansatörlerden biri eksikmiş. Yani eksik olduğunu biliyordum ama bu kadar sıkıntı oluşturacağını düşünmüyordum. Kaç gündür bu sorunu çözmek için uğraşıyorum, programda denemediğim yol kalmadı ama bakış açısını değiştirmek gerekiyormuş demek ki. Neyse çok şükür sıkıntı yok şimdi. Yardımlarınız için çok teşekkür ederim. Bu arada 4017'nin birden fazla çıkışını aktif etmek isteyen arkadaşlara da umarım kodların bir faydası olur.

My75

Halletmene sevindim,bu arada 4017' nin 1 den fazla çıkışı aktif olmaz,seninki sadece hızlı bir tarama sonucu oluşan gözümüzün algılamadığı bir durumdur..
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

cezzza06

Evet aynen öyle benimki sadece bir göz yanılması ama bu da bir yöntem sonuçta;).Neyse tekrar herkese teşekkürler.

My75

Bu bir yöntem ama sadece ışık kaynakları için geçerli bir yöntem,sonuçta bu bir pwm,sen 6 çıkış kullandığın için %16 pwm ile display leri süyorsun o yüzden bu tarama yöntemi ile kontras oranı düşük olur. :)

Çıkışları diğer türlü kullanmak için diyot,kondansatör gibi elemanlara ihtiyaç duyar..Başkaları yanlış bilmesin diye yazdım.Konu kapanmıştır.
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...