Teknoloji Ekibi

Elektronik Dünyası => Elektronik => Konuyu başlatan: Karadağ - 08 Temmuz 2009, 12:35:46

Başlık: 8 alarm ayarlanabilen otomatik zil devresi
Gönderen: Karadağ - 08 Temmuz 2009, 12:35:46
Arkadaşlar birkaç ay önce çalıştığım iş yerinde çay paydosları yemek paydosları ve giriş çıkışlar için bir zil devresi yapmıştım.
Devreyi yaptığımda zaman kısıtlı olduğu için delikli plakete alel acele kurup 1-2 saatte de programını yazıp yarım günde çalıştırmıştım.
Bu nedenle elimde devre şeması yoktu.
Bugün arızalandığı için içini açtım ve fırsattan istifade devre şemasını çıkardım. Ve bu şema ile yazılımını sizlerle paylaşmak istedim.
Çok acelece yapılmış bir şey olduğu için yazılımında yada donanımında gözümden kaçan şeyler olmuş olabilir. Bunları siz düzenlerseniz sevinirim. İnşallah beğenirsiniz.

Şema:

(https://www.teknolojiekibi.com/yeni/proxy.php?request=http%3A%2F%2Fimg38.imageshack.us%2Fimg38%2F4945%2Fphp3h5rdo.th.png&hash=e631b78b56404d24de3b8db56fdf6be195aa1853) (http://www.postimage.org/image.php?v=aVtJFtA)

Video:

http://rapidshare.com/files/253336957/video.rar.html

Kodlar:

#include "1307_i2c.c"
#include "ds1307.c"

char *text[3] = {"SAAT AYARLA ","ALARM AYARLA","ALARM"};
unsigned char cevir[3];
unsigned char menudurum=0;
unsigned i,j;
unsigned char gecici3[3];
unsigned char gun=0;
unsigned char kontrol=0;
void itoa(unsigned char i);
void kaydet(unsigned char adres,unsigned char bilgi);
void menu();
void bekle10ms(unsigned int i);
void main(void)
{
    CMCON=7;
    TRISA=0x20;
  TRISB=0x00;
  PORTA=0X00;
    Lcd_Init(&PORTB);
    Lcd_Cmd(Lcd_CLEAR);
    Lcd_Cmd(Lcd_CURSOR_OFF);
    porta.f4=0;
    //tarih_kaydet(9,3,14,1);
    while(1)
    {
     gun=ds1307_oku(3);
     Lcd_Chr(2,1,gun+48);
     gecici3[2]=ds1307_oku(0);
     kontrol=ds1307_oku(0);
     itoa(ds1307_oku(0));
     Lcd_Chr(1,7,cevir[1]);
     Lcd_Chr(1,8,cevir[0]);
     Lcd_Chr(1,3,':');
     gecici3[1]=ds1307_oku(1);
     itoa(ds1307_oku(1));
     Lcd_Chr(1,4,cevir[1]);
     Lcd_Chr(1,5,cevir[0]);
     Lcd_Chr(1,6,':');
     gecici3[0]=ds1307_oku(2);
     itoa(ds1307_oku(2));
     Lcd_Chr(1,1,cevir[1]);
     Lcd_Chr(1,2,cevir[0]);

     for(i=8;i<24;i++)
     {
      if(gecici3[0]==ds1307_oku(i) && gecici3[3]!=0)
      {
       if(gecici3[1]==ds1307_oku(i+1))
       {
         if(kontrol<=8)
         {
          porta.f4=1;
          bekle10ms(900);
          porta.f4=0;
         }
       }
      }
     }
      if(porta.f0==0)menu();
    }
}
void itoa(unsigned char i)
{
  cevir[0]=48; cevir[1]=48;
if(i<10)
{
  cevir[0]=i+48;
  cevir[2]=1;
}
if(i>=10 && i<100)
{
  cevir[0]=(i%10)+48;
  cevir[1]=(i/10)+48;
  cevir[2]=2;
}

}
void menu()
{
  unsigned char gecici=0;
  unsigned char gecici1=0;
  unsigned char yer=1;
  unsigned char kayit[5];
  porta.f4=0;
  while(1)
  {
   lcd_out(1,1,text[menudurum]);
   lcd_out(2,1,"                ");
   if(porta.f1==0)
   {
     bekle10ms(15);
     if(porta.f1==0)
     {
     menudurum=(menudurum==0 ? 1 : 0);
     }
   }
   if(porta.f2==0)
   {
     bekle10ms(15);
     if(porta.f2==0)
     {
     menudurum=(menudurum==0 ? 1 : 0);
     }
   }
   if(porta.f3==0)
   {
    bekle10ms(15);
    if(porta.f3==0)
    {
      if(menudurum==1)
      { //alarm ayarla
        gecici1=0;
        while(1)
        {
         Lcd_Chr(2,1,(gecici1+48));
         lcd_out(2,3,text[2]);
         if(porta.f1==0)
         {
          bekle10ms(15);
          if(porta.f1==0)
          {
           gecici1=(gecici1<8 ? gecici1+1 : 0);
          }
         }
         if(porta.f2==0)
         {
          bekle10ms(15);
          if(porta.f2==0)
          {
           gecici1=(gecici1>0 ? gecici1-1 : 8);
          }
         }
         if(porta.f3==0)
         {
          bekle10ms(15);
          if(porta.f3==0)
          {
           Lcd_Cmd(Lcd_Clear);

           while(1)
           {
            Lcd_Chr(1,1,(gecici1+48));
            lcd_out(1,3,text[2]);
            Lcd_Chr(2,yer,(gecici+48));
            if(porta.f1==0)
            {
             bekle10ms(15);
             if(porta.f1==0)
             {
              gecici=(gecici<9 ? gecici+1 : 0);
             }
            }
            if(porta.f2==0)
            {
             bekle10ms(15);
             if(porta.f2==0)
             {
              gecici=(gecici>0 ? gecici-1 : 9);
             }
            }
            if(porta.f3==0)
            {
             bekle10ms(15);
             if(porta.f3==0)
             {
              kayit[yer]=gecici;
              gecici=0;
              if(yer>=4)
              {
               kayit[1]=(kayit[1]*10)+(kayit[2]);
               kayit[3]=(kayit[3]*10)+(kayit[4]);
               kaydet((gecici1*2)+8,kayit[1]);
               kaydet((gecici1*2)+9,kayit[3]);
               Lcd_Cmd(Lcd_Clear);
               yer=1;
               break;
              }
              yer=(yer>3 ? 1 : yer+1);

             }
            }

           }
          }
         }
         if(porta.f0==1){break;}
        }
      }
      if(menudurum==0)
      {
       while(1)//saat ayarla
       {
        Lcd_Chr(2,yer,(gecici+48));
        if(porta.f1==0)
        {
        bekle10ms(15);
        if(porta.f1==0)
        {
         gecici=(gecici<9 ? gecici+1 : 0);
        }
       }
       if(porta.f2==0)
       {
        bekle10ms(15);
        if(porta.f2==0)
        {
         gecici=(gecici>0 ? gecici-1 : 9);
        // kayit[yer]=gecici;
        }
       }
       if(porta.f3==0)
       {
        bekle10ms(15);
        if(porta.f3==0)
        {
         kayit[yer]=gecici;
         gecici=0;
         if(yer>=4)
         {
          kayit[1]=(kayit[1]*10)+(kayit[2]);
          kayit[3]=(kayit[3]*10)+(kayit[4]);
          saat_kaydet(kayit[1],kayit[3]);
          yer=1;
          break;
         }
         yer=(yer>5 ? 1 : yer+1);

        }
       }


      }
     }
    }
   }
   if(porta.f0==1){Lcd_Cmd(Lcd_Clear);break;}
  }

}

void kaydet(unsigned char adres,unsigned char bilgi)
{
rtc_write(adres,dec_bcd(bilgi));
}
void bekle10ms(unsigned int i)
{
unsigned int k=0;
for(k==0;k<i;k++)delay_ms(10);
}


Başlık: Ynt: 8 alarm ayarlanabilen otomatik zil devresi
Gönderen: yanlızkurt - 04 Ekim 2009, 18:16:32
eline sağlık hocam ama keşke komutlar basic olsa.
Başlık: Ynt: 8 alarm ayarlanabilen otomatik zil devresi
Gönderen: Karadağ - 04 Ekim 2009, 19:44:16
yanlızkurt malesef picbasic bilmiyorum
Başlık: Ynt: 8 alarm ayarlanabilen otomatik zil devresi
Gönderen: yanlızkurt - 04 Ekim 2009, 20:31:56
sağlık olsun hocam. kendime göre  yeni bir proje var kafamda.güvenlik sitemleri üzerine. evi takip edecek gerek duyarsa cepten haber verecek yada biz gerek duyarsak evdeki bazı şeyleri kontrol edebileceğimiz bişeyler düşünüyorum tamamen telefon kontrollü.sizce nasıl bir fikir işe yararmı.
Başlık: Ynt: 8 alarm ayarlanabilen otomatik zil devresi
Gönderen: Karadağ - 05 Ekim 2009, 13:51:30
işe yarar tabii neden yaramasın çok güzel şeyler ortaya çıkarabilirsin

şimdi 3g de çıktı gerekirse görüntü de gönderebilirsin