Sari la conținut
ELFORUM - Forumul electronistilor

Inca un ceas cu PIC...


Postări Recomandate

Va supun atentiei un ceas realizat integral de mine: Ceasul este compus dintr-un RTC DS1307, un DS 18b20, un Pic 16F877A, un display LCD 16X2si 3 butoane pentru controlul meniului si al functiilor ceasului. Ceasul are urmatoarele functii:- Afiseaza ora in doua moduri: modul 12H respectiv 24H- In modul 12H, intre orele 00:00 si 12:00 afiseaza pe ecran AM , intre 12:00 si 00:00 afiseaza PM- Este prezenta o alarma zilnica, pe care o putem activa sau dezactiva, cu o iesire pe pinul A3.- Alarma odata pornita, se poate amana cu 5 min prin functia snooze.- Masoara temperatura ambianta si o afiseaza in grade Celsius sau Fahrenheit.- Inregistreaza temperatura minima si maxima masurata si o afiseaza intr-un meniu separat.- Afiseaza calendarul Gregorian corectand ultima zi a lunii februarie in anii bisecti.- Afiseaza primele trei litere ale zilei saptamanii (in engl.).- Are o functie de chime, programabila, la ora fixa, la jumatate de ora sau la ora fixa si jumatate de ora, cu o iesire pe pinul A5- Am prevazut in meniu o functie pentru corectarea timpului dupa 24 de ore de la ultima setare a ceasului,in functie de pierderile sau castigurile datorate cristalului de quartz.In arhiva sunt fisierele DSN, hex-ul si o descriere a ceasului.Mai am sa implementez functia de fus orar. Inca nu m-am prins cum sa fac, ma invart intr-un cerc vicios... Orice sfat mi-ar prinde bine.

Link spre comentariu
Are optiune de ora de vara/iarna?

 

Aia cred ca se poate activa direct in RTC, am sa ma documentez,daca nu, nu-i mare lucru sa mai pun o conditie pe 22 oct (sau cand este) sa adauge o ora si invers. Iti multumesc pentru sugestie!

 

Hex-ul ala e cam maricel, oare din cauza calendarului?

 

Da, hexul este mare pentru ca am scris si epromul si mi-a complectat restul locatiilor libere cu zero

 

Cred ca atat fusul orar cat si ora de vara/iarna sunt niste formatari date doar in momentul afisarii, intern ora trebuie tinuta GMT.

 

Asta este clar, dar nu stiu cum sa fac in momentul cand, spre exemplu, este ora 01:00 AM si vreau sa dau in jos 7 ore, ora va deveni -06:00, trebuie sa adun intai p`acolo 12 ore si dupa aia sa scad fusul orar... Nu ma prind, ma mai gandesc.

Link spre comentariu

Va supun atentiei un ceas realizat integral de mine: Ceasul este compus dintr-un RTC DS1307, un DS 18b20, un Pic 16F877A, un display LCD 16X2si 3 butoane pentru controlul meniului si al functiilor ceasului....

Poti atasa schema ceasului in format JPEG, sunt tentat de el daca tot am PIC-ul prin sertare.Poate desenez un cablaj pentru el, in functie de timpul liber.Multumesc.
Link spre comentariu

Daca e vorba de fus orar e complicat rau de tot. Fiecare tara are politica ei in privinta orei oficiale. Insa daca vrei sa implementezi "daylight saving" asta este alta poveste, mai usoara. Am studiat problema mai demult si trebuie sa am undeva ceva liniii de cod in C pentru asa ceva.

Link spre comentariu

Daca e vorba de fus orar e complicat rau de tot.

Am sa-l fac doar sa scada pana la 12 ore sau sa adauge pana la 12 ore, adica un fus orar generic.

Insa daca vrei sa implementezi "daylight saving" asta este alta poveste, mai usoara. Am studiat problema mai demult si trebuie sa am undeva ceva liniii de cod in C pentru asa ceva.

Mie mi se pare ca asta este mai complicat, deoarece, in fiecare an, ora se schimba in zile diferite, adica in ultima duminica din martie pentru ora de vara si in ultima duminica din oct. pentru ora de iarna. Am sa-l programez pentru "daylight saving" doar pana in 2020, eu zic ca este suficient.
Link spre comentariu

Pai daca tot afiseaza calendarul, nu cred ca e chiar asa greu - trebuie numai sa "numeri" ciclic zilele saptamanii (de ex. luni = 1, marti = 2... duminica = 7, ) si cand esti in octombrie (luna = 10), e duminica (zi = 7) si pana la 31 mai ai mai putin de 7 zile (31 - data curenta < 7), e cazul sa dai ceasul inapoi (iupii, abia astept :rade: ).

Link spre comentariu

Sa nu mai vorbim de cazul anului bisect cu ziua de 29 Februarie.Facilitatea ceasului ca se schimba dupa fusul orar nu-i vad rostul. Setezi ceasul si introduci coordonate geografice ????Eu vad in felul urmator : ceasul sa aiba o optiune de genul "Folosire day light DA/NU" care sa influenteze un indicator (flag). Implica cateva linii de cod dar nu este imposibil. Revin mai tarziu cu detalii.PS. Am studiat rapid datasheet-ul DS1307 si vad ca se ocupa el de anul bisect.

Link spre comentariu

Sa nu mai vorbim de cazul anului bisect cu ziua de 29 Februarie.Facilitatea ceasului ca se schimba dupa fusul orar nu-i vad rostul. Setezi ceasul si introduci coordonate geografice ????Eu vad in felul urmator : ceasul sa aiba o optiune de genul "Folosire day light DA/NU" care sa influenteze un indicator (flag). Implica cateva linii de cod dar nu este imposibil. Revin mai tarziu cu detalii.PS. Am studiat rapid datasheet-ul DS1307 si vad ca se ocupa el de anul bisect.

De anul bisect are grija RTC-ul.Mai trebuie sa-i pun eu niste conditii la introducerea datelor sa nu-ti permita sa introduci date eronate. Intr-adevar vis-a-vis de fusul orar, este o "frunzulita" care nu cred ca o voi folosi vreodata... Era o idee... Ora de iarna/vara am rezolvat-o cu ajutorul lui Liviu M caruia ii multumesc inca odata!
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări