Elektronik / Mikrodenetleyici Projeleri/

2X16 Lcd Göstergeli Dijital Saat ve Termometre

Sponsorlu Bağlantılar

Hazırlayan: Özlem TUNÇ ve Esra MUTLUAY Projenin Dosyaları Emeği geçen Kişilere Teşekkürler

Genel Bilgi: PIC üretilmiş bulunan mikroişlemcilerden farklı olarak basite indirgenmiş fakat hızı ve etkisi düşürülmemiş olan bir mikro chiptir. MICROCHIP firması tarafından uygulama formları için üretilmiştir. Basit yonga seti, uygun portları ve de opsiyon el işlevleri bakımından hedef kontrolü için bulunmaz bir mikroişlemcidir PIC. Yapısal olarak risk işlemcileri çağrıştırmakla beraber geliştirilmiş komut yapısı sayesinde emsallerinden çok daha çabuk ve hızlı programlanabilir. 8-16 bitlik işlemcilerdir. 20 MHZ kadar çıkabilirler.

Bazı tiplerinde üzerindeki portlar ADC ve DAC görevini tek Word üzerinden görebilmektedirler. Rakiplerine göre hızları ve çalışma ortamları daha esnek ve kararlıdır. 2.5V-6V arasında çalışabilirler ve son olarak cazip fiyatları bu tip ihtiyaçları tam olarak karşılamaktadır. (Ayrıca en son teknoloji her zaman için bir öncekinden daha da avantaj ve yenilik içerir.)

Bizim seçtiğimiz model PIC16 serisidir. Bu serideki işlemcilerde EEprom chip içerisinde mevcut olduğundan ekstradan eprom bağlamak ve isletmek için port ayirmak gerekmemektedir. Toplam 34 adet komut seti olan pic aşağıdaki tabloda temel kullanımları ve yapısal tasvirleri altında ise komutların örnekli anlatımları yer almaktadır;

PIC16F8XX Komut Seti
pic16f8xx-komut-seti-pic16f8xx-instruction-set

Atama Komutları

MOVLW Belirtilen Operant W yazmacına konulur. Operant 0-7F arasında olmalıdır
Örnek:movlw H’22’
movlw B’01010101′

MOVWF Belirtilen hedefe W yazmacı içerisindeki bilgiyi aktarır.
Örnek: Movwf Sayi1

MOVF Bir operantın içerisindeki bilgiyi W yazmacına aktarır.
Örnek: Movf Sayi1,0

CLRF Temel olarak bir ifadeyi temizler.
Örnek: Clrf Sayi1

CLRW W yazmacını temizler.

BSF Operantın belirtilen bitini set yani 1 yapar.
Örnek: BSF Sayi1,0
BSF Sayi1,7
BSF porta,0

BCF Operantın belirtilen bitini reset yani 0 yapar.
Örnek: BCF Sayi1,0
BCF Sayi1,6
BCF Porta,0

Aritmetik İşlemler

INCF Kaynak gösterilen ifadeyi 1 arttırarak sonucu seçilen hedefe aktarır.
Örnek: IncfSayi1,0
IncfSayi1,1

DECF Kaynak gösterilen ifadeyi 1 azaltarak sonucu seçilen hedefe aktarır.
Örnek: DecfSayi1,0
DecfSayi1,1

ADDWF W yazmacıyla Kaynak Bilgiyi toplar sonucu belirtilen konuma göre aktarır.
Örnek: movlw H’10’
movwf sayi1

movlw H’10’

Addwf sayi1,1{20 hex sonucu sayi1’e aktarılır.}
SUBWF Verilen Operant dan W registerini çıkarıp sonucu istenilen hedefe yükler.
Örnek: Movlw H’10’
Movwf Sayi1
Movlw H’08’

Subwf Sayi1,1{08 sonucu sayi1’e aktarılır.}
XORWF W yazmacının değeriyle verilen değişken içeriğini Özel Veya işlemini uygulayarak sonucu istenen hedefe aktarır.
Örnek: Movlw H’01’
Movwf Sayi1
Xorwf Sayi1,0

Karşılaştırma Komutları

BTFSC Pic serisinin temel karsılaştırma komutudur. Belirtilen ifadenin bir bitini karşılaştırır, eğer bit sıfırsa kendinden iki sonrakini değilse sonrakini işleme koyar.
Örnek: Btfsc Sayi1,0
Clrf Sayi1

Nop {Eğer sayının birinci biti bir ise sayıyı sıfırlar}


BTFSS Pic serisinin temel karşılaştırma komutudur. Belirtilen ifadenin bir bitini karşılaştırır, eğer bit sıfırsa kendinden iki sonrakini değilse sonrakini işleme koyar.

Örnek: Btfss Sayi1,0
Goto Atla
Clrf Sayi1{Eğer sayının birinci biti bir ise sayıyı sıfırlar}
Atla
Nop

Eşit mi karsılaştırması
Temel olarak pic programlama dilinde eşit mi ve farklımı diye tanımlanabilecek bir komut olmamasına rağmen temel bayraklar ayni PC makine dilindeki gibi kullanılabilir özellikle carry(elde) ve zero(sifir) bayrakları bu is için uygundur.
Örnek: Movlw H’11’
Xorwf Sayi1,0
Btfsc Status,Z
Goto Eşit
Nop
Eşit

Bitsel İşlemler

RLFİfadeyi sol tarafa doğru bir bit çevirir.

RRFİfadeyi sağ tarafa doğru bir bit çevirir.

Genel İşlevli Komutlar

NOP Hiç birşey yapmaz bir cycle komut ifadesidir.

GOTO Kendinden sonra gelen satıra koşulsuz atlama yapar.
CALL Kendinden sonra çağırılan program parçacığını işletip RETURN görünce CALL satırının bir alt satırını işleme koyar.

Yapısal ve komutsal olarak pici tanıdıktan sonra devre içinde çalışmasını ardından da programlayıcıyı tasvirle yelim;
Pic RB6 port ucundan Clock ve RB7 ucundan da data in/out olarak programa uygulanmaktadır fakat ilk olarak pic in programlama moduna geçmesi için mutlaka +5 voltun Vdd ucundan GND ise Vss ucuna verilmesi ve de MCLR ucuna en az 7 Voltluk bir gerilim uygulanarak işleme başlanması gerekir. Eğer bu uçlardan biri istenilen şarta uygun değilse pic programlama moduna geçmez ve yazma hatası alırız. Com portunun 4 numaralı ucu yani DTR RB7 ucundan girilen bitsel verileri taşımaktadır +12 ile -12 volt arasında bitsel değişiklik yaşatılan DTR ucu max232 entegresi ile TTL standartları içerisinde 0 ile +5 volt arasında bir veriye dönüşmektedir.

Data out yani RB7 out ise com portunun 8 numaralı bacağı olan CTS ucu ile +12/-12 volt olarak geri seri porta verilmektedir. Clock olarak ise RTS com portunda 7 numaralı uç kullanılmaktadır. 3 ana uç sayesinde programlama gerçekleşmektedir. Önemli olan burada 12 volt sınırları yani RS sınırlarının TTL sınırlarına çekilmesi veya dönüştürülmesi işleminin gerilim bölücü bir devreyle değil de bir entegre ile yapılmasıdır. Bu sayede COM PORTUNU yakmamız zorlaşmaktadır ama unutulmamalıdır ki imkansız değildir.

TX yani com portunun 3 numaralı tanıdık ucu ise bizlere +12 vererek MCLR ucunu beslemekle birlikte 7805 regülatörü sayesinde +5 luk beslememizi elde etmekteyiz. Com portunun 5 numaralı GND ucundan ground’umuzu alarak devremizi tamamlıyoruz. Bu programlayıcının en büyük yararı basit kullanımı ve otomatik gerilim kontrolüdür. Pic gerilim uygulanırken programlayıcıdan sökülüp takılırsa bozulabilir ama bu programlayıcı gerilimi programlama bitince kestiğinden sorun ortadan kalkmaktadır.

TERMOMETRELİ – DİJİTAL SAAT

Kullanılan Malzemeler:

16F877 Pic
20 Mhz Osilatör
LM35 Isı Algılayıcı
2X16 LCD
Regülatör
Opamp
kondansatör (1 mikro farat)
mercimek kondansatör

