1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
May
6th

DS18b20 ve DS1302 ile LCD Termometre Saat

ds18s20.JPG

Daha önce DS18B20 için sitemizde verdiğimiz sürücü ve örnek uygulama programına ek olarak DS1302 gerçek zaman saati entegresi eklenerek lcd ekranlı saat, termometre devresi proteus programında gerçekleştirilmiştir. Verilen programa saat ayarlama butonları ekleyerek kendi çalışmalarınızda kullanabilirsiniz.

Programı aşağıda inceleyebilirsiniz.

/////////////////////////////////
//       www.ccspic.com
/////////////////////////////////
#include <16f873.h>            //Kullanılacak pic
#use delay(CLOCK=4000000)         //Fosc=4Mhz
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT  // Denetleyici konfigürasyon ayarları
#define use_portb_lcd TRUE         //B portu lcd için ayrılıyor
#define RTC_SCLK PIN_c6            //DS1302 için pin tanımlamaları
#define RTC_IO   PIN_c7
#define RTC_RST  PIN_c5            //
#include “ds1302.c”               //ds1302 ait fonksiyonlar programa eklenir
#include “lcd.c”                 //lcd ait fonksiyonlar programa eklenir
#include “ds18b20.c”             //ds18b20 ait fonksiyonlar programa eklenir
//Global deÄŸiÅŸkenler
int saniye,dakika,saat,gun,ay,yil,haftanin_gunu;   //ds1302 deÄŸiÅŸkenleri

///PROGRAM
void main(void){
float temp;
   lcd_init();  // LCD başlangıç ayarları yapılıyor
   rtc_init();  // DS1302 başlangıç ayarları yapılıyor

   rtc_set_datetime(6,5,8,2,22,52); // Tarih ve Saat ayarları yapılıyor

   while(1)
   { //Sıcaklık bilgisi okunuyor ve çevriliyor
      temp = ds1820_read();
      // DS1302′den saat,dakika,saniye bilgileri alınıyor
      rtc_get_time(saat,dakika,saniye);
     // DS1302′den gün,ay,yil ve günün isim bilgisi alınıyor
      rtc_get_date(gun,ay,yil,haftanin_gunu);
      //LCD’ye sıcaklık,gün,ay,yıl bilgileri yazdırılıyor
      printf(lcd_putc,”\f%3.1f%cC  %02d/%02d/%02d\n”,temp,223,gun,ay,yil); 

      switch(haftanin_gunu)  // DS1302′den sayısal olarak alınan haftanın günü bilgisine
      {                      // metin olarak karşılık atanıyor
         case 1: printf(lcd_putc,”PAZ”); break; // EÄŸer “1″ ise LCD’ye PAZ yaz
         case 2: printf(lcd_putc,”PZT”); break; // EÄŸer “2″ ise LCD’ye PZT yaz
         case 3: printf(lcd_putc,”SAL”); break; // EÄŸer “3″ ise LCD’ye SAL yaz
         case 4: printf(lcd_putc,”CRS”); break; // EÄŸer “4″ ise LCD’ye CRS yaz
         case 5: printf(lcd_putc,”PER”); break; // EÄŸer “5″ ise LCD’ye PER yaz
         case 6: printf(lcd_putc,”CUM”); break; // EÄŸer “6″ ise LCD’ye CUM yaz
         case 7: printf(lcd_putc,”CTS”); break; // EÄŸer “7″ ise LCD’ye CTS yaz
      }
      // LCD’ye saat,dakika ve saniye deÄŸerlerini yaz
      printf(lcd_putc,”     %02d:%02d:%02d”,saat,dakika,saniye);
      delay_ms(1000); // 1 sn gecikme veriliyor
   }
}

Devreye ait tüm dosyalar burada.

Benzer Yazılar


