Picproje Elektronik Sitesi

DİJİTAL & ANALOG ELEKTRONİK => Temel Elektrik/Elektronik => Konuyu başlatan: nova - 24 Eylül 2008, 13:54:01

Başlık: vakitleri gösteren pano yardımı
Gönderen: nova - 24 Eylül 2008, 13:54:01
arkadas lar herkeze selam ben üniversite öğrencisiyim ben köyümün camisine vakitleri gösteren pano yapmak istiyorum bu konula ilgi yardımcı olabilirmisiniz. netten arastırma yapıyorum devre şemasını bulamıyorum. yardımlarınızı bekliyorum cok teşşekkür ederim şimdiden
Başlık: vakitleri gösteren pano yardımı
Gönderen: Maxim - 24 Eylül 2008, 14:12:11
vakit derken ,saat dimi ?
Başlık: vakitleri gösteren pano yardımı
Gönderen: Tagli - 24 Eylül 2008, 14:30:34
Bu saatler elle mi girilecek? Aslında internetten alabilse güzel olurdu ama nasıl yapılır hiç bir fikrim yok.
:idea: Gerçi internetten almaya gerek yok. Bu değerler her yıl aynı günlerde aynı oluyor sanırım. Bir tablo ile her gün olması gereken vakit saatleri belirlenip gösterilebilir.
Başlık: vakitleri gösteren pano yardımı
Gönderen: stlg - 24 Eylül 2008, 14:49:57
Kardes bu urun hazır olarak satılıyor ,calısma mantıgı bildigim kadarıyla il plaka kodu girilerek yapılıyor, siz sadece  saati ayarlıyorsunuz o bulundugunuz bolgeye gore vakitleri hesaplayıp ilgili displaylere atıyor sabah su ,oglen su vs gibi kolay gelsin
Başlık: vakitleri gösteren pano yardımı
Gönderen: POWER - 24 Eylül 2008, 18:08:41
Bu konu daha önce tartışıldı ama elle tutulur bir şeyler çıkmadı.
http://picproje.org/index.php/topic,11050&highlight=ezan+vakti+hesablama
Başlık: vakitler
Gönderen: timpati - 24 Eylül 2008, 20:43:35
elektroniğe güven olmaz kardeşim; siz en iyisi bir adet "saatli maarif takvimi" alın, sonra bunun ilgili sayfasını (o güne ait)  projeksiyon cihazıyla duvara yansıtın. olmaz mı?
Başlık: Re: vakitler
Gönderen: erkan614 - 24 Eylül 2008, 21:05:38
Alıntı yapılan: "timpati"elektroniğe güven olmaz kardeşim; .....
bahsettiğiniz o saatli maarifi elektronik ile hesaplayıp basıyolar
Başlık: vakitleri gösteren pano yardımı
Gönderen: mustafa_cmbz - 24 Eylül 2008, 23:53:18
aradığın şeyin ismi tam olarak vakitmatik diye geçiyor...piyasadaki ismi bu şekilde...aradığın şey veya aynısını yapmaya çalıştığın şey ise aşağıdaki gibi birşey...

http://img440.imageshack.us/my.php?image=7704buyuknx5.jpg

bizim buralarda çok nadir karşılaştığım eski mühendis abilerimden biri bir aralar bu işe el atmayı düşünüyordu akibeti ne oldu bilmiyorum ama iç yapısını incelemiş biri olduğundan bana da biraz bahsetmişti içinde bir adet 16f84 register + display sürücüler varmışş...onun yalancısıyım....tabi içindeki micro işlemci modelden modele değişir ama mantık bana kalırsa aynıdır....benimde tek merak ettiğim şey hesap kitap işini nasıl yapıyorlar...oda büyük ihtimal bu yeryüzünde var olduğu kabul edile enlem boylamlar arasındaki zaman farkından yola çıkılarak yapılmıştır gibime geliyor.....

bunun yerine çin malı ezan okuyan saatler var o tarz bişeylerden alıp çıkışları değerlendirebilirsen daha pratik olur bence....kolay gelsin
Başlık: vakitleri gösteren pano yardımı
Gönderen: nova - 26 Eylül 2008, 14:19:12
arkadslar  yorumlarınız için cok teşşekkür ederim dediğiniz clışmalara bakıcam ama ben ticaret olarak değill sadece köyümün kendi camime yapıcam ben bu vakit nazmazlarını göstern panonun devre semesını arastırıyorum arkadslar tekra şimdiden tesekkür ederim
Başlık: vakitleri gösteren pano yardımı
Gönderen: files - 26 Eylül 2008, 14:49:08
Camide yoksa, 1 takvim al koy 3-4 YTL.
aksi halde sana çok pahalıya malolacak ve yapamayacaksın. cebinden 200-500YTL harcarsın. elinde bir yığın çöp kalacak.

bir de cemaat seni makaraya sarabilir. hala yapamadın mı  derler. illa elektronik birşey yapmak gerekliyse, kanarya zili, yanıp sönen led, picli yürüyen ışık yapabilirsin. bu devre yeni başlayan biri için uygun değil. yeni başladığınızı bilmiyorum tahmin ediyorum.

devre şamasını bulsanız ne olacak? hex kodunu da bulacak mısınız?

köyün muhtarına da bir bilgisayar yapmak istiyorum. şeması varmıydı acaba ?
Başlık: vakitleri gösteren pano yardımı
Gönderen: nova - 26 Eylül 2008, 15:15:17
tamam arkadaslar tesekkürler yardım istemeseydim keşke sizden diğer arkadslarıma lafım yok benim laf kime gitti o biliyo
Başlık: vakitleri gösteren pano yardımı
Gönderen: sigmoid - 26 Eylül 2008, 16:01:59
sen başkalarının lafına aldırma. Ben de kayanyazı yapmaya karar verdiğimde ne pic biliyordum, ne elektronik, baskı devre çizim programlarının kullanmasınıda bilmiyorum, baskı devre çıkartmasını da. Yaklaşık 1 sene sonra pc den gönderdiğim yazılar kayan yazıda akmaya başladı. İstediğim özellikte birdevreyi yapmıştım. Tabiki devre yapmanın bir masrafı oluyor. ilk seferinde başarılı sonuc almayınca merak etme o çöp olmaz, senin için iyi bir tecrübe olur. vaktim var, sabırlıyım dersen msn listene beni ekle. beraber yavaş yavaş bir devre yaparız.
Başlık: vakitleri gösteren pano yardımı
Gönderen: POWER - 26 Eylül 2008, 19:31:09
Alıntı yapılan: "files"Camide yoksa, 1 takvim al koy 3-4 YTL.
köyün muhtarına da bir bilgisayar yapmak istiyorum. şeması varmıydı acaba ?
ipin ucunu biraz fazla kaçırmışsın bence
Başlık: vakitleri gösteren pano yardımı
Gönderen: stlg - 27 Eylül 2008, 11:00:04
Bencede oyle ,arkadasımızı bu işlerden sogutmanın bir anlamı yok hepimiz bu işlere boyle başlamadıkmı
Başlık: vakit
Gönderen: timpati - 27 Eylül 2008, 21:14:37
söylendiği gibi, konu daha önce enine-boyuna tartışılmış bu sitede. @nova'nın internette şema aradığını hesaba katarsak, şöyle bir orta yol bulabiliriz. aşağıdaki resimde görülene (daha önceki tartışmada verilmiş) benzer bir pano yapılır ve değerler günlük olarak girilir. bunun için öyle karmaşık bir devre yapısına gerek yok, sadece göstergeler olacak ve hergün veriler tazelenecek (güvenilir kaynaklardan). arkadaşın bilgisi ve/veya sitenin bu konudaki çalışmaları ilerleyince de daha profesyonel (otomatik ve doğru) bir cihaza dönüştürülür.