PIC (16f877) : PIC(Çevresel Üniteleri Denetleyici Arabirim)Kullanıldığı her alana en az ek donanımla adapte olabilecek giriş çıkış portlarına sahip bir “microdenetleyici” ünitesidir.PIC mikrodenetleyicileri toplam 33 komut kullanarak programlayabilmektedir.

4MHz kristal osilatör : Başlangıçta belirlenen frekansı sürdürme konusunda büyük bir kararlılığa sahip daha çok haberleşmede kullanılan alıcı ve vericiler için kullanılır.

Kondansatör (27pF * 2) :Aralarında iki yalıtkan bulunan iki metal levhadan yapılmıştır.

Kondansatörün kapasitesi: C=S*k/d’ dir

S=plakanın alanı(m2)
d=plakalar arası uzaklık(m)
k=dielektrik katsayısı
C=kondansatör kapasitesi(F)

Buton (4 adet) :Devrede dakikayı ve saati azaltıp arttırarak saat ayarını yapmaya yarar.

10k * 46

Display (6 adet) : Çıkışların ekranda görünmesini sağlayan gösterge.

Led (8 adet) :iletim yönünde ışık yayan yarı iletken diyotlara LED denir.Led elektrik enerjisini ışık enerjisine çeviren bir yapıya sahiptir.Led metal ve metal oksit levhalar arasına yerleştirilen yüzey birleşmeli P ve N yarı iletkenlerden meydana gelmiştir.

Kırmızı led :1.5 V
Sarı led :1.8 V
Yeşil led :2.2 V’ ta çalışır.

7447 IC entegre ( 6 adet) : Bir BCD-yedi parçalı kod çözücüdür.entegrede BCD rakamı için 4 giriş vardır.4 bitlik BCD 7 parçalı bir koda dönüştürülür.7447 ‘nin çıkışları display’in girişlerine uygulanarak çalıştırılır.

PTC(pozitif Katsayılı Termistörler-110) :Direnci ısı ile doğru orantılı olarak artan dirençlere PTC denir.Isı arttıkça direnç değeri artar, ısı azaldıkça direnç değeri azalır.

Devrenin Çalışma Prensibi : LM35 national firmasının ürettiği ve piyasada rahatça bulunan bir ısı sensörüdür. LM35 çıkışında sıcaklığa bağlı olarak değişen lineer bir gerilim üretir. Bu gerilim 10mv/C şeklinde değişir. Yani sıcaklığın arttığı her derece için gerilim 10 mili volt artar. LM35 çıkışını bir A/D dönüştürücüye verip bu voltajı anlık okuyarak ve bir LCD göstergede göstererek termometremizi yaparız LM35 her derece için 10 mili voltluk artışla sonucu voltaj cinsinden ifade eder.

PIC16F877’nin üstünlüğü burada A/D dönüştürücüsünde kendini gösteriyor. PIC16F877 10 bitlik bir A/D ‘ye sahip.10 bit , 5 Volt / 1024 = 0,00485 volt yani yaklaşık 5 milivoltluk bir hassasiyet demektir. LM35, 10 milivoltluk adımlarla gittiğine göre biz 0.5 derece hassasiyeti kolayca elde ederiz.

Bu nedenden ötürü PIC16C71 veya 8 bitlik A/D’ler lm35 ile direkt kullanıma uygun değildir. Eğer bir Opamp ile LM35 voltajını 10 veya 100 gibi bir kat sayı ile çarparsanız o zaman rahatıkla hassiyeti 8 bitlik A/D’ler için uygun hale getirebiliriz.

Dijital Saat Termometre Devre Şeması
pic16f877-dijitalsaat-termometre

dosyaşar: 2X16 Lcd Göstergeli Dijital Saat ve Termometre

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

  • hASAN

    üstat asm ile hex vermişsin ama asıl kaynak dosyayı vermemişsin sanırım…

    C de yazdıysan c dosyası PBP da yazdıysan pbp dosyası yok yani…

  • kertenkele

    bilader Allah razı olsun.

  • int

    bunun neresi asm pbp bu ..