74HC154 Entegresi ile LED Animasyonu

74HC154 entegresi led sürme, dotmatrix led sürme vb. elektroknonik devrelerde kulllanılan 4’ten 16’ya kod çözücü entegredir.  Bu uygulamamızda bu entegreyle led animasyonu devresi yapacağız. Bu uygulamada INT kesmesi ve PORTB Değişiklik kesmesi kullanılmıştır.

74HC154 entegresi  fonksiyon diyagramı aşağıda gösterilmiştir.

74hc154fonksion

Entegrenin çalışmasını kısaca açıklayalım;

E0 ve E1 (1.ve 2. Çıkışlara müsade et) GND’ye bağlanır. Adres pinlerindeki (A0,A1,A2,A3) binary değerinin  gösterdiği çıkış Lojik “0”, diğer çıkışlar Lojik “1” olur. Örnek verecek olursak A3=0, A2=0, A1=1, A0=1 olduğunda Y3 “L” , diğer çıkışlar “H” olur.

Daha teferruatlı bilgi için: http://www.nxp.com/documents/data_sheet/74HC_HCT154.pdf

Paket olarak piyasada  DIP24 ve DIP24NAR (dar tip) bulunmaktadır.

Devre şekli aşağıda gösterilmiştir.

LedAnimasyon_74HC154

Devrenin çalışması:

Devreye elektrik verildiğinde ledler D0’dan itibaren D15 doğru kayarak yanar. ART ve EKS butonları ledlerin yanma sürelerini değiştirir. Bu süre 20ms ile 5sn arasında değiştirilebilir.  S1 butonu ile led animasyon stili değiştirilir. Toplam 5 tane stil mevcuttur.  RST butonu sistemi resetler (yeniden başlatır).

unsigned char count=1, i, j, k, count_1;
unsigned int sure=500;
//--------------------------------------------------
void init()
{
 CMCON=7; // PORTA dijital
 TRISA=0; // PORTA çıkış
 TRISB=0b00110001; // PORTB 0.4.5. pinler giriş diğerleri çıkış
 INTCON.INTE=1; // INT kesmesine izin ver
 INTCON.RBIE=1; // Rb Change kesmesine izin ver
 INTCON.GIE=1; // Bütün kesmelere izin ver
 OPTION_REG.INTEDG=0;// INT kesmesi düşen kenarda oluşşun
 OPTION_REG.F7=0; // PORTB Dahili pull-up aktif
}
//--------------------------------------------------
void stil_1()
{
 count_1=count;
 for(i=0;i<=15;i++)
 {
   PORTA=i;
   if(count!=count_1) break;
   vdelay_ms(sure);
 }
}
//--------------------------------------------------
void stil_2()
{
 count_1=count;
 for(i=16;i>0;i--)
 {
   PORTA=i;
   if(count!=count_1) break;
   vdelay_ms(sure);
 }
}
//--------------------------------------------------
void stil_3()
{
 count_1=count;
 for(i=0;i<=15;i++)
 {
   PORTA=7-i;
   vdelay_ms(sure);
   PORTA=8+i;
   if(count!=count_1) break;
   vdelay_ms(sure);
 }
}
//--------------------------------------------------
void stil_4()
{
 count_1=count;
 for(i=0;i<=15;i++)
 {
   PORTA=i;
   vdelay_ms(sure);
   PORTA=15-i;
   if(count!=count_1) break;
   vdelay_ms(sure);
 }
}
//--------------------------------------------------
void stil_5()
{
 count_1=count;
 for(i=0;i<=15;i++)
 {
   i=i++;
   PORTA=i;
   if(count!=count_1) break;
   vdelay_ms(sure);
 }
}
//--------------------------------------------------
void interrupt() // kesme fonksiyonu
{
 if(INTCON.INTF) // eğer INT kesmesi (RB0) oluşmuşsa;
 {
   INTCON.INTF=0; // INT kesme bayrağını sıfırla
   count++; // count değişkenini bir arttır
   if(count>5) count=1; // eğer count 5'ten büyükse 1 yap
 }
 if(INTCON.RBIF) // Eğer RB change kesmesi olmuşsa;
 {
   INTCON.RBIF=0; // RB Change kesme bayrağını temizle
   if((PORTB.B4==0)&&(sure<5000)) sure=sure+20;
   // eğer PORTB'nin 4. pini 0 olmuşsa ve sure 5000 ms küçükse (ART) sureyi 20 arttır
   if((PORTB.B5==0)&&(sure>20)) sure=sure-20;
   // eğer PORTB'nin 5. pini 0 olmuşsa ve sure 20 den büyükse (EKS) sureyi 20 azalt
 }
}
//--------------------------------------------------
void main()
{
 init();
 do
 {
 switch(count)
 {
   case 1: stil_1(); break;
   case 2: stil_2(); break;
   case 3: stil_3(); break;
   case 4: stil_4(); break;
   case 5: stil_5(); break;
 }
 }while(1);
}

Projeye ait dosyalara buradan erişebilirsiniz.

Devrenin baskıdevresi aşağıdadır.

LedAnimasyon_74HC154_PCB
Projenin similasyon görüntüsü aşağıdadır.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s