(http://i80.photobucket.com/albums/j165/timpati/grnt13hm8.jpg)
Başlık: vakitleri gösteren pano yardımı
Gönderen: POWER - 29 Eylül 2008, 00:18:30
(http://img523.imageshack.us/img523/9038/vaktiq3.th.gif) (http://img523.imageshack.us/my.php?image=vaktiq3.gif)(http://img523.imageshack.us/images/thpix.gif) (http://g.imageshack.us/thpix.php)
Arkadaşlar;
Daha önce bende vakitmatik konusunda bir şeyler yapmıştım basitte olsa.timpati arkadaşımız verilerin günlük girileceğinden bahsetmiş.Ben bunu biraz daha ileriye götürerek maxsimum 6ay,8 günlük 5 vakit ezan vakitlerinine ait veriyi 877 nin hafızası alıyor.Sonuç olarak 6ay,8 günlük veri bir seferde 877 ye yüklenirse bahsi geçen zaman içerisinde ezan vakitleri ekranda görüntülenmiş oluyor.Aslında ikinci bir 877 kullanarak 1 yıllık veri saklanabilir.Fakat pratik bir yöntem değil bence. 5 yıllık veriyi sığdırdığımızı düşünsek bile 5 yıl sonra ne olacak bilgileri kim güncelliyecek.İşte takıldığımız ve çözüm bulunamıyan konu burası.Harici eprom kullanılarak daha fazla bilgide saklanabilir ama bunun bir formülü olması gerek ama nedir bilmiyorum.Ben bu devrenin gerçek anlamda uygulamadım.Çünkü belli bir maliyeti var.6 ay için yapılır bulmadım fakat yapacak arkadaşlara yada bu iş üzerinde çalışacak arkadaşlara yardımcı olur düşüncesiyle buraya koydum.Proğramın açık kodları ve isis dosyalarıda var.Yazdığım proğram daha kısa da yazılabilir.Bu işte çok iyi arkadaşlarımızda var hepimizin bildiği gibi.Neyse uğraşacak arkadaşlara yardımcı olabilmek dileğiyle.
http://www.dosya.tc/VAK_TMAT_K.rar.html
Başlık: vakit
Gönderen: timpati - 29 Eylül 2008, 02:40:04
nette bunun onlarca örneği var, birileri yapıp satıyor. 6 ay gibi uzun bir araştırma döneminde vereceğiniz emek ve zamanın maliyetini  hesaplarsanız satın almanın daha ekonomik olduğu ortaya çıkar. nedir sorun, gurur meselesi mi? ticari bir ürün ortaya çıkarmak istediğinizi sanmıyorum çünkü benzerleriyle rekabet edemezsiniz. ayrıca beni, yazmanın gerdiği ikinci bir konu ise "ne gerek var?" sorusu. çünkü bu hassas bir konu ve nasıl derler: "vebali büyük".

yanlış iş yapmamak gerek. sonra köy yerindeki insanlar bunu görecek de ne olacak? zaten kendi işlerinden bunalmış insanlar dini konuları imama havale etmişken bu tabelayı görüp, imamı bir kenara mı atacak? diyelim, hata oldu, bu durumda imam zan altına girmez mi? elektroniğe güven olmaz dememin nedeni bu. beslemede sorun olur, datalar karışır, bir şekilde hatalı bir durum mutlaka ortaya çıkacaktır ve bunun sorumluluğunu imama yüklerler sana değil.
Başlık: vakitleri gösteren pano yardımı
Gönderen: files - 29 Eylül 2008, 05:34:53
Sorunsuz çalışan böyle sistemin kodları, şeması ortada dolaşmaz bu bir gerçek.
Başlık: kodlar
Gönderen: timpati - 30 Eylül 2008, 03:42:16
@files, peki buna ne dersin?

http://www.elektrotekno.com/about38387.html&highlight=vakitmatik
Başlık: vakitleri gösteren pano yardımı
Gönderen: files - 30 Eylül 2008, 09:46:56
6 aylık demiş. geliştirilebilir. Yukarıda arkadaşın verdiği proje ile aynı
Başlık: vakitleri gösteren pano yardımı
Gönderen: POWER - 03 Ekim 2008, 20:44:01
Arkadaşlar power ile power19 ayni kişi zaten
Başlık: örnek vakitmatik
Gönderen: timpati - 07 Kasım 2008, 00:50:18
hazır almak isteyenler için bir örnek:

(http://www.grupelektronik.com/images/urunler/csaatisbuyuk.JPG)
(http://www.grupelektronik.com/images/urunler/membran.JPG)
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 24 Mart 2016, 21:31:09
@POWER , paylaştığın .rar dosyası bulunamadı uyarısı veriyor, tekrar paylaşabilir misin ?
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: POWER - 25 Mart 2016, 19:24:06
dosyayı tekrar yükledim arkadaşlar.877 ye 6 aylık veri sığıyor.fakat 18f452 ye 1 yıllık ezan vakitleri sığıyormuş bilginiz olsun.
http://www.dosya.tc/server7/wntnxc/VAKITMATIK.rar.html (http://www.dosya.tc/server7/wntnxc/VAKITMATIK.rar.html)
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: dursuncemal - 25 Mart 2016, 19:46:18
sabit veri yukleyerek bu is olmaz o isin hesabi var su an hesabin adi aklma gelmiyor.bulundugun yerin kordinatlarini girip hesaplama yapman gerekir.ama bu konuda en buyuk sikinti iyi bir rtc.zaninda boyle bir calismam olmustu eger bulursam kodu verebilirim.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: POWER - 25 Mart 2016, 20:11:24
evet sabit veri yükleyerek olmaz tabiki ama o zaman bu kadarını yapabilmiştim.bunun hesabını yapıpda paylaşan çıkmadı henüz.inşallah sizden bekliyoruz.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: dursuncemal - 25 Mart 2016, 20:14:05
bakiyim hocam hayli uzun sure once once yapmistim.eskileri bir karistirmam gerekiyor.bulursam atarim.hesaplamanin adini hatirladim julian tarihi
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 25 Mart 2016, 22:07:45
Ben işin astronomik verilere dayanan matematiksel formullerini oluşturdum gibi fakat, bazı aylarda sapmalar var sanırım bir kaç ayar daha yapmam gerekecek, biter bitmez paylaşacağım. @POWER hocam, devreniz için teşekkür ederim, sizin 6 aylık veriyi aktardığınız yazılım mevcut mu ? 74hc595 ve real time clock ayarlamaları vs. yazılımınızdan kullanabilirsem, vakit hesaplama kısmına daha çok odaklanıp tamamlayabilirim diye düşünüyorum. Böylece hem işlemciye yük bindirmeden sadece ezan hesaplama formullerine dayalı fonksiyon ile güzel bir proje tamamlayabiliriz. Bu yazılım kısmını da paylaşabilir misiniz .
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 25 Mart 2016, 22:10:02
Julian day enlem boylam vs. kullanarak güneşin doğuşu öğle güneşin batışı hesapladım. Şuan sıkıntı olan YATSI ile İKİNDİ ve bazı aylarda sapmalar yaşıyorum, ama 2 senelik uğraş sonucunda astronomiyi çözdüm neredeyse, bahsettiğim sorunları yakında çözünce sizlerle paylaşağım.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: bigbey - 26 Mart 2016, 13:53:48
Arkadaşlar bu iş için astrolojik olarak hesaplamak yetmiyor. Diyanet'in vermiş olduğu zamanlar yıl içersinde ( 0 ile 8 dk arasında) zamanlamalar değişiyor.
bu nedenle benim önerim şudur;
şubat ayı 29 çeken yıl takviminde bulunacak olan vakitleri kayıt edersiniz (eeprom içine) bu yılın takvimi uygundur.şubat 29 çekiyor.
kayıt işlemi bittikten sonra ikinci bir kayıt işlemimiz daha olacak, bu kayıt ise örnek verelim ana verilerimiz Ankara ili merkezine göre yazılmış olsun.
Erzurum ili için sadece Ankara ile Erzurum arasındaki zaman farkı kayıt edilecek ve tarihe göre Ankara kayıtı üzerinde diğer il zaman farkını ilave ederek ilgili il zamanını da bulmuş oluruz diye düşünüyorum.

Ayrıca konu iki ayrı sayfada takip ediliyor sanırım konuyu birleştirmek mi gerekir.. Acaba..
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: POWER - 26 Mart 2016, 14:14:29
@Voltajcı
6 aylık veriyi aktarmak için proğram yok.bu verileri el ile tek tek yazmıştım.zaten ordaki saatler gerçekten ezan vakitlerini göstermiyor.bir kaç gün için takvimdem el ile girdim daha sonra bunları diğer günlere copy-paste yaptım.diğer başlıkla bu başlık bencede birleştirilmeli.kolay gelsin
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 26 Mart 2016, 14:30:42
Alıntı yapılan: POWER - 26 Mart 2016, 14:14:29
@Voltajcı
6 aylık veriyi aktarmak için proğram yok.bu verileri el ile tek tek yazmıştım.zaten ordaki saatler gerçekten ezan vakitlerini göstermiyor.bir kaç gün için takvimdem el ile girdim daha sonra bunları diğer günlere copy-paste yaptım.diğer başlıkla bu başlık bencede birleştirilmeli.kolay gelsin

@POWER Aslında demek istediğim, upload ettiğiniz dosyanın içerisinde bulunan proteus çalışmasına ait hex dosyası var fakat yazılımı bulamadım ? O yazılımı açıp içerisine kendi yazdığım astronomik hesaplamalar içeren matematiksel formulleri ekleyeceğim, bölyece 6 aylık veri ile kısıtlı kalmayacağız.


edit : Hocam picbasic ile mi yazdınız ? Assembly ile mi ?
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Cemre. - 26 Mart 2016, 14:44:52
Bu vakitler nasıl hesaplanır bilgim yok açıkçası. Ancak benim bir önerim olabilir.

Eğer size gün doğumu ve gün batımı saatlerini hesaplamak yetiyorsa (yani bu saatlere dayanarak diğer saatler hesaplanabiliyorsa) bunu aşağıya yazacağım parametreleri girip hesaplatabileceğiniz bir yöntem var.

Enlem,
Boylam,
Gün,
Ay,
Yıl,
Saat,
Dakika,
Saniye.

Belki son üç parametre sizin için gerekmiyordur ancak benim bahsettiğim yöntem bu 8 parametre ile o anki Zenit ve Azimut açılarını, Gün Doğumu anını, Gün Batımı anını ve güneşlenme süresini hesaplayabiliyor. İşin güzel tarafı ise yukarıdaki bilginin tamamını tek bir sensörden (GPS) alabiliyorsunuz. Geriye bu veriyi işlemek kalıyor.

Bu yöntemi kullanarak bahsettiğim değerleri hesaplayan matlab kodunu yazmıştım ancak bu bir projede kullanılacak ve paylaşmam mümkün değil. Eğer anlattıklarım işinizi görüyorsa kaynak önerebilirim.

İyi çalışmalar, teşekkürler.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 26 Mart 2016, 14:52:17
Alıntı yapılan: Cemre. - 26 Mart 2016, 14:44:52
Bu vakitler nasıl hesaplanır bilgim yok açıkçası. Ancak benim bir önerim olabilir.

Eğer size gün doğumu ve gün batımı saatlerini hesaplamak yetiyorsa (yani bu saatlere dayanarak diğer saatler hesaplanabiliyorsa) bunu aşağıya yazacağım parametreleri girip hesaplatabileceğiniz bir yöntem var.

Enlem,
Boylam,
Gün,
Ay,
Yıl,
Saat,
Dakika,
Saniye.

Belki son üç parametre sizin için gerekmiyordur ancak benim bahsettiğim yöntem bu 8 parametre ile o anki Zenit ve Azimut açılarını, Gün Doğumu anını, Gün Batımı anını ve güneşlenme süresini hesaplayabiliyor. İşin güzel tarafı ise yukarıdaki bilginin tamamını tek bir sensörden (GPS) alabiliyorsunuz. Geriye bu veriyi işlemek kalıyor.

Bu yöntemi kullanarak bahsettiğim değerleri hesaplayan matlab kodunu yazmıştım ancak bu bir projede kullanılacak ve paylaşmam mümkün değil. Eğer anlattıklarım işinizi görüyorsa kaynak önerebilirim.

İyi çalışmalar, teşekkürler.

@POWER hocamın paylaştığı örnek Isis çalışmasının CCS C veya Micro C kodları olsa, proje bitti gibi aslında. Siz de kaynak önerebilirseniz var olan bilgilerle yeni bilgileri yoğururuz daha doğru verilere ulaşabiliriz belki. Şimdi iş ezan vakti olunca hata hatta hata payı bile olmamalı. Umarım, güzel bir çalışma ortaya çıkacaktır.
Teşekkürler @Cemre. 
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: POWER - 26 Mart 2016, 16:25:14
@Voltajcı
indirdiğin klasörün içinde pbp uzantılı dosya açık kodları içeren dosya.tekrar indir bence.ben denemek için şimdi tekrar indirdim istediğin dosya mevcut.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 26 Mart 2016, 17:50:18
@POWER hocam dediğiniz .pbp uzantılı dosyayı açtım önceden hiç pic basic pro kullanmadığım için uzantısını da görememişim kusura bakmayınız, teşekkür ederim. Fakat, ben şimdi pic basic pro öğrenene kadar yine 2-3 ay geçecek, picproje.org da yıllardır tamamlanmaya çalışan vakitmatik projesi uzamaya devam edecek, eğer vaktiniz el verirse bir ekip çalışması ile bu işi tamamlasak, kodlarınızı varsa bilginiz MicroC veya CCS C ile yazar mısınız, elimde ki kodlarla birleştirerek delikli pertinaksta hazırda beklettiğim devrede denemeler yaparak ideal bir vakitmatik oluşturacağıma inanıyorum. Ayrıca sd kart modül kullanarak 5 vakite ait farklı makamlarda ki ezanları da her vakitte okutmak ek olarak ezan duası eklemeyi istiyorum bunlar bitince, 3 adet buton ile kişinin hem saat ayarlaması yapabilmesini hemde dışarıdan şehir plaka numarası girerek Türkiye'nin her yerinde kullanılmasını sağlayabilirim. En son yapılacak olan düşüncem de cihaza cisim algılama sensörü eklemek, böylece kişi vakitmatiğin önünden her geçtiğinde kısa bir hadis veya güzel bir kelam seslendirmek.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: dursuncemal - 26 Mart 2016, 18:18:19


void  lcd_init();
void  send_cmd(unsigned char komut);
void  send_char(unsigned char bilgi);
void  busy();

#DEFINE   E               _RC7     
#DEFINE   RS              _RC5   
#DEFINE   RW              _RC6
#DEFINE   LCD_DATA        PORTB
#DEFINE   LCD_DATA_TRIS   TRISB
#DEFINE  _MESGUL          _RB7
 
#DEFINE  DISP_ON          0x0C         
#DEFINE  DISP_ON_C        0x0E         
#DEFINE  DISP_ON_B        0x0F         
#DEFINE  DISP_OFF         0x08         
#DEFINE  CLR_DISP         0x01         
#DEFINE  ENTRY_INC        0x06         
#DEFINE  ENTRY_INC_S      0x07         
#DEFINE  ENTRY_DEC        0x04         
#DEFINE  ENTRY_DEC_S      0x05         
#DEFINE  DD_RAM_ADDR      0x80         
#DEFINE  DD_RAM_UL        0x80
//-----------------------------------------------------------------------------
void  lcd_init(){
unsigned char a = 3;

  LCD_DATA_TRIS = 0;
  delay_ms(50);

while(a > 0){
            LCD_DATA = 0X38;
            E = 1;
            delay_us(20);
            E = 0;
            delay_ms (5);
      a--;
}

send_cmd(DISP_ON);
send_cmd(CLR_DISP);
send_cmd(DISP_OFF);
send_cmd(DISP_ON);
send_cmd(ENTRY_INC);

}
//

//-----------------------------------------------------------------------------
void  send_cmd(unsigned char komut){
     // LCD_DATA_TRIS = 0;
      busy();
      RW = 0;
      LCD_DATA = komut;
      E = 1;
      delay_us(5);
      E = 0;
      delay_us(5);
   
     
}
//----------------------------------------------------------------------------
void  send_char(unsigned char bilgi){
     // LCD_DATA_TRIS = 0;
      busy();
      RS = 1;
      RW = 0;
      LCD_DATA = bilgi;
      delay_us(1);
      E = 1;
      delay_us(1);
      E = 0;
      delay_us(1);
   
    }
//-----------------------------------------------------------------------------
void busy()
{
    RS=0;
    delay_us(4);
    RW=1;
    delay_us(4);
    E = 1;
LCD_DATA_TRIS  = 0B11111111;
delay_us(5);

#asm
bak:
bsf RW
nop
nop
nop
nop
nop
nop
nop
nop
bsf E
nop
nop
nop
nop
nop
nop
nop
nop
bcf E
nop
nop
nop
nop
nop
nop
nop
nop
btfss _mesgul
goto bak
#endasm

LCD_DATA_TRIS  = 0;
      E = 0;
      RW = 0;
   
}
/*
LCD_TRIS_PORT = 0xFF;                  // Set port to all input
        LCD_RW = 1;                     // Tell LCD we want to read
        delay_uS (1);
         
        delay_uS (1);
        retval = LCD_DATA_PORT;
        LCD_E = 0;
        LCD_TRIS_PORT = 0x00; 
        */




bu is icin oncelikle iyi bir rtc secmeniz lazim.kordinatlar icin birde cps modul eklerseniz tadindan yenmez.uzun zaman once bir calismam olmustu eskileri karistirdim.sadece buşabildiklerimi paylasiyorum.kod ccs de yazilmistir burdaki namaz.c julian takvimine gore hesaplamalari yapiyor.4x20 lcd kullanarak yapmistim isteyen istedigi gibi.ister lcd,ister7 segment lcd kulanir.

mesaj birleştirme:: 27 Mart 2016, 09:19:26





#include <main.h>
#include <d18io.h>
#include "D:\NAMAZC\LCD.H"
#include "PCF8583.h"
#include "namaz.h"
#define satir1 0x80
#define satir2 0xC0
#define satir3 0x94
#define satir4 0xD4

///////////////////////////////////////////////////////////////////////////////

#define cikis   0xff
#define giris  0
///////////////////////////////////////////////////////////////////////////////
int8 tus_bilgi, ezan = 7;
int8 menu;
int8 alt_menu;
int8 i;
date_time_t dt;
int8 saatBuff, dakikaBuff, tarihGunBuff,tarihAyBuff, tarihYilBuff;
boolean menuSet=0;
boolean  _flash = 0, _goster = 0;
int16 gecikme = 500,goster = 3000;
zaman alarmOn, alarmOff;
///////////////////////////////////////////////////////////////////////////////
boolean    tus_izin = 0;

const char yaz[19][29] = {
                         {"      DATE SET      "},
                         {"      TIME SET      "},
                         {"     ENLEM SET      "},
                         {"     BOYLAM SET     "},
                         {"     IMSAK SET      "},
                         {"     GUNES SET      "},
                         {"      OGLE SET      "},
                         {"     IKINDI SET     "},
                         {"     AKSAM SET      "},
                         {"     YATSI SET      "},
                         {"     GENEL SET      "},
                         {"  IMSAK TEMKIN SET  "},
                         {"  GUNES TEMKIN SET  "},
                         {"  OGLE TEMKIN SET   "},
                         {" IKINDI TEMKIN SET  "},
                         {"  AKSAM TEMKIN SET  "},
                         {"  YATSI TEMKIN SET  "},
                         {"   YAZ SAATI SET    "},
                         {"    KONTRAST SET    "},
                                              };

///////////////////////////////////////////////////////////////////////////////

               
int8     m_ust[19][3] = {
               {31,12,99},  //Tarih
               {24,59,59},  //Saat
               {99,99,'S'}, //Enlem 41,02
               {99,99,'S'}, //boylam 28,97
               {60,60,'S'}, //imsak role
               {60,60,'S'}, //gunes role
               {60,60,'S'}, //ogle role
               {60,60,'S'}, //ikindi role
               {60,60,'S'}, //aksam role
               {60,60,'S'}, //yatsi role
               {60,60,'S'}, //global role
               {15,30,'S'}, //temkin imsak
               {15,30,'S'}, //temkin gunes
               {15,30,'S'}, //ogle
               {15,'S','S'}, // ikindi         14
               {15,30,'S'}, //temkin aksam
               {15,30,'S'}, //yatsı
               {1,'S','S'}, // yaz saati
               {99,'S','S'}, //kontrast
               };         
signed int8     m_alt[19][3] = {
               {0,0,0},  //Tarih
               {0,0,0},  //Saat
               {0,0,'S'}, //Enlem 41,02
               {0,0,'S'}, //boylam 28,97
               {0,0,'S'}, //imsak role
               {0,0,'S'}, //gunes role
               {0,0,'S'}, //ogle role
               {0,0,'S'}, //ikindi role
               {0,0,'S'}, //aksam role
               {0,0,'S'}, //yatsi role
               {0,0,'S'}, //global role
               {-15,0,'S'}, //temkin imsak
               {-15,0,'S'}, //temkin gunes
               {-15,0,'S'}, //ogle
               {-15,'S','S'}, // ikindi 
               {-15,0,'S'}, //temkin aksam
               {-15,0,'S'}, //yatsı
               {0,'S','S'}, // yaz saati
               {0,'S','S'}, //kontrast
               };

////////////////////////////////////////////////////////////////////////////////
signed int8    m_table[19][4] = {
               {30,11,11,3},  //Tarih         0
               {12,15,00,3},  //Saat          1
               {25,23,'S',2}, //Enlem 41,02   2
               {28,97,'S',2}, //boylam 28,97  3               
               
               {15,15,'S',2}, //imsak role    4
               {15,15,'S',2}, //gunes role    5
               {15,15,'S',2}, //ogle role     6
               {15,15,'S',2}, //ikindi role   7
               {15,15,'S',2}, //aksam role    8
               {15,15,'S',2}, //yatsi role    9
               {15,15,'S',2}, //global role   10 
               
               {0,'S','S',1}, //temkin imsak    11
               {0,'S','S',1}, // gunes          12
               {0,'S','S',1}, //temkin ogle     13
               {0,'S','S',1}, // ikindi         14
               {0,'S','S',1}, //temkin aksam    15
               {0,'S','S',1}, //yatsı           16
               {0,'S','S',1}, // yaz saati      17
               {80,'S','S',1}, //kontrast       18
               
               };
////////////////////////////////////////////////////////////////////////////////
void ee_reflesh() {
int8 a = 2;
disable_interrupts(GLOBAL);
while(a < 19){
set_pwm1_duty(30);
m_table[a][0] = read_eeprom(a*2);
m_table[a][1] = read_eeprom(a*2+1);

a++;

}
}
void ezanVaktiYaz(char ezan)
{
   char aa[11];
   zaman ezanSaati, onEzanRole, offEzanRole;
   switch (ezan)
   {
      case 0 : aa = "IMSAK  :";
               ezanSaati = imsak;
               onEzanRole = onImsak;
               offEzanRole = offImsak;
               break;
      case 1 : aa = "GUNES  :";
               ezanSaati = gunes;
               onEzanRole = onGunes;
               offEzanRole = offGunes;
               break;     
      case 2 : aa = "OGLE   :";
               ezanSaati = ogle;
               onEzanRole = onOgle;
               offEzanRole = offOgle;
               break;     
      case 3 : aa = "IKINDI :";//10 karakter
               ezanSaati = ikindi;
               onEzanRole = onIkindi;
               offEzanRole = offIkindi;
               break;     
      case 4 : aa = "AKSAM  :";
               ezanSaati = aksam;
               onEzanRole = onAksam;
               offEzanRole = offAksam;
               break;
      case 5 : aa = "YATSI  :";
               ezanSaati = yatsi;
               onEzanRole = onYatsi;
               offEzanRole = offYatsi;     
     
   }
 
   
   send_cmd(satir1);
   printf(send_char,"%s    %02i:%02i   ", aa, ezanSaati.saat,ezanSaati.dakika);

   send_cmd(satir2);
   printf(send_char,"--------------------");
   
   send_cmd(satir3);
   printf(send_char,"ON  TIME :  %02i:%02i   ",onEzanRole.saat,onEzanRole.dakika);

   send_cmd(satir4);
   printf(send_char,"OFF TIME :  %02i:%02i   ",offEzanRole.saat, offEzanRole.dakika);


}
boolean zamanKontrol(zaman zamanOff1, zaman zamanOff2)
{
   boolean aralik = FALSE;
   int16 anlikDakika = (int16)dt.hours * 60 + dt.minutes;
   if (((int16)zamanOff1.saat * 60 + zamanOff1.dakika) < anlikDakika &&  anlikDakika < ((int16)zamanOff2.saat * 60 + zamanOff2.dakika)) aralik = TRUE;
   return aralik;
}
////////////////////////////////////////////////////////////////////////////////
void ezanVaktiHesapla()
{
   ee_reflesh();   
   set_pwm1_duty(0);
   PCF8583_init();
   PCF8583_read_datetime(&dt);
   gun = dt.day;
   ay = dt.month;
   yil = dt.year + 2000;
   
   userTemkin.imsak = m_table[11][0];
   userTemkin.gunes = m_table[12][0];
   userTemkin.ogle = m_table[13][0];
   userTemkin.ikindi = m_table[14][0];
   userTemkin.aksam = m_table[15][0];
   userTemkin.yatsi = m_table[16][0];

   enlem = 41.02;//((int16)m_table[2][0]*100 +m_table[2][1]) / 100.0;
   boylam = 28.97;//((int16)m_table[3][0]*100 +m_table[3][1]) / 100.0;
   yazSaati = m_table[17][0];
   NamazVakti();
   
   onImsak = setOnOff(imsak,-m_table[4][0]); //imsak on
   offImsak = setOnOff(imsak,m_table[4][1]);//imsak off
     
   onGunes = setOnOff(gunes,-m_table[5][0]); //Güneş on
   offGunes = setOnOff(gunes,m_table[5][1]);//Güneş off
   if (zamanKontrol(offImsak, offGunes)) ezan = 1;
   
   onOgle = setOnOff(ogle,-m_table[6][0]);   //Ogle on
   offOgle = setOnOff(ogle,m_table[6][1]);  //Ogle off
   if (zamanKontrol(offGunes, offOgle)) ezan = 2;
   
   onIkindi = setOnOff(ikindi,-m_table[7][0]); //ikindi on
   offIkindi = setOnOff(ikindi,m_table[7][1]);//ikindi off
   if (zamanKontrol(offOgle, offIkindi)) ezan = 3;
   
   onAksam = setOnOff(aksam,-m_table[8][0]);   //Aksam on
   offAksam = setOnOff(aksam,m_table[8][1]);  //Aksam off
   if (zamanKontrol(offIkindi, offAksam)) ezan = 4;
   
   onYatsi = setOnOff(yatsi,-m_table[9][0]);   //yatsi on
   offYatsi = setOnOff(yatsi,m_table[9][1]);  //yatsi off
   if (zamanKontrol(offAksam, offYatsi)) ezan = 5;
   
   zaman gece;
   gece.saat = 24; gece.dakika = 0;
   if (zamanKontrol(offYatsi, gece)) ezan = 5;
}
void kontrolRTC()
{
   boolean dursun = 0;
   if (tarihGunBuff != m_table[0][0])  {dt.day = m_table[0][0]; dursun = 1;}
   if (tarihAyBuff != m_table[0][1]) {dt.month = m_table[0][1]; dursun = 1;}
   if (tarihYilBuff != m_table[0][2]) {dt.year = m_table[0][2]; dursun = 1;}
   
   if (saatBuff != m_table[1][0]) {dt.hours = m_table[1][0]; dursun = 1;}
   if (dakikaBuff != m_table[1][1]) {dt.minutes = m_table[1][1]; dursun = 1;} 
   dt.seconds = 0;
   
   if (dursun) PCF8583_set_datetime(&dt);
}

///////////////////////////////////////////////////////////////////////////////
void ee_yaz() {
int8 a = 2;
disable_interrupts(GLOBAL);
set_pwm1_duty(30);
while(a < 19){

write_eeprom(a*2,m_table[a][0]);//  m_table[a][0] = read_eeprom(a*2);
write_eeprom(a*2+1,m_table[a][1]);   // m_table[a][1] = read_eeprom(a*2+1);

a++;

}
set_pwm1_duty(0);

enable_interrupts(GLOBAL);
}
///////////////////////////////////////////////////////////////////////////////

void tus_oku(){

delay_ms(5);
trisb = 0xff;
_RA0 = 0;

if(portb == 0xff){tus_izin = 1;};

if(tus_izin && portb != 0xff){tus_bilgi = portb; tus_izin = 0;}

_RA0 = 1;
                     
trisb = 0;

}

void islem(){

tarihGunBuff = m_table[0][0] = dt.day;
tarihAyBuff = m_table[0][1] = dt.month;
tarihYilBuff = m_table[0][2] = dt.year;

saatBuff = m_table[1][0] = dt.hours;
dakikaBuff = m_table[1][1] = dt.minutes;

send_cmd(CLR_DISP);

while(menuSet){
tus_oku();

if(tus_bilgi == 223)
{
   if(menu < 18){
         ee_yaz();
         if (menu == 0 || menu == 1) {kontrolRTC();}
         menu++;
         alt_menu = 0;
   }
}//menu yukarı


if(tus_bilgi == 239){if(menu > 0){ee_yaz();if (menu == 0 || menu == 1) {kontrolRTC();} menu--; alt_menu = 0;}}// menu asagı

if(tus_bilgi == 251){if(alt_menu  <  m_table[menu][3]){ alt_menu ++; if(alt_menu == m_table[menu][3]){alt_menu = 0;} }}//altmenu artır azalt

if(tus_bilgi == 191){if(m_table[menu][alt_menu] <  m_ust[menu][alt_menu]){ m_table[menu][alt_menu] ++; }}//degısken artır

if(tus_bilgi == 127){if(m_table[menu][alt_menu] > m_alt[menu][alt_menu]){ m_table[menu][alt_menu]--; }}//degısken azalt



  send_cmd(0X80); for(i=0; yaz[menu][i] != '\0';i++) send_char(yaz[menu][i]);
  send_cmd(0XC0); printf(send_char,"--------------------");

  if (menu >= 4 && menu <= 10)
  {
      send_cmd(0X94); 
      if(m_table[menu][3]==2 ) printf(send_char,"   ON:-%02i  OFF:%02i", m_table[menu][0], m_table[menu][1]);
      send_cmd(0XD4);
 
  if(_flash){
            if(alt_menu == 0){ printf(send_char,"       --          ");}
            if(alt_menu == 1){ printf(send_char,"               --  ");}
            }
            else{printf(send_char,"                   ");}
  }
  else
  {
     send_cmd(0X94 ); 
     if(m_table[menu][3]==3 ) printf(send_char,"      %02i.%02i.%02i", m_table[menu][0], m_table[menu][1],m_table[menu][2]);
     
     if(m_table[menu][3]==2 ) {printf(send_char,"      %02i.%02i      ", m_table[menu][0], m_table[menu][1]);}
     
     if(m_table[menu][3]==1 ){

              if (menu >= 11 && menu <= 16){
                                             if(m_table[menu][0] < 0){
                                                                      printf(send_char,"         %i         ", m_table[menu][0]);
                                                                     }else{ printf(send_char,"         %02i         ", m_table[menu][0]);
                                                                           
                                                                           }
                                           
                                           
                                            } else{ printf(send_char,"         %02i         ", m_table[menu][0]);}}

     
     
     
     send_cmd(0XD4 +2 );
     
if(_flash == true){
     if(alt_menu == 0){
                      if(menu > 10 )printf(send_char,"       --         ");
                      else printf(send_char,"    --            ");
                                     
                      }
     
     
     if(alt_menu == 1){ printf(send_char,"       --         ");}
     if(alt_menu == 2){ printf(send_char,"          --      ");}
     
     
     
     
  }else{ printf(send_char,"                ");}
     }
 
      if (tus_bilgi == 247) menuSet = FALSE;
      tus_bilgi = 0;
     
  }
  ee_yaz();
  menu = 0;
  ezanVaktiHesapla();
  send_cmd(CLR_DISP);
}
///////////////////////////////////////////////////////////////////////////////MAİN
void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16|RTCC_8_bit);      //2.0 ms overflow
   setup_timer_2(T2_DIV_BY_16,124,1);      //1.0 ms overflow, 1.0 ms interrupt
   setup_ccp1(CCP_PWM);
   setup_ccp2(CCP_PWM);
   set_pwm1_duty(0);
   set_pwm2_duty(30);
   setup_comparator(NC_NC_NC_NC);
   enable_interrupts(INT_RTCC);
   disable_interrupts(GLOBAL);
   TRISB = 0;
   PORTB = 0;
   TRISC = 0;
   PORTC = 0;
   TRISA = 0;
   delay_ms(100);
   lcd_init();
   delay_ms(100);
   send_cmd(CLR_DISP);
   port_b_pullups(0b11111111);
   menu = 0;
   alt_menu = 0;
   
/*
signed int8    m_table[19][4] = {
               {30,11,11,3},  //Tarih         0
               {12,15,00,3},  //Saat          1
               {25,23,'S',2}, //Enlem 41,02   2
               {28,97,'S',2}, //boylam 28,97  3               
               
               {15,15,'S',2}, //imsak role    4
               {15,15,'S',2}, //gunes role    5
               {15,15,'S',2}, //ogle role     6
               {15,15,'S',2}, //ikindi role   7
               {15,15,'S',2}, //aksam role    8
               {15,15,'S',2}, //yatsi role    9
               {15,15,'S',2}, //global role   10 
               
               {-17,'S','S',1}, //temkin imsak    11
               {0,'S','S',1}, // gunes          12
               {0,'S','S',1}, //temkin ogle     13
               {0,'S','S',1}, // ikindi         14
               {0,'S','S',1}, //temkin aksam    15
               {0,'S','S',1}, //yatsı           16
               {0,'S','S',1}, // yaz saati    17
               {80,'S','S',1}, //kontrast     18
               
               };*/




   if(read_eeprom(254) != 13 ){
                                                     
                               for (i = 0 ; i < 254  ;i++){write_eeprom(i,0);}                                                 
                               write_eeprom(254,13);                                             
                                                     }

  ee_reflesh();   
  set_pwm1_duty(0);
  ezanVaktiHesapla();

  PCF8583_init();




for(;;){ 

   

   tus_oku();
   if (tus_bilgi == 251) {tus_bilgi = 0 ; menuSet=TRUE;}
   if (menuSet) islem();
   PCF8583_read_datetime(&dt);
   delay_ms(100);

   if (_goster){
      ezanVaktiYaz(ezan);
   }
   else
   {
      send_cmd(0x80);
      printf(send_char," %02i/%02i/%02i",dt.day,dt.month,dt.year);
     
      printf(send_char,"   %02i:%02i:%02i",dt.hours, dt.minutes,dt.seconds);   
      set_pwm2_duty(30);

   
      send_cmd(0xC0);
      printf(send_char," IM:%02i:%02i   GU:%02i:%02i", imsak.saat, imsak.dakika, gunes.saat, gunes.dakika);
     
      send_cmd(0x94);
      printf(send_char," OG:%02i:%02i   IK:%02i:%02i", ogle.saat, ogle.dakika, ikindi.saat, ikindi.dakika);
     
      send_cmd(0xD4);
      printf(send_char," AK:%02i:%02i   YA:%02i:%02i", aksam.saat, aksam.dakika, yatsi.saat, yatsi.dakika); 
   }
   

}
}
/////////////////////////////////////////////////////////////////////////////
#int_RTCC

void  RTCC_isr(void)
{
if(gecikme){gecikme--;}else {gecikme = 200; _flash = ! _flash;}
if(goster){goster--;}else {goster = 3000; _goster = !_goster;}
}






anaprogram

mesaj birleştirme:: 27 Mart 2016, 09:19:59


#include <18F2520.h>
#FUSES NOWDT, WDT128, INTRC_IO, NOFCMEN, NOIESO, NOPUT, NOBROWNOUT, BORV20, NOPBADEN, NOLPT1OSC, NOMCLR, STVREN, NOLVP, NOXINST, NODEBUG, NOPROTECT, NOCPB, NOCPD, NOWRT, NOWRTC, NOWRTB, NOWRTD, NOEBTR, NOEBTRB
#use delay(clock=8000000,RESTART_WDT)
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3)


mesaj birleştirme:: 27 Mart 2016, 09:20:44


#include <math.h>
#define piB2 1.570796326 // pi / 2
#define RAD  0.017453293 // RADYAN M_PI/180
#define DER  57.295779513 // DERECE 180/M_PI

typedef struct {
   signed int8 saat,dakika;
} zaman;

typedef struct{
    signed int8 imsak;
    signed int8 gunes;
    signed int8 ogle;
    signed int8 ikindi;
    signed int8 aksam;
    signed int8 yatsi;
} sTemkin;
zaman imsak, gunes, ogle, ikindi, aksam, yatsi;
zaman onImsak, onGunes, onOgle, onIkindi, onAksam, onYatsi;
zaman offImsak, offGunes, offOgle, offIkindi, offAksam, offYatsi;
sTemkin temkin, userTemkin;

void NamazVakti(void);
void namazVaktiHesapla();
void temkinAyarla();
float32 JulianTarihi();
zaman setOnOff(zaman saat_dk, signed int sure);

float32 bTam(float32 tm);
float32 cot(float32 tm);
float32 myCos(float32 tm);
float32 acot(float32 tm);

float32 enlem;
float32 boylam;
signed int8 yazSaati;
signed int8 saat;
signed int8 dakika;
int16 yil, ttemp;
int8 ay;
int8 gun;
zaman setOnOff(zaman ezanSaati, signed int8 sure)
{
   zaman donus;
   int16 toplamDakika;
   toplamDakika = (int16)ezanSaati.saat * 60 + ezanSaati.dakika + sure;
   donus.saat = toplamDakika / 60;
   donus.dakika = toplamDakika % 60;
   return donus;
}
void temkinAyarla() {
    temkin.imsak = -2 + userTemkin.imsak;
    temkin.gunes = -7 + userTemkin.gunes;
    temkin.ogle = 6 + userTemkin.ogle;
    temkin.ikindi = 5 + userTemkin.ikindi;
    temkin.aksam = 8 + userTemkin.aksam;
    temkin.yatsi = 3 + userTemkin.yatsi;
}

void NamazVakti(void){
     temkinAyarla();
     namazVaktiHesapla();
}
/*float32 mutlakDeger(float32 sayi)
{
    if (sayi >= 0)
        return sayi;
    else
        return -sayi;
}*/

float32 bTam(float32 tm) {
    if (tm >= 0)
      return tm - ((int32)(tm / 360) * 360);
    else
      return  360 - abs(tm) + ((int32)(abs(tm) / 360) * 360);
   
}


float32 cot(float32 tm) {
    return cos(tm) / sin(tm);
}

float32 myCos(float32 tm) {
    return acos(tm) * DER;
}

float32 acot(float32 tm) {
    return piB2 - atan(tm);
}


void saatDuzelt(){
   if (dakika >= 60)
   {
      dakika = dakika - 60;
      saat = saat + 1;
   }
   
   if (dakika < 0)
   {
      dakika = dakika + 60;
      saat = saat - 1;
   }
}
float32 JulianTarihi() {
    int16 artikYil;//yıl - 1900
    int16 sigs = gun;
    int8 i;
    char ayGunu[]={31,28,31,30,31,30,31,31,30,31,30,31};   
    artikYil = yil-1900;// Yıl 2011 ise, tm_tarih->tm_year komutu (2011-1900) 111 sonucunu verir. Yani yil = 111 olur.
    if (artikYil % 4 == 0) ayGunu[1] = 29;//Şubat ayı
    for (i = 0; i <= ay - 2; i++) sigs += ayGunu[i];
    ttemp = sigs;
    float32 jdn = (365*artikYil)+((int8)((artikYil-1)/4))+sigs;// miladi 00.01.1900 = 31 Aralık 1899 julian 2415020   
    return jdn + 0.5;
}

void namazVaktiHesapla() {

    float32 ikindi_acisi;
    float32 tmpY = 0;
    float32 T = 0;

    int8 _ulkesaati = 2 + yazSaati;

    float32 vgunes = 0;
    float32 vyatsi = 0;
    float32 vaksam = 0;
    float32 vimsak = 0;
    float32 vogle = 0;
    float32 vikindi = 0;
    float32 ogleNamazi = 0;
   
    float32 L0 = 0;
    float32 M0 = 0;
    float32 e = 0;
    float32 Ct = 0;
    float32 L = 0;
    float32 M = 0;
    float32 eps = 0;
    float32 delta = 0;
    float32 RA = 0;
    float32 ET = 0;
    float32 gOgle = 0;
    float32 sR = 0;
    float32 powT2 = 0;
    float32 aci;

    T = JulianTarihi() / 36525;// Bir yuzyıl 36525 gündür. (365 * 100) + (100 / 4) = 36525
    powT2 = pow(T, 2);

    L0 = 279.69668 + 36000.76892 * T + 0.0003025 * powT2;
    L0 = bTam(L0);
    M0 = 358.47583 + 35999.04975 * T - 0.00015 * powT2 - 0.0000033 * powT2*T;
    M0 = bTam(M0);
    e = 0.01675104 - 0.0000418 * T - 0.000000126 * powT2;
    Ct = (1.91946 - (0.004789 * T) - (0.000014 * powT2)) * sin(RAD*M0) + (0.020094 - (0.0001 * T)) * sin(RAD*2 * M0) + (0.000293 * sin(RAD*3 * M0));
    L = L0 + Ct;
   
    aci = RAD * bTam(259.18 - 1934.142 * T); 
   
    L = L - 0.000015708 * sin(aci);

    M = M0 + Ct;

    eps = 23.452294 - 0.0130125 * T - 0.00000165 * powT2 + 0.000000503 * powT2 * T;

    delta = DER * asin(sin(RAD*eps) * sin(RAD*L));
   
    delta = bTam(delta);

    RA = DER * atan(cos(RAD*eps) * tan(RAD*L));
    RA = bTam(RA);

    tmpY = pow(tan(RAD*eps / 2), 2);

    ET = tmpY * sin(RAD*2 * L0) - 2 * e * sin(RAD*M0) + 4 * e * tmpY * sin(RAD*M0) * cos(RAD*2 * L0) - (1 / 2) * tmpY * tmpY * sin(RAD*4 * L0) - (5 / 4) * e * e * sin(RAD*2 * M0);

    ET = -(ET / RAD) / 15;

    gOgle = 12 + ET;

    vogle = gOgle - ((boylam / 15) - _ulkesaati); //Zeval Vakti

    ogleNamazi = vogle;
   
//********************* öğle **********************
    saat = (int8) (ogleNamazi);
    dakika = (int8) ((ogleNamazi - saat) * 60);
    dakika = dakika + temkin.ogle + 2;
    saatduzelt();
    ogle.saat = saat;
    ogle.dakika = dakika;

    sR = 90 -(enlem - delta);
   
    float32 sin_deltaXenlem = sin(RAD*delta) * sin(RAD*enlem);
    float32 cos_deltaXenlem = cos(RAD*delta) * cos(RAD*enlem);

//************ imsak **********************************
    vimsak = vogle - myCos((-0.3090170026 - sin_deltaXenlem) / (cos_deltaXenlem)) / 15;//-0.309017002593046
        saat = (int8) (vimsak);
        dakika = (int8) ((vimsak - saat) * 60);
        dakika = dakika + temkin.imsak;
        saatduzelt();
        imsak.saat = saat;
        imsak.dakika = dakika;
//************ güneş **********************************       
    vgunes = vogle - myCos((-0.017452234123174 - sin_deltaXenlem) / (cos_deltaXenlem)) / 15;
        saat = (int8) (vgunes);
        dakika = (int8) ((vgunes - saat) * 60);
        dakika = dakika + temkin.gunes;
        saatDuzelt();
        gunes.saat = saat;
        gunes.dakika = dakika;

//************ ikindi **********************************
    ikindi_acisi = acot(cot(RAD*sR) + 1);
    vikindi = vogle + myCos((sin(ikindi_acisi) - sin_deltaXenlem) / (cos_deltaXenlem)) / 15;
        saat = (int8) (vikindi);
        dakika = (int8) ((vikindi - saat) * 60);
        dakika = dakika + temkin.ikindi;
        saatDuzelt();
        ikindi.saat = saat;
        ikindi.dakika = dakika;
//************ aksam **********************************
    vaksam = vogle + myCos((-0.017452234123174 - sin_deltaXenlem) / (cos_deltaXenlem)) / 15;
        saat = (int8) (vaksam);
        dakika = (int8) ((vaksam - saat) * 60);
        dakika = dakika + temkin.aksam;
        saatDuzelt();
        aksam.saat = saat;
        aksam.dakika = dakika;
//************ yatsı **********************************
  // vyatsi = vogle + myCos((sin(RAD*(-17)) - sin_deltaXenlem) / (cos_deltaXenlem)) / 15;
   
   vyatsi = vogle + myCos((-0.29237155 - sin_deltaXenlem) / (cos_deltaXenlem)) / 15;
        saat = (int8) (vyatsi);
        dakika = (int8) ((vyatsi - saat) * 60);
        dakika = dakika + temkin.yatsi;
        saatDuzelt();
        yatsi.saat = saat;
        yatsi.dakika = dakika;
}

@POWER julian tarihi hesaplama

mesaj birleştirme:: 27 Mart 2016, 09:21:20

#ifndef PCF8583_SDA
#define PCF8583_SDA  PIN_C4
#define PCF8583_SCL  PIN_C3
#endif

#use i2c(master, sda=PCF8583_SDA, scl=PCF8583_SCL)

#ifndef PCF8583_WRITE_ADDRESS
#define PCF8583_WRITE_ADDRESS 0xA0
#define PCF8583_READ_ADDRESS  0xA1
#endif

// Register addresses
#define PCF8583_CTRL_STATUS_REG    0x00
#define PCF8583_100S_REG           0x01
#define PCF8583_SECONDS_REG        0x02
#define PCF8583_MINUTES_REG        0x03
#define PCF8583_HOURS_REG          0x04
#define PCF8583_DATE_REG           0x05
#define PCF8583_MONTHS_REG         0x06
#define PCF8583_TIMER_REG          0x07

#define PCF8583_ALARM_CONTROL_REG  0x08
#define PCF8583_ALARM_100S_REG     0x09
#define PCF8583_ALARM_SECS_REG     0x0A
#define PCF8583_ALARM_MINS_REG     0x0B
#define PCF8583_ALARM_HOURS_REG    0x0C
#define PCF8583_ALARM_DATE_REG     0x0D
#define PCF8583_ALARM_MONTHS_REG   0x0E
#define PCF8583_ALARM_TIMER_REG    0x0F

// Use the first NVRAM address for the year byte.
#define PCF8583_YEAR_REG           0x10


// Commands for the Control/Status register.
#define PCF8583_START_COUNTING     0x00
#define PCF8583_STOP_COUNTING      0x80



/*char const weekday_names[7][10] =
{
{"Sunday"},
{"Monday"},
{"Tuesday"},
{"Wednesday"},
{"Thursday"},
{"Friday"},
{"Saturday"}
};  */ 
               
// This structure defines the user's date and time data.
// The values are stored as unsigned integers.  The user
// should declare a structure of this type in the application
// program. Then the address of the structure should be
// passed to the PCF8583 read/write functions in this
// driver, whenever you want to talk to the chip.
typedef struct
{
int8 seconds;    // 0 to 59
int8 minutes;    // 0 to 59
int8 hours;      // 0 to 23  (24-hour time)
int8 day;        // 1 to 31
int8 month;      // 1 to 12
int8 year;       // 00 to 99
int8 weekday;    // 0 = Sunday, 1 = Monday, etc.
}date_time_t;


//----------------------------------------------
void PCF8583_write_byte(int8 address, int8 data)
{
   disable_interrupts(GLOBAL);
   i2c_start();
   i2c_write(PCF8583_WRITE_ADDRESS);
   i2c_write(address);
   i2c_write(data);
   i2c_stop();
   enable_interrupts(GLOBAL);
}   

//----------------------------------------------
int8 PCF8583_read_byte(int8 address)
{
   int8 retval;
   
   disable_interrupts(GLOBAL);
   i2c_start();
   i2c_write(PCF8583_WRITE_ADDRESS);
   i2c_write(address);
   i2c_start();
   i2c_write(PCF8583_READ_ADDRESS);
   retval = i2c_read(0);
   i2c_stop();
   enable_interrupts(GLOBAL);
   return(retval);
}   


void PCF8583_init(void)
{
   PCF8583_write_byte(PCF8583_CTRL_STATUS_REG,
                                 PCF8583_START_COUNTING);
}   

//----------------------------------------------
// This function converts an 8 bit binary value
// to an 8 bit BCD value.
// The input range must be from 0 to 99.

int8 bin2bcd(int8 value)
{
char retval;

retval = 0;

for(;;)
  {
   // Get the tens digit by doing multiple subtraction
   // of 10 from the binary value.
   if(value >= 10)
     {
      value -= 10;
      retval += 0x10;
     }
   else // Get the ones digit by adding the remainder.
     {
      retval += value;
      break;
     }
   }

return(retval);
}

//----------------------------------------------
// This function converts an 8 bit BCD value to
// an 8 bit binary value.
// The input range must be from 00 to 99.

char bcd2bin(char bcd_value)
{
char temp;

temp = bcd_value;

// Shifting the upper digit right by 1 is
// the same as multiplying it by 8.
temp >>= 1;

// Isolate the bits for the upper digit.
temp &= 0x78;

// Now return: (Tens * 8) + (Tens * 2) + Ones
return(temp + (temp >> 2) + (bcd_value & 0x0f));

}

//----------------------------------------------
void PCF8583_set_datetime(date_time_t *dt)
{
int8 bcd_sec;
int8 bcd_min;
int8 bcd_hrs;
int8 bcd_day;
int8 bcd_mon;

// Convert the input date/time into BCD values
// that are formatted for the PCF8583 registers. 
bcd_sec = bin2bcd(dt->seconds);
bcd_min = bin2bcd(dt->minutes);
bcd_hrs = bin2bcd(dt->hours);   
bcd_day = bin2bcd(dt->day) | (dt->year << 6);
bcd_mon = bin2bcd(dt->month) | (dt->weekday << 5);

// Stop the RTC from counting, before we write to
// the date and time registers.
PCF8583_write_byte(PCF8583_CTRL_STATUS_REG,
                              PCF8583_STOP_COUNTING);

// Write to the date and time registers.  Disable interrupts
// so they can't disrupt the i2c operations.
disable_interrupts(GLOBAL);
i2c_start();
i2c_write(PCF8583_WRITE_ADDRESS);
i2c_write(PCF8583_100S_REG);   // Start at 100's reg.   
i2c_write(0x00);               // Set 100's reg = 0
i2c_write(bcd_sec); 
i2c_write(bcd_min);
i2c_write(bcd_hrs);   
i2c_write(bcd_day);
i2c_write(bcd_mon);
i2c_stop();
enable_interrupts(GLOBAL);

// Write the year byte to the first NVRAM location.
// Leave it in binary format.
PCF8583_write_byte(PCF8583_YEAR_REG, dt->year);

// Now allow the PCF8583 to start counting again.
PCF8583_write_byte(PCF8583_CTRL_STATUS_REG,
                              PCF8583_START_COUNTING);
}

//----------------------------------------------
// Read the Date and Time from the hardware registers
// in the PCF8583.   We don't have to disable counting
// during read operations, because according to the data
// sheet, if any of the lower registers (1 to 7) is read,
// all of them are loaded into "capture" registers.
// All further reading within that cycle is done from
// those registers.

void PCF8583_read_datetime(date_time_t *dt)
{
int8 year_bits;
int8 year;

int8 bcd_sec;
int8 bcd_min;
int8 bcd_hrs;
int8 bcd_day;
int8 bcd_mon;

// Disable interrupts so the i2c process is not disrupted.
disable_interrupts(GLOBAL);

// Read the date/time registers inside the PCF8583.
i2c_start();
i2c_write(PCF8583_WRITE_ADDRESS);
i2c_write(PCF8583_SECONDS_REG);   // Start at seconds reg.
i2c_start();
i2c_write(PCF8583_READ_ADDRESS);

bcd_sec = i2c_read();     
bcd_min = i2c_read();     
bcd_hrs = i2c_read(); 
bcd_day = i2c_read();
bcd_mon = i2c_read(0);
i2c_stop();

enable_interrupts(GLOBAL);

// Convert the date/time values from BCD to
// unsigned 8-bit integers.  Unpack the bits
// in the PCF8583 registers where required.
dt->seconds = bcd2bin(bcd_sec);     
dt->minutes = bcd2bin(bcd_min);     
dt->hours   = bcd2bin(bcd_hrs & 0x3F); 
dt->day     = bcd2bin(bcd_day & 0x3F);
dt->month   = bcd2bin(bcd_mon & 0x1F);
dt->weekday = bcd_mon >> 5;
year_bits   = bcd_day >> 6;   

// Read the year byte from NVRAM.
// This is an added feature of this driver.
year = PCF8583_read_byte(PCF8583_YEAR_REG);

// Check if the two "year bits" were incremented by
// the PCF8583.  If so, increment the 8-bit year
// byte (read from NVRAM) by the same amount.
while(year_bits != (year & 3))
      year++;

dt->year = year;

// Now update the year byte in the NVRAM
// inside the PCF8583.
PCF8583_write_byte(PCF8583_YEAR_REG, year);

}

mesaj birleştirme:: 27 Mart 2016, 09:23:37

bulundugunuz yerin kordinatlarini girdiginizde namaz vaktini hesaplayabilirsiniz yanliz rtc icin iyi bir kristal secerseniz zaman kaymalari minimum olur.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: POWER - 26 Mart 2016, 19:08:31
@Voltajcı
malesef pbp dan başka dil bilmiyorum,bu dildede seviyem çok yüksek değil malesef ama bu proje için elimden gelenleri yaparım.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Cemre. - 26 Mart 2016, 23:32:25
http://www.instesre.org/ArduinoUnoSolarCalculations.pdf (http://www.instesre.org/ArduinoUnoSolarCalculations.pdf)
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 28 Mart 2016, 09:21:47
Koordinat verisini önce eeprom a kayıt edip, ilgili formüllerede eepromdan mi çekilmeli? Elektrik gittiğinde dahi, tekrar çalışınca kişi koordinat sehir plaka vs. Girmemis olur, bunu bu sekilde yapsam olur mu yoksa farkli bir öneriniz var mi ?
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Cemre. - 28 Mart 2016, 22:05:40
Alıntı yapılan: Voltajcı - 28 Mart 2016, 09:21:47
Koordinat verisini önce eeprom a kayıt edip, ilgili formüllerede eepromdan mi çekilmeli? Elektrik gittiğinde dahi, tekrar çalışınca kişi koordinat sehir plaka vs. Girmemis olur, bunu bu sekilde yapsam olur mu yoksa farkli bir öneriniz var mi ?

Farklı şehirler için kullanılabilir olsun diyorsanız bu şekilde olması mantıklı. Değişmeyecekse const olarak tanımlayın gitsin.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: dursuncemal - 28 Mart 2016, 22:16:44
koordimat verilerini eeproma girmek yerine module bir cps ekleyebilirsiniz.ben sadece bulundugu konumu  menuden manuel girip eeproma kaydetmistim. 
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: kayatech - 28 Mart 2016, 22:52:36
2nci el 100 TL ye  hdmi girişli bir monitör ve 100TL lik hdmi çıkışlı bir tablet alın. Vakitleri yükleyin ömür boyu kullanın :)
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 28 Mart 2016, 23:29:53
@dursuncemal maliyeti en aza indirgemek için uğraşıyorum, haliyle gps modül şimdilik olmasa daha iyi :)

