E

8x8 dot matrix

Başlatan elektrobi, 09 Ağustos 2013, 20:17:47

elektrobi

Merhabalar
74hc164 ile 8x8 dot matriksi çalıştırmaya çalışıyorum ancak isiste gayet güzel çalışmasına rağmen gerçekte çalışmıyor.
Örneğin ekte gönderdiğim çizimde yarısı yanarken gerçekte çok farklı şeyler çıkıyor. bağlantıları isisteki gibi yaptığıma eminim neden çalışmıyor anlamadım.Kullandığım mikroişlemci 16f877a . Yardımcı olabilirseniz çok çok sevineceğim, çok teşekkürler, herkese iyi çalışmalar :)

#include <sondisplay.h>


   
   //TODO: User Code
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#use delay(clock=4000000)

#define   DATA   pin_d7
#define   CLOK   pin_d6
int i;
int Shdata[8]={0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f};

void HCLK164(int a)
{
switch (a)
  {
  case 0: output_high(DATA);break;
  case 1: output_low(DATA);break;
  case 2: output_low(DATA);break;
  case 3: output_low(DATA);break;
  case 4: output_low(DATA);break;
  case 5: output_low(DATA);break;
  case 6: output_low(DATA);break;
  case 7: output_low(DATA);break;
  }
  output_high(CLOK);
  delay_us(10);
  output_low(CLOK);
}

//Main Program------------------------------------------------------------------
void main() {
setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);

   setup_spi(SPI_SS_DISABLED);
   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);
output_b(0x00);
output_d(0x00);

{
while(1)
for(i=0;i<8;i++)
  {
   HCLK164(i);
   output_b(~Shdata);
   // HCLK164(i); when i put it here and i delete the above one it works half!!!
   delay_us(100);
  }
}
}

Powered by EzPortal