PIC Proje 1 – Led Yakma

Elektronik devrelerde oldukça sık kullanılan PIC mikrodenetleyicisi ile bu yazımızda led yakacağız. Led yakma devreleri elektronik devre kurmak isteyen her kesimden insan için oldukça öğretici ve temel nitelikte bir örnektir.

Bu devremizi kurarken Proteus programının ISIS ortamından ve CCS C derleyicisinden faydalanacağız. Bu örnekte PIC16F877 mikrodenetleyicisini kullanacağız.

Devrenin Oluşturulması

Devremizi oluştururken PIC denetleyicimizin bağlantılarını doğru yapmamız gerek. Kullanmış olduğumuz simülasyon programından dolayı denetleyicimizin 5V besleme gerilimi ve GND bağlantılarını yapmamıza gerek yoktur. Program kendisi yapmaktadır. Lakin gerçek bir devre tasarlarken besleme ve ground hatlarını unutmayın.

Öncelikle denetleyicimizin 13 ve 14 numaralı pinlerinden aşağıdaki şekilde olduğu gibi devremize uygun kristalin uçlarınabağlantı yapmalıyız. Sonrasında kristalin uçları ile GND hattı arasına 22 pF değerinde kondansatörler ekleyerek kristal uçlarındaki gerilimi stabilize etmeliyiz.

1 numaralı pinden ise 5V değerinde Vdd2 ye bir hat çıkarak RESET pininin bağlantılarını yapmalıyız. Buraya kadar olan tüm bağlantılar ve kristalimizin üzerinde yazan 4 Mhz frekans değeri denetleyicimizin üretici firması tarafından biz kullanıcılara beliritlen değer ve şemalardı. Bu aşamaları yaparak denetleyicimizin düzgün çalıması için gerekli tüm koşulları sağladık. Şimdi ise ledimizi devreye eklemeliyiz.

RB0 yazan pinimiz B portuna ait 0 numaralı pinimizdir. Bu pinimize bir tane direnç ile birlikte ledimizi GND hattıyla beraber bağlamalıyız. Buradaki dirençin görevi lede gelecek olan akımı sınırlayarak ledimizi korumaktır.

Devre kurulumunu tamamladıktan sonra geriye kalan tek şey denetleyicimizin içerisine gerekli kodları yazmak.

CCS C Kodu

Yukarıda oluşturduğumuz devre için her yarım saniyede yani 500 ms de bir yanıp sönen bir led kodu yazalım.

#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCDP
#uses delay (clock = 40000000)
#uses fast_io(b)

int main (void)
 { 
    set_tris_b(0b00000001);
    output_b(0x00);   
    
   while (1){
      output_high(pin_b0);
      delay_ms(500);
      output_low(pin_b0);
      delay_ms(500);
   }
   return 0;
 }   

Öncelikle 1. satırda derleyiciye denetleyicimizi tanıttık ve hemen altındaki satırda PIC16F877 denetleyicisinde kullanıp kullanmayacağımız özellikleri belirledik.

3.satırda osilatör frekansımızın 4 Mhz olduğunu belirtirken 4.satırda ise B portunun kullanılacağını derleyiciye bildirmiş olduk.

Sonrasındaki kod bloğunda ise B portunun 0 numaralı pinini çıkış pini olarak tanımlayarak sonsuz döngü içerisinde 500 ms aralıklarla ledimizi yaktık.

Kodumuzun devremizde çalışmış hali hemen aşağıda gif olarak verilmiştir.