@cemre teşekkürler, saati ayarladiktan sonra zaten ds1307 kendi içinde devam ettiriyor kendisindeki pil ile, onu eepproma atmaya gerek yok o zaman, sadece son ayarlı koordinat kalsa yeter...

@kayatech piyasada herşey var zaten, aselsan tai otokar baykar bunlarin gerisini atmak lazım herkes hazır almali herşeyi sizin mantığa göre :)
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: kayatech - 29 Mart 2016, 11:25:41
Hazır almak ile alakası yok. Çözüm odaklı konuşuyoruz hocam. En ucuz çözüm bence bu.
Her şeyi de biz yapmaya kalkar isek durum şu; Hiçbir şeyi yapamıyoruz.

Bu ticari bir ürün olsaydı yine aynı şekilde çözüm odaklı işi bitirir , arge için gerekli parayı kazanırken sonuç odaklı çalışmalara devam ederdim. Sizin söyleminize göre tamamını üretmek için vakit ve nakit harcamak gerekir.
Bence vaktin değerini bilin...
Her şeyi satın alabiliyorsunuz ve hatta herşeyi üretebiliyorsunuz ama zamanı satın alamıyorsunuz.
Gün gelince ne demek istediğimi daha net anlarsınız.

Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: dursuncemal - 29 Mart 2016, 12:31:29
malesef soz konusu maliyet oldugu zaman is cok zor bunun icin ticari amacli tasarladiginiz her ne olursa olsun onemli olan var olana farkli birseyler katmak o zaman isin rengi degisiyor.
Başlık: Ynt: vakitleri gösteren pano yardımı
Gönderen: Voltajcı - 01 Ekim 2016, 11:29:52
Alıntı yapılan: dursuncemal - 29 Mart 2016, 12:31:29
malesef soz konusu maliyet oldugu zaman is cok zor bunun icin ticari amacli tasarladiginiz her ne olursa olsun onemli olan var olana farkli birseyler katmak o zaman isin rengi degisiyor.

aslında haklısınız. GPS modül 10-12 lira civarı Aliexpress de, gps eklenebilir.