PIC 18F458 ile LED Uygulaması

Batuhan Düzgün tarafından yayınlanmıştır 31. December 2012 07:11

Herkese merhaba arkadaşlar bu yazıda sizlere PIC 18F458 ile kayan LED uygulamasından bahsedeceğim. Hazırlayacağım projede 8 adet LED sırasıyla ardışıl şekilde yanıp sönerek döngüsel bir biçimde ilerleyecektir.

Proteus ile Devre Çizimi

İlk olarak Proteus’u açarak yeni bir proje açılır. Ardından aşağıda sayılmış olan malzemeler projeye eklenir.

-          4 adet sarı LED

-          4 adet lacivert LED

-          8 adet 100R direnç

-          1 adet 18F458 PIC çipi

-          2 adet 22 piko farat kondansatör

-          1 adet 4 Mhz kristal

-          1 adet 10R direnç

Devre aşağıdaki gibi çizilir.

 

 

CCS  C  Compiler ile Kodun Yazılması

CCS derleyicisinde kayan LED uygulaması için gerekli kodun yazılması kısmına gelmiş bulunuyoruz.  Hazırlanacak olan program sonsuz bir döngü içinde sürekli çalışacaktır.  Onaltılık sayı sistemi formatında “0x01” değeriyle ilk LED yanacaktır. Diğer 7 LED ise sönük durumda olacaktır. Bir sonraki adımda “0x01” değeri bir sola kaydırılarak “0x02” değeri elde edilir. Bu sefer 2. LED yanar ve diğerleri sönük durumda olur. Bu durum 8 kere sola kaydırma yöntemiyle yapılır. Böylece her LED bir kere yanmış olur. Bir LED parlak olduğu durumda diğerleri sönük durumda olacaktır. Bu şu anlama gelir : 8 bitlik çıkış portu olan PORTB’nin pinlerinden sadece bir tanesine  1  (+5 Volt) değeri ile setlenir, diğer 7 pine 0 (0 Volt) değeri setlenir. Aşağıda kaynak kod verilmiştir.

// 18f458 kütüphanesi include edilir.

#include <18F458.h>

void main()

{

   //flag değeri ile sonsuz döngü kurulur.

   unsigned int flag = 1;

   //PORTB'nin hangi pinin 1 ile setleneceğini belirten sayıcıdır.

   unsigned int counter = 1;

   //Bekletme için kurulan döngünün sayıcısıdır.

   int delayCounter = 1;

   //Başlangıç olarak PORTB'nin ilk ucu aktif edilir.

   unsigned int value = 0x01;

   while(flag == 1)

   {

      //counter değeri 9 değerine ulaşmışsa PORTB'nin bütün pinleri bir kereliğine bile olsa 1 ile setlenmiştir.

      //Yani PORTB üzerindeki 8 adet pin bir döngüyü tamamlamıştır.

      //O halde counter'ı yeniden ilk değerine setlemek gerekir.

      if(counter == 9)

      {

      // sayıcı ve PORTB'ye gönderilecek değer ilk değerlerine setlenirler.

         counter = 1;

         value = 0x01;

      }

      // output_B metodu ile PORTB'nin 8 bitlik çıkışına veri gönderilir.

      output_B(value);

      // Bekletme döngüsü

      while(1)

      {

         if(delayCounter == 150000)

         {

            delayCounter = 1;

            break;

         }

         delayCounter++;

      }

      counter++;

      // bitwise operatörü olan '<<',  'value' değerinin bir sola kaydırılmasını sağlar.

      value = value << 1;

   }

}

 

Proje “Build All” seçeneğiyle derlenir ve oluşan hex dosyası Proteus’taki projeye import edilir. Simülasyon işletildiğinde aşağıda sonuçlar elde edilir. 
 
 

 

Umarım yararlı bir yazı olmuştur. Bir sonraki makalemde görüşmek dileğiyle …

Batuhan Düzgün

Bilgisayar Mühendisi

Endüstri Mühendisi 

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  August 2019  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster