Elektronik / Mikrodenetleyici Projeleri/

Alarmlı saat projesi pic16f628 ds1307 assembly

Hazırlayan: Cihan YILDIRIM – Alarmlı saat projesi lcd göstergeli ve günlük aylık zaman ayarlı pic16f628 mikro kontroller ürerine kurulu kullanılat saat entegresi ds1307 yazılım assembly ile hazırlanmış. Emeği geçen hazırlayan kişilere teşekkürler

Lcd ekran göstergeli zamanı ayarlanabilir alarmlı saat (zamanlayıcı)

Günümüzde mikroişlemcili sistemler yaygın olarak kullanılmaktadır. Bunun birçok avantajları vardır.Az maliyet ile bir çok iş yapılabilmektedir.Ayrıca mikroişlemcili sistemler ile birçok devreler çok az sayıda malzeme kullanılarak yapılabilmektedir.Bende bu projede Pic16 serisi mikro kontroller kullanacağım. Bu sayede lcd ve saat entegreleri ile haberleşme sağlıyarak minimum donanımla oldukça işlevsel bir devre tasarlayacağım.

Devrenin Özellikleri

Yapacağım bu saat projesi fonksiyonel bir alarm özelliğine sahiptir.Günlük ve aylık olmak üzere iki çeşit alarm özelliği bulunmaktadır. Devrede gerçek zamanlı saat entegresi bulunmaktadır.Alarm ayarlandıktan sonra alarmi kapat düğmesine basılmadığı sürece alarm açık konumda kalır ve günlük alarm ayarlandığı taktirde her gün ayarlanan saatte alarm çalacaktır.Aylık alarm ise istediğiniz gün, ay, yıl, saat, dakika ve saniye de alarm çalmasını sağlar. Devrede birde mute düğmesi bulunmaktadır.Bu düğme ile ayar kısmından alarmi açmadan çıkılabilir yada alarm çalma anında alarmi susturmak için kullanılır. Devrede 7 adet buton bulunmaktadır.

1. Alarm Ayarı: Bu düğmeye bastığımızda devre alarmi kurma moduna girer.Devrenin başlangıç ayarları aylık alarm kurulacak şekildedir.Alarm türü düğmesi ile bu günlük alarm olarak değiştirilebilir.Aylık alarm modunda olduğumuzu varsayarsak ekrana gelecek olan görüntü aşağıdaki gibidir.

alarm-ayari

alarm-ayari-lcd

Tarih: GG.AA.YY
Saat : SS:DD:San.san

Formatında alarm ayarı yapılmaktadır .Alarm ayarı esnasında ayar yapılacak satırların sonunda ‘A’ karakteri çıkar.Bu karakter o anda alarm ayarı yapıldığını belirtir. Yukarı ve aşağı tuşları ile kursörun gösterdiği hane deki sayılar belirlenir. Sonraki haneye atlamak için tekrar Alarm Ayarı düğmesine basılarak ilerlenir. Görüldüğü gibi saniye hanesi bile ayarlanmaktadır.Bütün haneler ayarlandıktan sonra aşağıdaki mesaj alarm işleminin bittiğini gösterir.

alarm-ayarlandi

2. Zaman Ayarı: Bu düğmeye bastığımızda devre zamanı (saat&tarihi) ayarlama moduna girer. Zaman ayarı modundayken ekrana gelecek olan görüntü aşağıdaki gibidir.

zaman ayari tarih saat

Tarih: GG.AA.YY
Saat : SS:DD:San.san

zaman ayari tarih saat lcd

Formatında zaman ayarı yapılmaktadır. Yukarı ve aşağı tuşları ile kursörün gösterdiği hane deki sayılar belirlenir.Sonraki haneye atlamak için tekrar Zaman Ayarı düğmesine basılarak ilerlenir. Bütün haneler ayarlandıktan sonra aşağıdaki mesaj ayarlama işleminin bittiğini gösterir.

saat ayarlandi isis goruntusu

3. Yukarı: Bu düğme alarm yada zaman ayarı modundayken çalışır ve kursorun gösterdiği haneyi her basışta 1 artırır.

