Not 1: PIC16F628A ile Led On/Off Uygulaması

Yayınlandı: 24 Ağustos 2011 / Microchip PIC Programlama...
Etiketler:, , , , , ,

MikroC, Mikroelektronika  isimli bir Yugoslav firmasının üretmiş olduğu C tabanlı bir derleyicidir.  Bu derleyici Microchip firmasının PIC ailesinden ürünler olan 12 , 16 ve 18 serisi mikrodenetleyiciler için destek vermektedir. Her geçen gün yeni versiyonları çıkmakta  ve desteklediği mikrodenetleyici sayısı artmaktadır. Gerek gelişmiş  kütüphanelerinin olması, gerek iyi hazırlanmış bir arayüze sahip olması bu derleyicinin yeni başlayanlar için ideal bir tercih olmasını sağlamaktadır. Bu demek değil ki MikroC ile profesyonel programlar yazılamaz. MikroC ile cihaz geliştirip piyasaya sunan birçok firma var.

Büyütmek için tıklayın

Mikroelektronika ‘nın sayfasına girip biraz araştırırsanız hem siteyi tanımış olursunuz hem de 2KB sınırlıücretsiz olarak sunulan MikroC derleyicisini bulabilirsiniz. Fakat Mikroelektronika kendi sitesinde MikroC’ nin yeni versiyonu olan MikroC PRO’ yu yayınlamış bulunmakta.  Biz ise eski versiyon MikroC ile çalışacağız. Aslında aralarında dağlar kadar fark yok. Fakat MikroC benim daha çok hoşuma gidiyor.  Zaten birisine alışınca diğerine geçmek te kolay oluyor. Bu yüzden eski MikroC sürümü ile devam edeceğiz. 2KB sınırlı mikroC derleyicisini buradan indirebilirsiniz..

Programın arayüzünü çok detaylı bir şekilde anlatarak vakit kaybetmeyeceğim.  Uygulamalarımızı gerçekleştirirken hangi buton ne işe yarıyor bunları öğreneceğiz zaten.  En iyi öğrenme yolu uygulayarak öğrenme olduğundan hemen ilk uygulamamız için kolları sıvayalım.  Unutmadan da söyleyeyim; ilk uygulamalarımızda PIC16F628A mikrodenetleyicisini kullanacağız. Bu mikrodenetleyici dahili osilatör barındırması, seri iletişim modülüne sahip olması, dahili capture/compare/pwm modülüne sahip olması  gibi bir çok avantajından dolayı, bunlara ek olarak da fiyatının çok yüksek  olmamasından dolayı  çok tercih edilen bir mikrodenetleyicidir.

MikroC’yi bilgisayarımıza kurduğumuza ve işlemcimizi de seçtiğimize göre gelelim ilk programımızı yazmaya.  MikroC’yi çalıştırdıktan sonra yapacağımız ilk şey yeni bir proje dosyası hazırlamaktır. Bunun için “Project” menüsünün altından “New Project” seçeneğine tıklarız. Bu seçeneği seçtiğimiz zaman karşımıza sol tarafta bulunan pencere açılır. Bu pencerede projemizin ismi, nereye kaydedileceği, projemiz hakkında açıklama, kullanacağımız mikrodenetleyici, ve kullanacağımız mikrodenetleyicinin saat frekansı verilerini girmemizi ister.

Büyütmek için tıklayın

Bir üstteki resimden görüleceği üzere ben projenin ismini “Ledonoff”, kaydedileceği yeri masaüstünde oluşturduğum “LED”  klasörü olarak belirlemiş bulunmaktayım. “Description” kısmına ise bilgi girişi yapmamız gerekmiyor. Saat frekansını ise, bu ilk uygulamamızda işlemcimizin içerisinde bulunan osilatörün frekansı olan 4 MHz olarak seçmiş bulunmaktayım.

Bu seçeneklerdeki asıl önemli kısım ise “Device  Flags” olarak görülmekte olan konfigürasyon ayarları. Şimdilik siz de benim yapmış olduğum gibi tüm bu bayrakları kapatabilirsiniz. bunu yapmak için sonunda “OFF” yazanları tikliyoruz. Dahili osilatörü seçmek için ise tek yapmanız gereken benim yandaki resimde yaptığım gibi “INTOSC_OSC_NOCLKOUT” seçeneğini işaretlemek. Bunları yaptıktan sonra kod yazma ekranımıza kavuşacağız ve imleç hazır bir şekilde yanıp sönmeye başlayacak.  Yapacağımız bu ilk uygulamada PIC16F628A mikrodenetleyicisinin “B” portunun tüm pinlerine bağlı ledleri yakıp söndüreceğiz. Şimdi geldik kodlarımızı ekrana arka arkaya dizmeye;

Büyütmek için tıklayın.

