16F877 ile LCD de alarmlı saat projesi ..

Başlatan DoganOZTOSUNLAR, 30 Nisan 2013, 20:08:14

DoganOZTOSUNLAR

Öncelikle hayırlı akşamlar diliyorum. Kendimce LCD ekranda alarmlı saat devlesi yapmaya çalışıyorum. Sıkıntım öncelikle ; kart tasarımımda 'ARES' uygulamam olmaması. Bu olsaydı kartı ütüyle basacaktım. Ayrıca Yazılımım up down yani arttır azalt yapabiliyor. Saatı , dakikayı arttırıp azaltma da sıkıntı çekmiyorum yalnız bu yazılımın içerisine Alarmı nasıl ekleyeceğimi bilemiyorum. ayrıca ARES deki tasarımma yardımcı olursanız memnuniyet duyarım. İlgili büyüklerime saygılar sunarım.. özellikle yazılımn içerisinde lcd ekranda gün ay ve yılın olması hatta önemli bir gün olarak hatırlanması istenen "28.11.2011" in de lcd ye basılması gerekiyor. Yardımlarınız için şimdiden teşekkür ediyorum



YAZILIM :




Saat var byte
dakıka var byte
sanıye var byte
symbol ayar=portd.7
symbol up=portd.6
symbol down=portd.5


TrısD=255
trısb=0
pause 500



sanıye=0
dakıka=0
saat=0


LCDOUT $fe,$80,"saat"

maın:
gosub saat1
gosub artır
gosub ayar1
goto maın




saat=
ıf saat<10 then lcdout $fe,$c4,"0",#saat,":"
ıf saat>=10 then lcdout $fe,$c4,#saat,":"

ıf dakıka<10 then lcdout $fe,$c7,"0",#dakıka,":"
ıf dakıka>=10 then lcdout $fe,$c7,#dakıka,":"

ıf sanıye<10 then lcdout $fe,$ca,"0",#sanıye
ıfsanıyet>=10 then lcdout $fe,$ca,#sanıye



Artır:
pause 1000
sanıye=sanıye+1
ıf sanıye= 60 then
sanıye=0
dakıka=dakıka+1
ıf dakıka=60 then
dakıka=0
saat=saat+1
ıf saat=60 then
saat=0
endıf
endıf
endıf
return


ayar1:
ıf ayar=0 then
lcdout $fe,1
ıf saat<10 then lcdout $fe,$80,"saat:",#saat
whıle ayar=0
wend
whıle ayar=1

ıf up=0 then saat=saat+1
ıf down=0 then saat=saat-1
ıf saat=255 then dakıka=59
whıle up=0 or down=0
wend



ıf dakıka<10 then lcdout $fe,$c7,"0",#dakıka,":"
ıf dakıka>=10 then lcdout $fe,$c7,#dakıka,":

sanıye=0
wend
endıf


LCDout $fe,$80,"saat"

return

ete

Öncelikle yazılm diye verdiğin kod parçasını lütfen yazılım olarak nitelendirme. Madem işin başındasın kendini doğru dürüst kod yazmaya alıştır. Ne demek doğru dürüst dersen her bir programın bir yazılım formatı yada şekli vardır. Bu şekil dahilinde;
- En başta sigorta ayarları verilir.
- Sonra varsa ilave define komutları verilir. LCD tanımlaması ile çalışma frekansı ve diğer define komutları bu aralıkta verilmelidir.
- Daha sonra varsa özel registerler (OPTION_REG, ADCON, CMCON gibi ve çoğunlukla işlemciye has)registerlere değer vermek gerekiyor ise bu aralıkta verilir.
- Daha sonra değişken ve sembol tanımlamaları yapılır
- Daha sonra programa bir açılış gecikmesi verilir.
- LCD açılışı yapılır ve 200 ms lik bir gecikme verilir.
- Varsa Kesme aktif hale getirilir
- Bazı değişkenlere ön değer vermek gerekiyor ise burada verilir.
- Sonunda BASLA etiketi ile asıl programa geçilir.
Şimdi kendi yazdıklarına bir bak bakalım. Bunların ne kadarı programında yer alıyor.  Bir iki değişken ve tuş tanımlamasından başka bir şey yok o programda.  Bana kalırsa program yazmanın "P" sindesin  dahageriye ROGRAM varki çok çalışmanı gerektirecek bu eksiklik.
Alarmlı saat nedir daha doğrusu bir saat nedir nasıl çalışır çeşitleri nelerdir bunları araştırdınmı?
Araştırmadığın belli. Bir yerlerden bir iki şey yazmışsın adınıda yazılım koymuşsun ama uzaktan yakından alakası yok.
Öncelikle elinde bir saat sinyali yada bilgisi olması gerekir. Bu iki şekilde elde edilir. Ya adına RTC (Real Time Clock - Gerçek Zaman Saati) denilen bir saat entegresi kullanman (Mesela DS1302 veya DS1307) yada pic işlemcisi TMR0 zamanlayıcısını belirli bir zaman için kurarak kesme oluşturman ve bu kesmeleri sayarak 1 sn (1000ms) lik süreyi elde etmen gerekir. Her saniye sonunda kesme içinde Saniye değerini bir artırman ve değer 60 olunca dakika değerini dakika 60 oluncada saat değerini bir artırman gerekir.
Yazılımında bunların hiç birisi yok. Nasıl çalışacak bu saat?
Sen en iyisi hazır bir saat sistemini incele oradan bir şeyler kapmaya çalış. Aşağıdaki linkte alarmlı saat projem mevcut. Yükleyip bakabilirsin.

http://etepic.com/index.php/topic,66.0.html

Ete


Benzer konuda yazılmış projemi incelersen neyin nasıl yapıldığını görebilirsin.
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com