Elektronik / Mikrodenetleyici Projeleri/

PIC16F84 ile 15 Adet Deney

Sponsorlu Bağlantılar

PIC16F84 mikrodenetleyici ile yapılmış 15 adet deneyin tümü tek dosyada (pdf) – Emeği geçen kişilere Teşekkürler

PIC 16F84’den Bilgisayara veri gönderme

bilgisayara_veri_gonderme

Bu uygulamada verici kısım PIC16F84, alıcı kısım ise bilgisayardır. Asenkron iletişim kurallarına göre her iki tarafta aynı parametreler kullanılacaktır. Yani iletişim hızı (baud rate), veri uzunluğu, stop bit?i aynı olmalıdır.

TMR0 Kesmesinin Kullanımı

tmr0_kesme_kullanimi

PortB’nin 0. bit’ine bağlı LED’i flash yaptıran program. LED`in yanıp sönme aralıklarındaki gecikmeyi TMR0 sayıcısı yapmaktadır. Bu program dijital çıkış sinyali (kare dalga) üretmek için kullanılmıştır. TMR0?ın sinyal kaynağı olarak dahili komut saykılı kullanılmış ve TMR0 oranı 1/256 seçilmiştir.

Kristal osilatör kullanılan uygulamalarda kesme gecikmesi çok kısa olduğundan LED`in flash yapması görülmeyebilir. Bu durumda RB0 ucuna osilaskop bağlayarak çıkış izlenebilir. Eğer RC osilatör kullanılıyorsa seçilen R ve C değerleri değiştirilip frekans çok düşürülürse LED`in yanıp söndüğü görülür.

TMR0 Kesmesinin Kullanımı (Harici)

tmr0_kesme_kullanimi_harici

TMR0 sayıcısının sinyal kaynağı olarak harici dijital sinyal (RA4/TOCKI ucu) kullanılmasına örnek programdır. Ayrıca TMR0`ın okunabilmesi ve sinyal sayıcı olarak kullanılabilme özelliğini de gösterir. Program, PortA?nın 4. bitine bağlı olan butona basıldığında PortB`deki LED`lerde binary olarak artan sayıları gösterir. RA1 butonuna basınca TMR0 registerini sıfırlar ve saymaya 0`dan itibaren tekrar saymaya başlar.

TMR0 Kesmesinin Kullanımı (Gecikme)

tmr0_kesme_kullanimi_gecikmeli

TMR0 sayıcı kesmesine örnek programdır. PortB`deki LED`lerin binary olarak artan sayıları göstermesini sağlar. LED`lerin sayma aralıklarındaki duruşu için TMR0 sayıcısı kullanılmıştır.

WDT Kesmesinin Kullanımı

wdt_kesme_kullanimi

WDT sayıcı kesmesine örnek programdır. PortB`deki LED`lerin binary olarak artan sayıları göstermesini sağlar. LED?ler sayma devam ederken PortB içerisindeki veri h`FF`e ulaşmadan WDT zaman aşımı sinyali nedeniyle LED`lerin yanışı 0`dan itibaren tekrar başlatılır.

7 Segment ortak katodlu display’de“5”sayısını gösteren program

7_segment_ortak_katot

2 Dijit İleri-Geri Sayıcı

2_dijit_ileri_geri_sayici

0-99 yukarı-aşağı sayıcı RA0 butonuna her basışta yukarı sayar RA1 butonuna sasınca aşağı sayar Yukarı ve aşağı tuşlarına beraber basılırsa yukarı sayar Displayler PortB’ye 7 segment decoder ile bağlanmıştır

4 Dijit İleri-Geri Sayıcı

4_dijit_ileri_geri_sayici

6 Display İle Sabit Yazı Yazma

6_display_sabit_yazi

Bu program taramalı çalışan 6 display üzerinde sabit bir yazıyı yazar.

6 Display İle Kayan Yazı

6_display_kayan_yazi

Bu program taramalı çalışan 6 display üzerinde sabit bir yazıyı kaydırarak yazar. Sıralama d1,d2,d3,d4,d5,d6 Seleçt ucları RA2,RA1,RA0 üzeine ba lanm. 3 to 8 mux ile yapılmaktadır. Multiplexerin Y0 çıkışı boş bırakılmıştır. Diğer uçlar sırayla d1..d6 ya bağlanmış ve Y7 boş bırakılmıştır.

8 Bitlik Veri İle LCD Ekrana Veri Yazmak

8_bitlik_veri_lcd