17 Yorum “DS18b20 ve DS1302 ile LCD Termometre Saat”

  1. Erhan Kas 11, 2008

    Merhaba aynı devreyi kurdum yalnız sıcaklık hem 180 derece gibi birşey gösteriyor. Sonra elimi ds18b20 ye koyunca 240 lara felan çıkıyor :)

    Sebebi ne olabilir sizce ?

  2. admin Kas 22, 2008

    ds18b20.c dosyasındaki
    result = (float) temp3 / 2,0; satırını
    temp = ds1820_read()/16,0; yapınız

  3. Erhan Ara 2, 2008

    TeÅŸekkür ederim admin çalıştı. Yalnız Proteus simulasyonunda neden bu sefer 1.8 derece gibi görünüyor. Bir yerde problem var gibi ama hala…

    (devrele proteusta başka gerçekte başka çalışabilir -admin)

  4. elohab Ara 17, 2008

    proteusta saniye 2şer 2şer atlıyo ve yavaş ilerliyor.boarda kursam aynı hatayla karşılaşır mıyım acaba??

  5. serkan Nis 12, 2009

    SLM BEN BU DEVREYİ YAPTIM BİR TEK PİC LERİ PROGLAMLAMASI KALDI BU DECREYE ENERJİ NERDEN VERİYORUZ.ayrıca bu devreye buton gerekiyormu yani koymazsak olmazmı?

  6. admin Nis 12, 2009

    devreyi proteustamı breadboard üzerindemi yaptınız? proteusta ise simülasyon programı olduÄŸu için beslemeye gerek yok gerçekte kurduysanız entegrelerin sensörün ve lcd’nin besleme uçlarına uygun gerilimi vermelisiniz.
    devrede saat ayarlaması yapılmadığı için buton kullanılmamıştır.

  7. murat May 6, 2009

    Arkadaşlar temp = ds1820_read()/8,0; yapınca oluyor.

  8. gökhan Haz 28, 2009

    ArkadaÅŸlar burdaki sistemi 7 segmentte yapmak istiyorum.Sistem DS18B20 den veri okuması yaklÅŸaık 1 sn yi buluyor bu sırada segmenti taratamıyorum.Yardımcı olun…

  9. admin Haz 29, 2009

    tarama işlemini zaman kesmeleriyle yapmalısın

  10. musa kılıç Ara 26, 2009

    ds 1302 ve ds 18b20 entegreli devreyi 16f877 de kurduğumuz da 0.5 C gösteriyor.Öylece takılıp kalıyor. Ne yapmamız gerekir.

  11. m.gökhan Şub 1, 2010

    devreyi yapan hocam teşekkür ederim paylaştığınız için.
    gökhan adaşım
    display ile bende yaptım devreyi bende yaptım.Aynı sorun bendede oluyordu fakat her taramada okuma yapmak yerine taramadan önce okunursa sorun olmuyor.Yani 1 kere okuyacaksın.
    Bu arada
    vs_ds1302.c sayfasındaki
    “temp = ds1820_read();//Sıcaklık bilgisi okunuyor ve çevriliyor”
    kodunu
    “temp = ds1820_read()/8;” kodu ile deÄŸiÅŸtirin.
    ds18b20.c sayfasından değiştirdim hata verdi.
    Kolay gelsin.

  12. selvi Mar 9, 2010

    şu dewreden bi de bn yapabilsem ya uğraşıyorum

  13. admin Mar 9, 2010

    aynı işi yapan devreyi aşağıdaki linkte bulabilirsin
    http://elektrobilim.org/forum/showthread.php?t=2008

  14. fatih Mar 15, 2010

    arkadaşlar bu devreye ve proğrama bir ek daha yapmak isdiyorum..örneğin pazartesi,salı,çarşamba,perşembe,cuma günleri saat 12:00,13:00,14:00 olduğunda a0 dan 30 saniyelik led yakmak isdiyorum.fakat ccs c ye yeni başladım bu döngüyü kuramadım.yardımlarınızı bekliyorum.

  15. Celal May 23, 2010

    arkadaşlar devreyle ilgili verilen dosyaları indirdim proteusu açtım çalıştırdım normal çalışıyor ve bu ds18b20.c dosyasıyla yada diğerleriyle hiç oynamadım
    yazılan yorumları görünce aklım karıştı da bu düzeltme breadbord üzerinde devre kurarken mi gerekli

  16. SEFİK Haz 5, 2010

    BEN BNU YAPTIM AMA COMPİLE KISMINDA HATA VERİYOR VE BU HATAYI İNCLUDE DEVERİYO ACABA SORUN NERDE?

  17. admin Haz 5, 2010

    seçtiğiniz pic türü kullandığınız derleyicinin kütüphanesinde yok sanırım

Yorum yapın