Elektronik / Mikrodenetleyici Projeleri/

Alarmlı saat projesi pic16f628 ds1307 assembly

Sponsorlu Bağlantılar

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

  • muhammed

    kardeş emeğine sağlık seninde hazırlayanlarında güzel paylaşım

  • İlker

    Arkadaşım merhabalar bütün dosyaları göndermişsin sağol.

    Sormak istediğim bir şey var göndermiş olduğun asm dosyasını mp lab da hex e çevirmek istediğimde problem oluyor. Nedendir acaba?

  • Davut Naci Kaya

    Aşağıdaki linkte konu ile ilgili güzel bir yazı var. İncelemenizi öneririm. Uzun zamandır 320volt’a yorum yazamamıştım :)

    http://elektroinfo.blogspot.com/2009/09/asm-kod-hex-koda-nasil-cevrilir.html

  • Serkan

    Arkadaşlar bu devreyi kim yapmışsa iyi yapmış güzel yapmışta baskı devreyle üstten görünüm birbirinni tutmuyor.Sonuçta isis devresi çalışıyor ama pcb çizime anlam veremedim bu devreyi denemeye kalkan birisi için en azından devrenin orjinal resmi net olsa ondan karşılaştırırmak daha iyi olurdu .

  • mali

    merhaba arkadaşlar ,

    paylasımınız için teşekkürler ,

    ben bu devreyi yapmaya çalışıyorum ancak ds 1307 entegresini bulamıyorum . bakmadığım yer kalmadı .

    elinde olan varsa bedelini ödeyerek almak istiyorum yardımcı olursanız sevinirim

    • http://direnc.net/main/ds1307-9523-75-261.html

  • kamil

    arkadaşlar alarmı ayarladıktan sonra saniye daha bir yavaş ilerliyor bunun nedeni nedir bilen var mı?

  • Esen

    burda buzzer kısmı nerede ? alarm çalınca nereden ötecek ?

  • mkilickap

    bu aralar pek 320volta giremedim yeni yüzü çok yakışmış aynı zamada bu proje paylaşımı için teşekürler

  • ishak

    merhaba
    benim projem var yukarıdaki projenin aynısı ama 2*16 lcd yerine dot matrik olacak…bunu nasıl yapabilirim yardımcı olabilir misimiz?

  • Tacettin Eryılmaz

    Bu devreyi biz çalıştıramadık.

    DS1307 piyasadan aldık SDA ve SCL data sinyallerini skopla göremiyoruz.
    Sahte olduğundan şüphem var.
    DS1307 nin 7 nolu pini niye PİC entegresine giriş yapılmıyor.

  • Ramazan

    devre güzel olmuş yapan arkadaşın emeğine sağlık! ASM ile yazılmış çok uzun olmuş program :) biraz daha ileri seviye dillerle bu program çok daha kısa olabilir.

  • turgut

    ben bu devreyi yapmayı düşünüyorum da devre de her hangi bir hata yok değil mi ? parayı çöpe atmayalım

  • Ramazan

    devre çalışır gibi duruyor ki zaten arkadaşın biri yapmış :)

  • Murat Güder

    dostlar emeklerinize sağlık…

  • Kadir

    Selam eline sağlık arkadaşım devreyi yapacağım da baskı devre resmi büyük piclar tam oturmuyor yardımını bekliyorum.

  • murat

    merhabalar

    elinize sağlık teşekkür ederim. epey zamandır aramış olduğum bir sisten bu. yalnız benim sormak istediğim sistem 2 saat çalışacak yalnız elektrik kesintisi olduğunda 1 saat geçikme var. toplam 2 saat süreyi (örneğin: 14.00 sistem aktif oldu 16:00 da sistem pasif olacak, 15:00 de elektrik kesinitisi oldu bu aradaki farkı ilave olarak 17:00 de kapatır, yoksa tam saati 16:00 olduğunda pasif mi olacaktır.)

    ilginiz için şimdiden teşekkürler.
    saygılarımla.

  • hakan

    merhaba. ben bu devreyi farklı bir proje için kullanacağım. alarm çalmaya başladığında elle kapatmamız mı gerekiyor. yoksa belli bir süre sonra kendisimi kapanıyor?. eğer öyleyse alarmın çalma süresi nasıl değiştiriliyor.

  • erol

    merhabalar hocam biz tüm elemanları alıp devreyi borda kurduk fakat çalışmadı.Devreyi isis de kurduk çalıştı bord üzerınde çalışmadı. Birde eleman yerleştirme ile baskı devre birbirini tutmuyor hangisini yapacagız? eleman listesinde 1 tane 1K yazıyor devrede 2 tane kullanıldığı yazıyor. bir açıklama getirebilirmisin nasıl düzeltebiliriz hatayı… kolay gelsin…

  • Tomislav

    Dear Sir,
    I’ve made your clock,it’s very good.Thank you for your effort to make it and share it with us.The only problem is that UP button doesn’t work,but I will play with software a little bit and hopefully find the problem.I also don’t know what is LED for,it’s blinking all the time no matter what I do.Greetings from Croatia,Tomislav.

    • Murat Atmaca

      The LED is the indicator of counting seconds. DS1307 pulses the led once a second.

  • rizeli

    Selam abi devreyi yapmışın ama çektiğin resim baskı devre isis şeması hiç birbiri ile alakası yok madem yaptın güzel bir şekile koyupta bizlerde yararlansaydık.Böyle bir işe yaramıyor boş yere masraf yaptık.

  • ali

    mükemmel bir devre tam aradığım gibi:)
    bunu yapacağım ama devre şemasında elamanların hangileri olduğu yazmıyor (mesela R1,R2 vb.)lütfen bi yardımcı olun arkadaşlar :)

  • murat

    selam eline sağlık. asm dilinde değilde pic basicde ds1307 den nasıl bilgi alırım yardımcı olur musun.

  • serdar pelit

    Selamlar ben amatör olarak bu projeyi yapmak istiyorum yanliz anlamadigim biz bu pic entegreye yazilimi nasil atiyoruz bu ayrintilari biri aciklarmi program yaziyorum elektronik ögrenmek icin bir çalışma yapacağım

  • Gürhan Koncaoğlu

    usta proteus şemasına göre devreyi tekrar dan bastım direk acıp beklediğinde yazı kayıyor sonra siyah ekran a düsüyor ekranla alakalı değil testini yaptım ve kullandıgım ekranın data sheet dosyasına göre bağlantı yaptım ondan ziyada yazı kaymadan saat ayarı yap dediiğimde saat tarih ayarlandı yazısından sonra kafası karısıyor ds 1307 den şüpheleniyorum haberleşemiyor mu acaba semada sıkıntı olarak görükmeyipte uygulamada sıkıntı olacak bir durum söz konusu mu ?

  • Gürhan Koncaoğlu

    bu çıkan rayıyı da desemial olarak 255 rakam lara bölüm sayaçlara yüklemek gerekmiyor mu 1 saniyeye erişebilmek için

  • Gürhan Koncaoğlu

    yazılımda sorun var baya ugrastım en fazla gecikmeyi 15 sn ye kadar düşürebildim kafam çok karıstı sayaç devrelerle sıfırdan çıkartsam devreyi daha kolay olurdu konu ile kim ilgileniyor ?

  • Orhan Barut

    pic programının yazılımı mevcutsa atarmısınız