4. Aşağı: Bu düğme alarm yada zaman ayarı modundayken çalışır ve kursorun gösterdiği haneyi her basışta 1 artırır.

5. Alarm Türü: Bu projede günlük ve aylık alarm omak üzere iki çeşit alarm modu bulunmaktadır. Başlangıç olarak aylık alarm modunda başlar. Bu mod ile istediğimiz bir yıla, aya, güne, saate, dakikaya ve saniyeye alarmı kurabiliriz.Günlük alarm modunda ise sadece saate, dakikaya ve saniyeye alarm görevi atıyabiliriz. Bu mod seçimi Alarm Türü düğmesi ile yapılmaktadır. Düğmeye ilk basışta günlük alarm moduna geçer ve ekranda şu mesaj çıkar.

alarm-turu-gunluk

Düğmeye tekrar bastığımızda ise aylık alarm moduna geçer ve ekrana bunu belirten bir mesaj gelir.

6. Alarm Aç / Kapa: Bu düğmede alarmı aktif-pasif hale getirir. Her basışta konum değiştirir. Alarm kurlduğu anda otomatik olarak aktif pozisyondadır. Günlük alarm uygulamalarında örneğin haftasonları alarmın çalmasını istemiyorsak Cuma günü bu düğmeye basarak alarmı kapatır, Pazar gunu tekrar basarak alarmı tekrar açabiliriz.Alarm kapandığında ekrana “ALARM KAPANDI” Mesajı gelir. Aynı düğmeye tekrar bastığımızda ise ekrana “ALARM ACILDI” mesaj gelir.

alarm devresi kapandi

7. İptal / Mute: Bu düğmenin iki fonksiyonu vardır.Bunlardan biri alarm veya zaman ayarı esnasında ayar yapmaktan vaz geçersek İptal etmek amacı ile basarız.Bir diğer görevi ise Alarm çalma anında alarmı susturmak(Mute) amacı ile basarız.

Devrenin Yapısı: Projemde hazırlıyacağım devre 3 temel malzemeden oluşacak.Bunlar aşağıdaki gibidir:

1. Pic16f628(mikrokontrollör)

pic16f628 mikrokontrollor

2. DS1307(real time clock)

DS1307 real time clock

3. 2×16 karakter lcd

2x16 karakter lcd

Devrenin Çalışma Mantığı

Devrede bulunan pice yazacağım programa göre sistem çalışacaktır.Burada zaman bilgisi ds1307 (real time clock) entegresinden okunacaktır. Bu entegre bize saniye, dakika, saat, gün, ay ,yıl bilgilerini verebilmektedir.32.768khz lik kristali ile zaman bilgisini kendi içinde sayan bu entegre ile I2C protokolü ile haberleşilmektedir.

Pic ile ds1307, 2 pinden (sda,scl) haberleşmektedir.Data ve clock olarak isimlendirilen bu iki uçtan I2C formatında haberleşerek zaman bilgisi okunur.Bu bilgileri lcd ekranda gösteren pic , aynı zamanda karşılaştırma yaparak alarm zamanını sürekli sorgular.Ds1307 alarm zamanını gösterdiğinde buzzer ve lcd aracılığı ile görsel ve sesli bir uyarı verilir.Bütün bu işlemler pic vasıtası ile yapılmaktadır.

Projenin yapım aşaması

Önce oluşturacağım donanım ve uygun malzemeleri seçtim.İşe önce kullanacağım mikro denetleyiciyi seçmekle başladım. Projemde Microchip’ in ürünü olan pic serisini kullanacaktım.Dolayısıyla ilk olarak kullanacağım pici seçtim. Projede bulunan giriş çıkış birimleri hesaplandığında pin sayısı bakımından en uygun yeterliliğe sahip pic olarak 16f628i seçtim.

