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
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ı
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 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 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 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
2 Dijit İleri-Geri Sayıcı
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ı
6 Display İle Sabit Yazı Yazma
Bu program taramalı çalışan 6 display üzerinde sabit bir yazıyı yazar.
6 Display İle Kayan Yazı
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
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ı)
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)
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)
Adım Motor Sürücüsü ( Tek Yönlü)
Adım Motor Sürücüsü ( Çift Yönlü)
Kaynak: http://www.tmyo.edu.tr/upload/5126pic.pdf
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/07/21 Etiketler: display, keypad, lcd devreleri, led uygulamaları, microchip pic projeleri, mikrodenetleyici deneyleri, motor, pic16f84 devreleri, PIC16F84 örnekleri, sürücü, zamanlayıcı
merci bien
:)Emeği geçen herkese çok çok teşekkür ederim
sağol çok işime yaradı
Merhaba
bu tarzda basit bir frekans metreye ihtiyacım var.
yardımcı olabilir misiniz ?
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