Kodlarda dikkat edeceğimiz hususlardan en önemlisi TRIS registerı ile PORT registerının birbirine karıştırılmamasıdır. TRIS registerı bağlı olduğu PORT’un giriş çıkış ayarlarını yapmamızı sağlar. Yan taraftaki resimden de görüleceği üzere TRIS içerisindeki 8 adet bit’in durumlarına göre PORT’un pinleri giriş veya çıkış olur.  Eğer TRIS registerının bir biti “0” ise  o bite bağlı PORT registerının pini çıkış, eğer “1” ise giriş olur . Yani TRISB registerının 0. biti 0 ise, PORTB’nin 0. pini çıkış olarak ayarlanmış olur.Örnek olarak eğer TRISA registerının 2. biti 1 ise PORTA’nın 2. pini giriş olur gibi… Bir diğer önemli husus ise sayıların yazılış biçimleridir. PORTB yi çıkış olarak ayarladıktan sonra 8 adet pininin durumlarını istediğimiz gibi belirleyebiliriz. Yani bu pinlerden hangilerinde 5V olacağını hangilerinde 0V olacağını belirleyebiliriz. Örnek olarak “Portb=0b11110000;” dersek bu PORTB’nin 0. pininden 3. pinine kadar olan pinler 0V seviyesinde 4. pinden 7. pine kadar olanlar ise +5V seviyesinde olurlar. PORTB’yi sıfırlamak içinse “PORTB=0b00000000”  yazabileceğimiz gibi  direkt olarak “PORTB=0” da diyebiliriz. “PORTB=0b00000000;” derken kullandığımız “0b” o sayının binary olduğunu gösterir. “0x” ise sayımızın hexadesimal olacağını belirtir. Fakat 0 değeri hexadesimalde de binary de de desimal sayı sisteminde de aynıdır. “PORTB=5;” demek “PORTB=0b00000101;” demek ile aynı şeydir. Binary sayı sistemleri hakkında bilginiz yok ise bir an önce edinmenizde fayda var ve çok gerekli… aşağıdaki resimde devremizin proteusta çizilen şemasını görüyorsunuz. Şemada dikkat çeken bir ayrıntı mikrodenetleyicinin besleme uçlarının gözükmemesi. ISIS mikrodenetleyiciler gibi entegre kılıftaki bazı elemanların besleme uçlarını gizliyor ve kendisi otomatikmen bağlantıyı arka planda yapıyor. Yani aşağıdaki şema simüle edilmeye hazır. Bir diğer ayrıntı ise Ledler ve uC’nin (mikrodenetleyici) pinleri  arasındaki dirençler.. Bu dirençler ledlerin aşırı akımla bozulmaması için…

 Kodlarımızı yazdıktan sonra sıra geldi derlemeye. Derleme işlemini yapmak için Ctrl+F9 tuşlarına basmamız yeterli. Eğer isterseniz “Project”  menüsünden “Build” seçeneğini seçebileceğinizi gibi kod ekranının üst kısmındaki “Build” butonuna basarak da kodlarımızı derleyebilirsiniz.  Kodlar sorunsuz bir şekilde derlendikten sonra, projemizi kaydettiğimiz klasörün içerisinde oluşan “.hex”  uzantılı dosyamızı görebilirsiniz. Bu dosya yazdığımız kodun makine diline dönüşmüş halini barındırır. İşlemcimiz bu kodları anlayabilir sadece.

Peki derlediğimiz kodları nasıl deneyeceğiz? Bunun için ise Proteus isimli program, bize evimizi dağıtmadan bilgisayarımız üzerinde bir laboratuvar kurmamıza imkan tanıyor. Bu laboratuvarda kuracağımız devrelerin çalışıp çalışmadığını, nasıl çalıştığını görebiliyoruz. Proteus Isıs ve Ares adında iki modülden oluşmakta. Isıs devre çizimi ve simülasyonu modülü iken Ares ise Isıs ile çizdiğimiz devrelerin baskı devrelerinin yapımında kullanılıyor.  Proteusta PIC ile bir simülasyonun nasıl yapılacağını gösteren bir videoyu’da buraya ekliyorum.. Videodaki eleman 8MHz ile çalıştığından Proteusta mikrodenetleyicinin frekansını 8 MHz seçiyor ve kullandığı mikrodenetleyici PIC16F877…

Bu ilk uygulamamıza ait PROTEUS/ISIS çizimini ve mikroC proje dosyalarını buradan indirebilirsiniz.

Sorularınız ve yorumlarınız için ise başlığın yanındaki baloncuğu tıklayabilirsiniz…

yorum
  1. mustafa dedi ki:

    merhabalar 16f84 a da ra4 ü kullanamıyorum neden acaba

    • mikrodunya dedi ki:

      Ra4 pini open collector tipindedir. Bu sebeple bu pini kullanirken + besleme ucundan bu pine 1k degerinde bir direnç baglamalisiniz. Direnç ve pinin birlestigi noktayi diger pinler gibi kullanabilirsiniz.

  2. şehmus dedi ki:

    merhebalar ben bir proje hazırlıyorumda Telefonla uzaktan cihaz kontrolu projesine ait bana PIC16F84A programi lazım Bana Yardımcı olurmusunuz. ?

  3. YoungWolf dedi ki:

    Cennetliksiniz sayın Maytere… Notlarınızı en baştan itibaren sıkı bir takibe aldım ve notlarınızdan notlar aldım. Yeni bir rakip doğuyor size.

  4. Doğan dedi ki:

    Merhaba,

    Device flags kısmı benim kullandığım sürümde yeni proje başlatırken çıkmadı. Program başında kod yazarak kapatmak istediğimiz o özellikleri nasıl kapatırız acaba?

    • mikrodunya dedi ki:

      Yeni proje baslatirken cikmamasi soz konusu degil. Siz gerekli butonlara basmamissinizdir. Project sekmesi altindaki edit kismindan yapabilirsiniz ayarlamalari.

  5. murat dedi ki:

    Merhabalar pic16f628a ile tv ve projeksiyon kumandasının açma kapama tuşunu pic16f628f üzerinden çalıştırmam mümkünmüdür.
    Yardımcı olabilirmisiniz?

  6. murat dedi ki:

    Merhabalar dün yazmış olduğum Pic16f628a ile yapılmış kumanda kopyalama devresi var fakat nedense bi türlü çalıştıramadım devrede kullanılan elemanlar hatalı veya farklı bir sorun mevcut birazda bu konuda pek bilgim yok malesef bulamadım yardımcı olmanız mümkünmüdür?

    Mail olarak gönderebilirim.

    Tşkler.

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