Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

ULN2803 Dot Matrix Sürme

Başlatan ercanatnr, 30 Haziran 2015, 23:07:07

ercanatnr

Merhaba,
Bu aralar Dot Matrix ile ilgileniyorum. Şimdilik sadece Matrix ekranda A harfini göstermekle başladım. Resimde görüldüğü üzere Sütun tarama işlemini ULN2803 ile yapmak istedim ve sorun burda başladı. Şöyleki matrix displayi pic çıkışlarına direk bağladığım zaman devre çalışıyor. Araya ULN2803 eklediğimde ise pic ULN2803 entegresinin girişlerini tarıyor ancak ULN2803 bu tarama olayını çıkışına aktarmıyor ve tüm çıkışlarını (-) ye çekiyor. Umarım sorunumu anlatabilmişimdir.Resimler ve kodlar aşağıdadır.
#include <16F628A.h>
#fuses NOWDT,NOPROTECT,NOLVP,INTRC_IO,NOBROWNOUT,NOMCLR
#use delay(clock=4000000)
#define SH_CP pin_a0
#define DS pin_a1
#define ST_CP pin_a2
#define MR pin_a3
#define OE pin_a4
int i;
int j;

int1 Dizi1[8]={0,0,1,1,1,1,0,0};
int1 Dizi2[8]={0,1,0,0,0,0,1,0};
int1 Dizi3[8]={1,1,0,0,0,0,1,1};
int1 Dizi4[8]={1,1,0,0,0,0,1,1};
int1 Dizi5[8]={1,1,1,1,1,1,1,1};
int1 Dizi6[8]={1,1,0,0,0,0,1,1};
int1 Dizi7[8]={1,1,0,0,0,0,1,1};
int1 Dizi8[8]={1,1,0,0,0,0,1,1};

void Clock()
{
output_high(SH_CP);
output_low(SH_CP);
}
void Kilit()
{
output_high(ST_CP);
output_low(ST_CP);
}
void Reset()
{
output_low(MR);
output_high(MR);
}

void main()
{
#use fast_io(a)
#use fast_io(b)

set_tris_a(0b00000000);
set_tris_b(0b00000000);

output_a(0b00000000);
output_b(0b11111111);

output_low(OE);
Reset();
   
   while(1)
   {
   for(i=1;i<=8;i++)
      {
      switch (i)
      {
      case 1:
      output_b(0b00000001);
      for(j=0;j<=7;j++)
      {
      if(Dizi1[7-j]==0)
      {
      output_low(DS);
      }
      else
      {
      output_high(DS);
      }      
     Clock();
     Kilit(); 
      }
      break;
//////////////////////////////////////////////////
      case 2:
      output_b(0b00000010);
      for(j=0;j<=7;j++)
      {
      if(Dizi2[7-j]==0)
      {
      output_low(DS);
      }
      else
      {
      output_high(DS);
      }      
     Clock();
     Kilit();
      }
      break;
////////////////////////////////////////////////
      case 3:
      output_b(0b00000100);
      for(j=0;j<=7;j++)
      {
      if(Dizi3[7-j]==0)
      {
      output_low(DS);
      }
      else
      {
      output_high(DS);
      }      
     Clock();
     Kilit();
      }
      break;
////////////////////////////////////////////////      
      case 4:
      output_b(0b00001000);
      for(j=0;j<=7;j++)
      {
      if(Dizi4[7-j]==0)
      {
      output_low(DS);
      }
      else
      {
      output_high(DS);
      }      
     Clock();
     Kilit();
      }
      break;
/////////////////////////////////////////////////
      case 5:
      output_b(0b00010000);
      for(j=0;j<=7;j++)
      {
      if(Dizi5[7-j]==0)
      {
      output_low(DS);
      }
      else
      {
      output_high(DS);
      }      
     Clock();
     Kilit();
      }
      break;
/////////////////////////////////////////////////
      case 6:
      output_b(0b00100000);
      for(j=0;j<=7;j++)
      {
      if(Dizi6[7-j]==0)
      {
      output_low(DS);
      }
      else
      {
      output_high(DS);
      }      
     Clock();
     Kilit();
      }
      break;
////////////////////////////////////////////////////
      case 7:
      output_b(0b01000000);
      for(j=0;j<=7;j++)
      {
      if(Dizi7[7-j]==0)
      {
      output_low(DS);
      }
      else
      {
      output_high(DS);
      }      
      Clock();
      Kilit();
      }
      break;
/////////////////////////////////////////////////////////////
      case 8:
      output_b(0b10000000);
      for(j=0;j<=7;j++)
      {
      if(Dizi8[7-j]==0)
      {
      output_low(DS);
      }
      else
      {
      output_high(DS);
      }      
     Clock();
     Kilit();
      }
      break;      
      }
     delay_ms(5);
    }
  }
}


Resimde görüldüğü üzere A harfi oluşması gerekirken ekrana resimdeki şekil çıkıyor. ULN2803 entegresini aradan çıkarırsam devre sağlıklı çalışıyor.

HeCToR

#1
ULN2803 Com pinini yani 10 nolu pini +5V Çekip denedinizmi ?


Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

ercanatnr

Denedim sonuç aynı, ULN 2803 ve dotmatrix i board üzerinde denedim. Simülasyonda ki gibi olmuyor, sanki çalışıyor (pici bağlamadığım için tam emin değilim.). Acaba simülasyon hatası mı yoksa atladığım bilmediğim bir nokta mı var.

proteus59

ULN2803 kullandığın zaman picin çıkışını terslemen gerekiyor yani picten artı çıkıp ULNden eksi çıkması lazım birde similasyonda deniyorsan ULNnin çıkışlarını 10k lık birer dirençle pullup yapman gerekiyor

ercanatnr

Alıntı yapılan: proteus59 - 01 Temmuz 2015, 12:21:03
ULN2803 kullandığın zaman picin çıkışını terslemen gerekiyor yani picten artı çıkıp ULNden eksi çıkması lazım birde similasyonda deniyorsan ULNnin çıkışlarını 10k lık birer dirençle pullup yapman gerekiyor

Picten zaten + geliyor. Ama pullup yapmayı denemedim bu sadece similasyon için değil mi?