Burada saat saydırma işlemini picin kendisine de yaptırabilirdim ancak gerek devrenin çalışma ortamı gerek kullanılan kristalin tam olarak bölünememe durumunda oluşabilecek kaymalar ileriki zamanlarda saatin bozulmasına neden olacağından dolayı, Dallas firmasının bir ürünü olan DS1307 (gerçek zamanlı saat) entegresi yardımıyla saat bilgisi oluşturuldu.

Sıra geldi saati göstereceğimiz ekran seçimine.Burada lcd seçiminin hem yazılımı hemde donanımı rahatlatacağı düşünülerek 7 segmen display kullanmaktan vazgeçtim. Lcd nin pin sayısının fazlalığından kaynaklanan dezavantajını da 4 bit modun da kullanarak avantaja çevirdim. Picin kalan pinlerinede gerekli butonları (7 adet buton) yerleştirerek donanımı şematik olarak oluşturdum.

Bu oluşturduğum şematiği PROTEUS isimli simülasyon programında çizdim.Sıra yazılıma gelmişti.Oluşturduğum bu donanıma göre yazılım yapmaya başladım.Bu simülasyon programı olmasaydı bu donanımı bilgisayarda kurmak yerine boarda veya kart üzerine basıp oluşturmam gerekirdi.Çünkü uzun yazılımlarda test donanım üzerinde test ederek ilerlemek her zaman yazılım hatalarının en aza indirir.

Proteus ta oluşturduğum donanım üzerinde testler yaparak yazılım aşamasını bitirdim.Sıra baskı devre çizimine geldi.Yine aynı programın baskı devre ara yüzü (ARES) ile baskı devre çizimi yapıldı.Daha sonra bu pcb asetat kağıdına çıktı alınarak pozlama metodu ile bakırlı plaket üzerine baskı işlemi yapıldı.Akabinde kart üzerine malzeme montajı yapıldı.Sıra yazılım testine geldi.Simulasyonda sorunsuz çalışan yazılım pice yüklendi ve devre üzerinde test edildi.Bazı ufak zamanlama hataları giderildikten sonra proje kullanıma hazır halde tamamlandı.

DEVRENİN AÇIK ŞEMASI:

alarmli saat isis sema

DEVRENİN BASKI DEVRE ŞEMASI :

alarm devresi pcb ust

alarm devresi pcb alt

Malzeme Listesi:

  • 1. 10 adet 4k7
  • 1 adet 1k
  • 2 adet 150ohm
  • 1 adet 1n4007
  • 2 adet led
  • 2 adet 470uF kondansatör
  • 1 adet 7805
  • 7 adet push buton
  • 1 adet 32.768khz kristal
  • 1 adet 2×16 karakter lcd
  • 1 adet ds1307
  • 1 adet pic16f628

Program assembly dilinde yazılmıştır.Derleyici olarak MPASM (maplab) kullanılmıştır. Projenin ams, hes ve isis dns dosyaları: Alarmlı saat projesi pic16f628 ds1307 assembly

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

  1. muhammed 2009/12/06
  2. İlker 2010/01/09
  3. Davut Naci Kaya 2010/01/09
  4. Serkan 2010/02/07
  5. mali 2010/02/27
  6. kamil 2010/03/10
  7. Esen 2010/03/21
  8. mkilickap 2010/04/20
  9. ishak 2010/04/24
  10. Tacettin Eryılmaz 2010/05/27
  11. Ramazan 2010/05/28
  12. turgut 2011/01/04
  13. Ramazan 2011/01/04
  14. Murat Güder 2011/04/27
  15. Kadir 2011/04/27
  16. murat 2011/09/02
  17. hakan 2011/10/22
  18. erol 2011/12/22
  19. Tomislav 2012/02/29
    • Murat Atmaca 2017/08/23
  20. rizeli 2012/05/02
  21. ali 2013/02/19
  22. murat 2013/06/30
  23. serdar pelit 2013/12/28
  24. Gürhan Koncaoğlu 2014/03/02
  25. Gürhan Koncaoğlu 2014/03/02
  26. Gürhan Koncaoğlu 2014/03/02
  27. Orhan Barut 2015/11/12
  28. seriban 2017/12/16

Yorum

Soru: