Teknikim

Üye Girişi

PIC Uygulamaları 2-Buton ile Led Yakma
 

Yazan: Tuna BULUT, Tarih: 06-02-2008 20:56

Okunma Sayısı : 1061

Beğenilme : 16

Yayınlama yeri : Dersler, PIC Dersleri


Bu yazımızda PIC 16F628A kullanarak butona basınca yanan, basmayınca sönen LED uygulaması yapacağız.

Kullanılacak Malzemeler

  • 1xPIC16F628A
  • 1x4 Mhz kristal
  • 2x22pf seramik kondansatör
  • 1x100nF seramik kondansatör
  • 1xKırmızı Led(Sarı, yeşil,beyaz veya diğer renkler de olabilir)
  • 2xButon
  • 1x330 ohm direnç
  • 2x100 ohm direnç
  • 2x4.7k direnç
  • 5 V DC kaynak(Batarya, pil, adaptör veya güç kaynağı)

Not: Eğer 9-12 V luk bir kaynak kullanacaksanız bu gerilimi 5 V a düşürebilmek için regülatör(düzenleyici) devresi kullanmanız gerekmektedir.

      Regülatör Devresi

Bu devre 7-20 V arasındaki gerilimi 5 V gerilime dönüştürür.

 

Kullanılacak Malzemeler(Regülatör İçin)

        >>1x7805
        >>1x330uF elektrolitik kondansatör
        >>1x100nF seramik kondansatör

regulator.jpg   7805.gif   16F628A_Pin_Diagram.jpg

        Şekil 1-Regülatör Devresi         Şekil 2-LM780             Şekil 3-PIC16F628A Pin Diyagramı

PIC Devresi

buton_ile_led_yakma.jpg
                                           Şekil 4-PIC Devresi                                                                                              

PIC Assembly Kodu

            ;PIC 16F628A kullanarak Buton ile LED Yakma

            ;Bu kod Tuna Bulut tarafından yazılmıştır.         

            LIST             P=16F628A

            INCLUDE       "P16F628A.INC"

            __CONFIG     _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF

            MOVLW        H'07'

            MOVWF        CMCON                               ;COMPARATOR ÖZELLİĞİ KAPALI VE PORTA I/O İÇİN AKTİF MODDA

            CLRF            PORTB                                ;PORTB Yİ SIFIRLA

                       

            ;GİRİŞ-ÇIKIŞ TANIMLAMALARI

           

            BANKSEL      TRISA                                    ;BANK1 E GEÇİŞ YAP        

            MOVLW       H'FF'  

            MOVWF       TRISA                                   ;PORTA NIN BÜTÜN PİNLERİNİ GİRİŞ YAP     

            CLRF           TRISB                                   ;PORTB NİN BÜTÜN PİNLERİNİ ÇIKIŞ YAP

            BANKSEL      PORTB                                  ;TEKRAR BANK0 A GEÇ

            CLRF           PORTB                                  ;PORTB Yİ SIFIRLA

 

            ;ANA PROGRAM

 

BUTON_KONTROL

            BTFSS         PORTA,0                           ;BUTONU KONTROL ET BASILI DEĞİLSE(1) 1 SONRAKİ KOMUTU ATLA

            GOTO          LED_YAK                           ;LED YAK A GİT

LED_SONDUR

            BCF             PORTB,0                           ;LEDİ SÖNDÜR

            GOTO          BUTON_KONTROL               ;BUTON_KONTROL A GİT

LED_YAK

            BSF             PORTB,0                           ;LED İN BAĞLI OLDUĞU PİNİ 1 YAP

            GOTO           BUTON_KONTROL              ;BUTON_KONTROL A GİT

            END                                                    ;KODUN BİTİMİ

 

Not: Eğer RA6 ve RA7 pinlerini Giriş/Çıkış(I/O) olarak kullanmak istiyorsanız. Harici osilatör kullanmak yerine PIC16F628A'nın içinde bulunan 4 MHz dahili osilatörü kullanabilirsiniz. Bunun için devrede ve kodda birtakım değişiklik yapmanız gerekir: Devrede RA6 ve RA7  pinlerine bağlı bulunan elemanların  yani kristal ve kapasitörlerin bağlantısını kesin ve kodda  _XT_OSC yerine _INTRC_OSC_NOCLKOUT yazın. Ayrıca Reset opsiyonunu kullanmak istemiyor ve bu pini giriş olarak kullanmak istiyorsanız. RA5/MCLR pinine bağlı tüm elemanların ve yolların bağlantısını kesin kısacası bu pini açıkta bırakın ve kodda _MCLRE_ON yerine _MCLRE_OFF yazın. Şunu unutmayın ki RA5 pinini giriş olarak kullanabilirsiniz ama çıkış olarak kullanamazsınız.

Kodun Çalışma Mantığı

Buton açık konumdayken yani butona basılmıyorken akım 5 V luk kaynaktan 4,7kohm ve 100 ohm luk dirençler üzerinden RA0 pinine doğru akar yani bu pin lojik 1 seviyesine çekilir. Eğer butona basılıyorsa akım RA0 pininden toprağa(0) doğru 100 ohm luk direnç ve buton üzerinden akar, yani bu pin lojik 0 seviyesine çekilir. Bu kodda da yaptığımız RA0 pinini sürekli "BTFSS" komutuyla kontrol edip butona basılıyorsa yani RA0 pini 0 sa LED i yakmak, butuna basılmıyorsa yani RA0 girişi 1 se LED i söndürmek.


   
Beğenilme
E-mail olarak gönder
İlgili makaleler
Teknikim'e kaydet

Okuyucu yorumları  RSS feed Yorum
 

Ortalama Üye Değerlendirmesi

   (0 Oylama)

 


Yorumunuzu ekleyin
Sadece kayitli kullanicilar bir Makaleyi yorumlayabilir. Lütfen ücretsiz üye olun veya giriş yapın.

Gönderilen yeni yorum yok



mXcomment 1.0.8 © 2007-2008 - visualclinic.fr
License Creative Commons - Some rights reserved