pcbway

4 dijit display sayıcı ekran sönük hanelerin yanması

Başlatan darkten, 16 Mayıs 2013, 13:53:50

darkten

ACİLL YARDIM!!!

aşaıdaki program çalıştığında ortak katot display ekran da sayaç sayma esnasında ekranda aktif olmayan segmentlerde %50 civarında yanma aktif olma var ve engelleyemedik sebebini bilen arkadaşlar var ise burada programı düzenleyip yeniden burada paylaşabilir mi veya sebep nedir??

şimdiden teşekkürler





#include <16F628A.h>
#FUSES WDT,INTRC_IO, NOMCLR, NOBROWNOUT, NOLVP,nocpd,noprotect
#use delay(clock=4000000,restart_wdt)


#include <degiskenler.c>
#include <display.c>
#include <displaygoster.c>

#int_timer1
void timer1_isr(void)
   {

      if (timer1sayaci>=3) {timer1sayaci=0;}
      timer1sayaci++;
       if (timer1sayaci==1)
            {
               output_low(disp1);output_low(disp2);
               output_low(disp3);output_high(disp4);
               displaybirler(sayac);
            }

         else if (timer1sayaci==2)
            {
               output_low(disp1);output_low(disp2);
               output_high(disp3);output_low(disp4);
               displayonlar(sayac);
            }

         else if (timer1sayaci==3)
            {
               output_low(disp1);output_high(disp2);
               output_low(disp3);output_low(disp4);
               displayyuzler(sayac);
            }
            /*
         else if (timer1sayaci==4)
            {
               output_high(disp1);output_low(disp2);
               output_low(disp3);output_low(disp4);
               dort();
              // displayyuzler(sayac);
            }
            */
      set_timer1(65536);
   }




void main()
{
   set_tris_b(0b00000011);
   setup_oscillator(osc_4MHZ);
   setup_wdt(wdt_576ms);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   enable_interrupts(INT_timer1);
   disable_interrupts(INT_EXT);
   enable_interrupts(GLOBAL);
   set_timer1(65536);
   delay_ms(900);

   sayac=make16(read_eeprom(11),read_eeprom(10));

   while(1)
      {
         enable_interrupts(INT_timer1);
         enable_interrupts(GLOBAL);

         restart_wdt();
         if (!input(ButonArti) && !ButonBirakArti) {sayac++;ButonBirakArti=1;delay_ms(50);}
         else if (input(ButonArti)) {ButonBirakArti=0;}
         if (!input(ButonEksi) && !ButonBirakEksi) {sayac--;ButonBirakEksi=1;delay_ms(50);}
         else if (input(ButonEksi)) {ButonBirakEksi=0;}

          if (eskisayac!=sayac) {write_eeprom(10,make8(sayac,0));write_eeprom(11,make8(sayac,1));}
          eskisayac=sayac;

         if (!input(ButonReset)) {write_eeprom(10,0);write_eeprom(11,0);sayac=0;}

         if (sayac<0) sayac=0;
         if (sayac>999) sayac=0;
      }



}



Adnancoskun

çıkışlar ile GND arasına 470 ohm direnç koyarak denediniz mi?
Tanrı Türk'ü Korusun ve Yüceltsin.

Yusuf usta

470 değil de 1k direnç uygun olabilir sanırım. çıkışa 5v gelince 470 ohm yük çekebilir. fakat çıkışta boş segmente normalde sinyal gelmez ki, yazılımdan düzeltilmesi gerekiyor gibi geldi bana.
Mühendislik Diplomayla olmaz. İnsanı adam eden, bilgi değil görgüdür.

kudretuzuner

Merhaba,
Şemayı görmedik ama,her segmentin beslemesini PIC\'in pinlerinden izole etmek gerekir diye düşünüyorum.
Ayrıca display segmentlerinin voltaj ve akım ayarları da datasına göre olmalıdır. Bu yazdıklarıma dikkat edilirse sorunsuz çalışacağı kanaatindeyim. Not:Şema olursa daha sağlıklı problem aranır.

darkten

İlginizden dolayı teşekür ederim devre şemasını ve kodlarını isis dosyasını eke rar olarak koydum . şimdiden teşekkürler.


darkten


darkten

devre nin çalışma sırasındaki fotografınıda koydum aşağıdaki ekde ekranda 12 yazıyor

kudretuzuner

Merhaba,
İsis devresi sağlıklı çalışıyor mu?Düzgün çalışıyor ise yazılımda sorun yok demektir.isiste de problem varsa yazılımı tekrar ele almak lazım.Fiziksel olarak çalıştırmada problem varsa.....
1-Yazılımdaki multiplex kesmelerini yeniden ayarlamak lazım.(isis bazı hataları görmezden gelebilir)
2-Montaj hatası olabilir gördüğüm kadarı ile oldukça karmaşık bir montajı var.
 

mhoca

Taramanız çok kısa zamanda olduğundan olabilir. Her displey için en az 5ms bekleme yapmakta yarar var. İyi çalışmalar.

darkten

Alıntı yapılan: kudretuzuner - 23 Mayıs 2013, 12:59:50Merhaba,
İsis devresi sağlıklı çalışıyor mu?Düzgün çalışıyor ise yazılımda sorun yok demektir.isiste de problem varsa yazılımı tekrar ele almak lazım.Fiziksel olarak çalıştırmada problem varsa.....
1-Yazılımdaki multiplex kesmelerini yeniden ayarlamak lazım.(isis bazı hataları görmezden gelebilir)
2-Montaj hatası olabilir gördüğüm kadarı ile oldukça karmaşık bir montajı var.
 


hayır isis devresinde de doğru çalışmıyor 2. dijitde tek sıfır yanıyor gözüküyor isisde bekleme süresini ve set timer süresini değiştirmek sureti ile yazılımda küçük değişiklikler yapdım ama sorun düzelmedi.ilk başlangıçda devre saymaya başlamadan ekranda yazan sıfırlarda bir problem yok üç sıfır gayet düzgün yanıyor

darkten

devre sayma ya başladığında ekranda karışma başlıyor

kudretuzuner

24 Mayıs 2013, 16:33:17 #11 Son düzenlenme: 25 Mayıs 2013, 23:27:25 kudretuzuner
Merhaba,
İsiste doğru çalışmadan baskı devre yapmayınız.Yazılım dilini bilmediğim için yardımcı olamıyorum.

mhoca

Taramaya ayırdığınız  beklemeyi göremedim. Gerçi yazdığınız programı pek bilmiyorum ama. Bekleme yapmanız gerekir.