LCD ekranlar bize birçok harfi, sayıları, sembolleri görüntüleme imkanı verirler. LCD`lerde hane sayıları değişik olabilir. Bir hane 35 nokta içerdiğinden, 7 bölmeli göstergede olduğu gibi bir tarama yaparak 20 haneli bir Dot Matris LCD`yi çalıştırmak için kullanılan mikroişlemcinin görevi sadece LCD`ye veri yazmak olur. Araya diğer işlemler girerse ekrana yazılan veriler hatalı olur.

Bu yüzden LCD`ler için ekranı kontrol edecek ayrı işlemcilere ihtiyaç duyulur. LCD`ler, bilgisayarda kullanılan ekran kartları gibi ekrana yazılan bilgilerin sürekli görünebilmeleri için tarama işlemini yapan entegrelerle birlikte üretilip satılırlar. Bu entegrenin özelliklerini tam olarak bilmek ekranı her yönüyle kontrol etmek manasına gelir. Genelde kullanılan bir LCD sürücü entegresi Hitachi firmasının üretmiş olduğu HD44780 entegresidir. Bu entegrenin kullanıldığı tüm göstergeleri aynı mantıkla kontrol etmek mümkündür. Tek değişiklik LCD?nin kaç satır ve haneden olduğunu bilmektir.

Zamanlayıcı (60-1 saniye ayarlı)

pic16f84a_zamanlayici

60 s süre içerisinde, istenilen süreye ayarlanabilen ve ayarlanan süreden itibaren birer saniye aralıklarla geri sayarak süre tamamlandığında bir zili çalan devre ve programı.

Klavye (Tarama Yöntemi)

pic16f84_klavye_tarama

4×4`lük bir tuş takımı kullanarak tarama yöntemi ile basılan tuş bilgisini PortA`ya bağlı LED`lerde binary olarak gösteren devre ve programı.

Program önce ilk satır (RB0) ve ilk sütundan (RB4) taramaya başlar. Bu satırdaki tuşlar “0”, “1”, “2” ve “3”tür. Sıra ile sütunlar kontrol edilir. “0” sayısını elde etmek için ilk satırı tararken satır sayıcı =0, sütun sayıcı=0 ataması, programda tuş tespitini basitleştirir. 0. sütun basılı değil ise program sütun sayısını bir artırır ve 1. sütuna bakar. Eğer bu sütundaki tuşa basılı ise basılan tuşun tespiti;

tus=satir+sutun
tus=0+1
tus=1

mantığı ile hesaplanır.Program ilk satırı taradığı anda herhangi bir tuşa basılmadıysa row bilgisini bir sola kaydırarak ikinci satırı lojik-0, diğerlerini lojik-1 yapar. Bu satırdaki tuşlar ise “4”, “5”, “6” ve “7”dir. Yani ilk satırdakilerin 4 fazlasıdır. Bu yüzden satır sayıcı register?ının içeriği diğer bir satıra geçildiğinde 4 artırılır ve tarama işlemi 4. satır taranana kadar devam eder. Bir diğer satırdaki rakamları test ederken satır bilgisi 4 fazla olarak başlatılmalıdır.

DAC (Merdiven Direnç Devresi Kullanarak)

pic16f84a_dac

Adım Motor Sürücüsü ( Tek Yönlü)

pic16f84_tek_yon_surucu

Adım Motor Sürücüsü ( Çift Yönlü)

pic16f84_2_yon_surucu

Kaynak: http://www.tmyo.edu.tr/upload/5126pic.pdf – alternatif link: PIC16F84 ile 15 Adet Deney

Dosya indirme LINK listesi (TXT formatında) link-2196.zip şifre-pass: 320volt.com

  • majid

    merci bien

  • Bülent

    :)Emeği geçen herkese çok çok teşekkür ederim

  • murat

    sağol çok işime yaradı

  • veysel

    Merhaba
    bu tarzda basit bir frekans metreye ihtiyacım var.
    yardımcı olabilir misiniz ?

  • brncgl

    iyi günler;
    benim bir koda ihtiyacım var fakat assembly diline hakim olmadığım için bana yardımcı olabilir misiniz?
    : Butona bir kere basıldığında 4 saniyede bir bütün LED’leri yakan, 2.
    basılışta 3 saniyede bire inen, 3. basılışta 2 saniye ve 4. basılışta 1 saniye aralıklı yanan, 5.
    basılışta ise ilk duruma dönen program
    bana yukarıdaki programın assembly kodu lazım yardımcı olursanız çok sevinirim