Elektronik / Mikrodenetleyici Projeleri/

PIC16F84 ile LED Yakıp Söndürme

Sponsorlu Bağlantılar

Bu projede, PIC16F84 mikrokontrolörün PORTB bit 0 ına (RB0) bir LED (Işık yayan diyot) bağlanmıştır. Projede bu LED 250 milisaniye aralıklarla yakılıp söndürülmektedir.

Donanım:

Projenin devresi Şekil 5.1 de verilmiştir. Mikrokontrolör 4MHz bir kristal ile çalıştırılmıştır. RB0 portuna (6. bacak) bir direnç ve bir LED bağlanmıştır.

Normal olarak standard kırmızı bir LED 8-10 mA civarında akım çekmekte ve 2V kadar bir gerilim ile çalışmaktadır. Bu durumda, port çıkışındaki gerilimin 5V olduğunu kabul edersek, istenilen direncin değeri şu şekilde hesaplanabilir:

R = (5V – 2V)/10mA = 0.3 K

En yakın direnç olarak 330 ohm seçebiliriz. Akımın çok küçük olmasından dolayı 0.125W küçük bir direnç seçilebilir.

Piyasada çok çeşitli renk ve parlaklıkta LED bulmak mümkündür. Örneğin, kırmızı, yeşil, turuncu, ve beyaz LED’ler yaygın olarak kullanılmaktadır. Ayni zamanda, 30 mA kadar akım çeken ve oldukça parlak olan LED’ler bulmak da mümkündir. Bazı LED’ler içerisinde yarı iletken direnç olup dıştan herhangi bir direnç bağlamaya gerek yoktur. LED’leri çoklu paketler şeklinde bulmak da mümkündür. Örneğin, 8 veya 10 tane küçük LED ihtiva eden çok bacaklı parçalar bulabiliriz.

şemada görüldüğü gibi mikrokontrolörün saatı iki tane kapasitör ve bir kristalle sağlanmıştır. Reset için ise 4.7K değerinde bir direnç kullanılmıştır.

pic_led_yak

Akış Şeması:

Yazılım:


/*--------------------------------------------------------------------
*
* 	LED YAKIP SONDURME PROJESI
*	===========================
*
* Bu projede PIC16F84 mikrokontrolor kullanilmis ve
* mikrokontrolor 4MHz kristal ile calistirilmistir.
*
* Standard bir LED mikrokontrolorun RB0 bacagina
* baglanmistir.
*
* LED 250 milisaniye araliklarla yanip sonmektedir.
*
* Yazan: Dogan Ibrahim
* Tarih:   Mart 2003
* Dosya: PROJE1.C
*--------------------------------------------------------------------
*/
#include <pic.h>
#include <delay.c>

main(void)
{
TRISB = 0;			// PORTB bitleri cikis yap

for(;;)				//sonsuz dongu
{
RB0 = 0;		// LED OFF
DelayMs(250);		//250ms bekle
RB0 = 1;		//LED ON
DelayMs(250);		//250ms bekle
}
}

Yazılım Açıklaması:

Program başındaki açıklamalardan sonra TRISB komutu kullanılarak PORTB pinleri hep çıkış olarak tanımlanmıştır. Daha sonra for komutu kullanılarak sonsuz bir döngü yapılmıştır. Bu döngü içerisinde LED yakılıp söndürülmektedir. Her yakıp söndürme arasında ise 250 milisaniye kadar bir gecikme uygulanmıştır (Gecikmenin çalışması için delay.c dosyasini samples folderinde bulunan delay folderinden alıp include folderine kopyalamayı unutmayınız).

Yazılım program bellekte toplam 29 word ve RAM bellekte ise 3 bayt tutmaktadır.

Donanım ve yazılım hazırlandıktan sonra yazılımın makine dili dosyasını (Bu örnekte PROJE1.HEX) PIC programlayıcı kartınızı kullanarak PIC16F84 mikrokontrolöre yükleyiniz ve projeyi deneyiniz. Mikrokontrolörü programlarken konfigürasyon bitlerini doğru seçmeyi unutmayınız. Burada Bekçi Köpek (watchdog) OFF yapılmalı ve saat kristal (XT) olarak seçilmelidir.

Parça Listesi:

PIC16F84 mikrokontrolör
2 x 22pF kapasitör
4MHz kristal
4.7K direnç (0.25W)
330 ohm direnç (0.25W)
LED

Kaynak: http://www.yayinevi.bilesim.com.tr/images/PROJE5-1.doc Emeği geçen kişilere Teşekkürler

  • FxDev

    toggle kullanılsa daha kolay olurmuş…

  • Mehmet Mert Yıldıran

    pic.h
    delay.c

    dosyalarını nereden edinebiliriz ? Paylaşabilir misiniz ?

    • derleyici programın içinde olması lazım özel dosya değiller

  • Yunus

    bende de “can’t open include file ‘pic.h’ ” diye uyarı verdi