DS18b20 ve DS1302 ile Lcd Termometre Saat

ds18s20

 

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
   }
}
Bu yazı CCS C Örnekleri kategorisine gönderilmiş ve , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.