Zegar czasu rzeczywistego Philips PCF8583 w Basomie !

2007-11-28-253

      Układy RTC stosuje się w celu odciążenia mikrokontrolera. Nie w każdym przypadku mikrokontroler potrafi dokładnie odmierzać czas i zajmować się innymi czynnościami. Drugi plus to taki, że układ RTC z dobrym, oscylatorem jest bardziej dokładniejszy niż mikrokontroler, ponieważ w mikrokontrolerze wystarczy zmiana napięcie żeby ta dokładność spadła.

 

 

 

 

      PCF8583 to zegar czasu rzeczywistego z własnym oscylatorem 32,768 kHz i zasilaniem bateryjnym. Dzięki zasilaniu działa zawsze. Z mikrokontrolerem komunikuje się przez magistralę I2C. Piny SDA i SDL są podciągnięte do VCC poprzez rezystory 3,3k? R1 R4
 
schemat
schemat układu

      Aby nasz układ sprawnie działał potrzebny mu jest oscylator 32,768kHz Q1 oraz dołączony do niego kondensator C1. Diody D1 D2 kontrolują aby do układu nie dotarło wyższe napięcie niż zalecane (max. 6V). Kondensator C2 standardowo filtruje napięcie, a bateria G1 dostarcza cały czas 24/7 napięcie do podtrzymania zegaru (taka bateria przeważnie trzyma ok.8 lat i więcej).      Tutaj jest listing do odczytywania data i godziny:

  1. $regfile = „m48def.dat”
  2. $crystal = 16000000
  3. Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5
  4. Config Lcd = 20 * 4
  5.  Config Scl = Portc.5
  6. Config Sda = Portc.4
  7. Dim Sekundy As Byte : Dim Minuty As Byte : Dim Godziny As Byte
  8. Dim Dzien As Byte : Dim Miesiac As Byte
  9. Dim Rok As Byte : Dim Dzien_tygodnia As Byte
  10. Do
  11. I2cstart
  12.   I2cwbyte &HA0
  13.   I2cwbyte 2
  14.   I2cstart
  15.   I2cwbyte &HA1
  16.   I2crbyte Sekundy , Ack
  17.   I2crbyte Minuty , Ack
  18.   I2crbyte Godziny , Ack
  19.   I2crbyte Dzien , Ack
  20.   I2crbyte Miesiac , Nack
  21.   I2cstop
  22. Sekundy = Makedec(sekundy)
  23. Minuty = Makedec(minuty)
  24. Godziny = Makedec(godziny)
  25. Rok = Dzien
  26. Shift Rok , Right , 6
  27. Rok = Makedec(rok)
  28. Dzien.7 = 0 : Dzien.6 = 0
  29. Dzien = Makedec(dzien)
  30. Dzien_tygodnia = Miesiac
  31. Shift Dzien_tygodnia , Right , 5
  32. Dzien_tygodnia = Makedec(dzien_tygodnia)
  33. Miesiac.7 = 0 : Miesiac.6 = 0 : Miesiac.5 = 0
  34. Miesiac = Makedec(miesiac)
  35. Cls
  36. Lcd „Godzina: ” ; Godziny ; „:” ; Minuty ; „:” ; Sekundy
  37. Lowerline
  38. Lcd „Data: ” ; Dzien ; „-” ; Miesiac ; „-” ; Rok ; ” : ” ; Dzien_tygodnia
  39. Wait 1
  40. Loop
  41.  End

Wykaz elementów:
IC1 PCF8583P
Q1 oscylator 32,768kHz
C1 kondensator 30pF
C2 kondensator 100nF
D1, D2 dioda 1N4148
G1 bateria 3V CR2032
R2 rezystor 220?

R1, R4 rezystor 3,3k?

płytka

 Koszt całości: ok.15zł

Dzięki za uwagę, jak chcesz być na bieżąco z postami to kliknij ‚Lubię to !‚.
Pozdrawiam ;)