birden fazla hc595 ile veri gönderme.

Başlatan sawyer, 04 Ekim 2011, 21:02:44

sawyer

Merhaba,
2 veya 3 adet 74hc5965 veri gönderiminde sıkıntı yaşoyprum resimdeki 7segementlere düzgün veri gönderemiyorum..
sıkıntı nedir acaba?
teşekkurler.
#include <16F628.h>

#include <string.h>
#include <stdlib.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B6,rcv=PIN_B7,bits=8,stream=PC)


#define EXP_OUT_ENABLE PIN_A2 //74HC595 ÜZERİNDEKİ ST_CP BACAĞINA BAĞLI
#define EXP_OUT_CLOCK PIN_A1 // 74HC595 ÜZERİNDEKİ SH_CP BACAĞINA BAĞLI
#define EXP_OUT_DO PIN_A0   // 74HC595 ÜZERİNDEKİ DS BACAĞINA BAĞLI
#define NUMBER_OF_74595 1

#include <74595.c>

int CHR=0;
int32 DEGER=0;
void ModemOK1(int Bekleme)
{
       
       char  Gelen[]={0,0,0,0,0};//,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//50 byte
     
       int32 ZamanAsimi=0;
       int i;
      

    for(i=0;i<6;i++)
    {
         while(!kbhit(PC)&&(++ZamanAsimi<Bekleme*50000))
         delay_us(10);
         if(kbhit(PC))
         {
               Gelen[i]=fgetc(PC);               
               //ZamanAsimi=0;

         }
         else
         {

            break;

         }

    }
     DEGER= atoi32(Gelen);
     fprintf(PC,"%S D:%lu\n\r",Gelen,DEGER);
     Delay_ms(500);
    
}









void main()
{


int32 i;
int sayac=0;
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);

   //TODO: User Code
   while(true)
   {
  
    
  /*  for(i=100;i<10000;i++)
    {
      
        fprintf(PC,"S:%lu\r\n",i);
       Delay_ms(500);
       write_expanded_outputs(i);
    }*/
     
      ModemOK1(2);
     
       if(!DEGER==0)
       write_expanded_outputs((char)DEGER);
     
     /* if(!input(pin_a3))
      {
        fprintf(PC,"SAYAC:%d\r\n",sayac);
        DataGoner(sayac);
        sayac++;
        output_high(pin_b3);
    
    
        delay_ms(1000);
        output_low(pin_b3);
        delay_ms(1000);
      }
      
       if(!input(pin_a4))
      {
      
        sayac=0;
      }*/
   
   
   
   
  
  
   }
   

}


esensoy

#define NUMBER_OF_74595 1
satırını 2 yapıp denesene, sonucu da yazarsan sevinirim
En tehlikeli an "zafer" anıdır.

Murat Mert

S.A.
Sn. Arkadaşım Emre arkadaşımızın dediği gibi

#define NUMBER_OF_74595 X
X burada kaç 74595 kullanacağını yazıyor
X=3 ; 3 tane gibi :)
kolay gelsin.
mert07

sawyer

olayı soyle çözdüm,
n tane hc595 için  pic ten ayrı ayrı clock pini çektim ona göre hangi 7s kullanacaksan ona bağlı clock pini kullanıyorum.