ccs c de 2* 74hc154 ile matris diplay sorunu

Başlatan arfi_ozcn, 27 Aralık 2018, 20:44:09

arfi_ozcn


Arkadaşlar 18F452 ve 2 adet 74hc154 ile kayan yazı çalışması yapıyorum, iki adet 74hc174 entegreyi 1 den 32 ye kadar sayıyor fakat 16. sayımda ekrana görüntü geliyor ve ekranı 2*16 olarak kullanıp 1. dizide yanan lambalar tekrar 16. dizide yanıyor. bunu 32>31>31.....>0 a doğru yürütmek için nerede hata yaptığıma yardımcı olursanız sevinirim.



#include <deneme4.h>

char harf[118]={
0xff,0xff,0xff,0xff,0xff, //
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff, //
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,//Boşluk
0x1,0xF6,0xF6,0xF6,0x1, //'a' harfinin kodları.
0xff,                     //Boşluk
0x0,0xE6,0xD6,0xB6,0x79, //'r' harfinin kodları.
0xff,                     //Boşluk
0x0,0xF6,0xF6,0xF6,0xFE, //'f' harfinin kodları.
0xff,                     //Boşluk
0x7B,0x2,0x7B, //'i' harfinin kodları.
0xff,0xff,0xff,0xff,                     //Boşluk
0x87,0x7A,0x7B,0x7A,0x87,
0xff,                     //Boşluk
0x3E,0x5E,0x66,0x7A,0x7C,
0xff,                     //Boşluk
0x81,0x7E,0x7E,0x7E,0xBD,
0xff,                     //Boşluk
0x1,0xF6,0xF6,0xF6,0x1,
0xff,                     //Boşluk
0x0,0xF9,0xE7,0x9F,0x0,
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff, //
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,
};
       //int sira [32]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f};
char dizi[64];
char j=0,a=32,h,k,z;
signed char i=0;   //signed char

//******************************************************************
//******************************************************************

void goster()
{
set_tris_b(0x00);
                //cmcon=7
 set_tris_d(0x00);
 output_b(0xff);
for(k=0;k<2;k++) //Hız ayarı (Düşürdükçe hızlanır)

          for(z=1;z<3;z++)
                {
                 for(h=0;h<16;h++)
                                 {
                                  output_b(0x00);  // Düzgün gözükmesi için sütunu söndürmek gerekiyor. 7 yüklememin sebebi tüm sütunları söndürmek.
                                  output_d(dizi[h]);// Sırası ile harf'in sütun sütun kodları PORTB'ye yükleniyor.
                                  output_b(h);    //PORTA'da hangi sütunun aktif edileceği saydırılıyor.
                                  output_a(z);
                                  delay_us(100);  //Ledlerin  belli bir süre yanması sağlanıyor.
                                 }
                }
}

//******************************************************************
//******************************************************************

void main()
{
 set_tris_b(0x00);
                //cmcon=7
 set_tris_a(0x00);
 output_b(0xff);
 
 while(true)
         {
         
          {
          for(i=16;i>=0;i--) //harf katarını dizi katarına aktarmak için kullanılan döngü..
                           { // Her seferinde dizi katarının değişkenlerini bir sola kaydırarak aktarır.
                            dizi[i]=harf[a-j];
                            j++;
                           }
          goster();
          a++;
          j=0;
          if(a==118)a=32; //eğer a değeri "harf" katarının boyunu aşmışsa a değerini 14 yap.
         }
         }      
}


//8x8 ters
//A = 0x1,0xF6,0xF6,0xF6,0x1,
//B = 0x0,0x76,0x76,0x76,0x89,
//C = 0x81,0x7E,0x7E,0x7E,0xBD,
//D = 0x0,0x7E,0x7E,0xBD,0xC3,
//E = 0x0,0x76,0x76,0x76,0x7E,
//F = 0x0,0xF6,0xF6,0xF6,0xFE,
//G = 0x81,0x7E,0x6E,0x6E,0x8D,
//H = 0x0,0xF7,0xF7,0xF7,0x0,
//I = 0x7E,0x0,0x7E,
//İ = 0x7B,0x2,0x7B,
//J = 0xBF,0x7E,0x80,0xFE,
//K = 0x0,0xE7,0xDB,0xBD,0x7E,
//L = 0x0,0x7F,0x7F,0x7F,
//M = 0x0,0xFD,0xFB,0xFD,0x0,
//N = 0x0,0xF9,0xE7,0x9F,0x0,
//O = 0x81,0x7E,0x7E,0x7E,0x81,
//Ö = 0x87,0x7A,0x7B,0x7A,0x87,
//P = 0x0,0xEE,0xEE,0xEE,0xF1,
//R = 0x0,0xE6,0xD6,0xB6,0x79,
//S = 0xB9,0x76,0x6E,0x6E,0x9D,
//Ş = 0xD9,0xB6,0x36,0xB6,0xCD,
//T = 0xFE,0xFE,0x0,0xFE,0xFE,
//U = 0x80,0x7F,0x7F,0x7F,0x80,
//Ü = 0x83,0x7E,0x7F,0x7E,0x83,
//V = 0xF0,0xCF,0x3F,0xCF,0xF0,
//Y = 0xFE,0xFD,0x3,0xFD,0xFE,
//Z = 0x3E,0x5E,0x66,0x7A,0x7C,
//X = 0x7E,0x99,0xE7,0x99,0x7E,
//W = 0x80,0x7F,0x81,0x7F,0x80,