background image

54

E l e k t r o n i k a   d l a   W s z y s t k i c h

Do czego to służy?

Prezentowane  urządzenie,  zegar  z timerem
kuchennym, służy do urozmaicenia wyposa−
żenia kuchni o element pomocny przy wyko−
nywaniu  różnych  czasowych  czynności.
Dzięki  niemu  pomocą  już  nigdy  nie  zapo−
mnisz  wyjąć  ciasta  z piekarnika,  dokładnie
przeprowadzisz  proces  gotowania  jajek
i wiele  innych.  Dodatkową  funkcją  jest  wy−
świetlanie  aktualnego  czasu  i bieżącej  daty
w chwilach wolnych od pracy z timerem.

Jak to działa?

Zasadniczo układ można podzielić na cztery
bloki funkcjonalne:
− blok zasilacza,
− blok klawiatury,
− blok procesorowy ze sterownikiem 

LCD i sygnalizatorem,

− blok zegara RTC.

Schemat elektryczny zegara przedstawio−

ny jest na rysunku 1. W zasadzie praktycz−
nie żaden z elementów nie wymaga (chyba)

omawiania, poza układem, U2, który w swo−
im wnętrzu zawiera zegar czasu rzeczywiste−
go PCF8583 pracujący w trybach 12/24h, 4−
letni  kalendarz,  licznik  i kilka  rejestrów  do−
datkowych jak np. rejestry alarmów. Z ukła−
dem tym procesor porozumiewa się wykorzy−
stując magistralę I

2

C opracowaną przez firmę

Philips.  Układ  klawiatury  tworzy  zespół
trzech  przycisków  zwiernych  chwilowych,

Zegar
z timerem
kuchennym

++

++

Rys. 1 Schemat ideowy

background image

których  zadaniem  jest  zwarcie  do  masy
w momencie naciśnięcia pinu, do którego są
podłączone.  Lwia  część  portu  P1  obsługuje
wymianę  danych  wyświetlaczem  LCD,  wy−
korzystując przy tym magistralę danych 4−bi−
tową. Procesor dodatkowo wysterowuje buz−
zer,  którego  zadaniem  jest  sygnalizowanie
zakończenia cyklu odliczania timera.

Aby dokładniej uzmysłowić sobie zasadę

działania,  prześledźmy  najważniejsze  części
programu zawartego w listingu. Na początku
zdefiniowane są rozkłady pinów dla wyświe−
tlacza LCD, jak i dla magistrali I

2

C po to, by

uniezależnić  się  od  ustawień  kompilatora.
Później  zadeklarowane  są  zmienne,  aliasy
i podprogramy.  Jeszcze  przed  rozpoczęciem
pracy we właściwej pętli dokonane są zabie−
gi  kosmetyczne  zapewniające:  poprawny
start  programu  po  włączeniu  zasilania,  po−
prawną  interpretację  sygnałów  przerwania
INT1  oraz  wyczyszczenie  wyświetlacza
i wyłączenie  kursora.  Pętla  główna  zawarta
pomiędzy  pierwszymi  z rozkazów  do...loop
jest  swoistą  osią  systemu  i to  ona  zarządza
pracą całego układu. Jej zadaniem jest reago−
wanie na przyciskanie przycisków, odpowie−
dzialna  jest  za  aktualne  wyświetlanie  i od−
świeżanie  odpowiednich  informacji  na  wy−
świetlaczu i wywołuje wszystkie funkcje ze−
gara.  Na  początku  pracy  układ  zbiera  infor−
macje o aktualnym czasie i nastawionej dacie
i prezentuje  te  dane  na  wyświetlaczu.  Użyt−
kownik może wybrać jedną z trzech dostęp−
nych funkcji:
− nastawianie zegara,
− nastawianie daty,
− ustawianie czasu do odliczenia 

przez timer.

Przy nastawianiu czasu lub daty automa−

tycznie  sprawdzane  jest  czy  wartość  zadana
nie  przekracza  dopuszczalnych  wartości.
Sposób wyświetlania nastaw czasu i daty jest
taki, że czas pojawia się zawsze w pierwszej
linii, a data w drugiej. Taki sposób prezenta−
cji  został  niejako  wy−
muszony przez ograni−
czenia co do wielkości
kodu  programu  proce−
sora 

AT89C2051.

Chcąc zaoszczędzić na
cennej  pamięci  podją−
łem  się  znalezienia  ta−
kich  części  programu,
w których na pewnych
etapach  wykonuje  się
dokładnie te same ope−
racje,  połączenia  ich
w podprogramy i swo−
bodne  odwoływanie
się  do  nich  w miej−
scach, w których nale−
żałoby zastąpić je rów−
noważnym 

kodem.

Sposób  ten  pozwolił
na  wyłonienie  kilku 

takich części programu i znakomite „odchu−
dzenie” kodu. Przykładem niech będzie wy−
świetlanie  czasu  i daty  oraz  ich  osobne  na−
stawianie.  W obu  przypadkach  istnieje  ten
sam  sposób  prezentacji  na  LCD  i ten  sam
sposób dopisywania zer przed liczbami jed−
nocyfrowymi. Po co więc za każdym razem
„klepać”  kawałki  programu,  który  zajmuje
pamięć, jeśli można się odwołać krótkim po−
leceniem  do  procedury,  która  taką  funkcję
wykonuje?  Dalej  widzimy  procedury  odpo−
wiedzialne  za  odczyt  i zapis  danych  do
i z RTC.  Różnica  między  odczytem  a zapi−
sem polega na tym, że w fazie odczytu, przy−
padającej w czasie wyświetlania czasu i daty,
jednocześnie  dane  są  „ściągane”  hurtowo
i trafiają, po konwersji, do odpowiednich re−
jestrów skąd są posyłane na wyświetlacz. In−
strukcji zapisu mamy natomiast dwie, ponie−
waż  przy  nastawianiu  daty  lub  czasu,  gdy
ustawiany  jest  tylko  jeden  pasek  wyświetla−
cza, nie ma sensu tracić czasu na zapisywanie
danych, których wartości nie uległy zmianie.
Użycie takiego sposobu również przyczyniło
się  do  odchudzenia  programu.  Kolejne  pod−
programy traktują o nastawach timera, dopi−
sywania zer przed liczbami jednocyfrowymi
i wyświetlaniu  poszczególnych  składników.
Ostatnia  z procedur  to  obsługa  przerwania
z INT1, które zgłaszane jest przy opadającym
zboczu na tym wejściu. Służy ono do zlicza−
nia sekund jakby „za darmo”, nie obciążając
procesora przy pracy z timerem. Przeglądając
dokumentację  układu  PCF8583,  natknąłem
się na informację o tym, że po uruchomieniu
układu,  bez  modyfikacji  rejestrów  kontrol−
nych, na jednym z jego wyjść otrzymuje się
sygnał  1Hz.  Właściwość  ta  wykorzystana
jest w owej procedurze, której zadaniem jest
odliczanie  w dół  od  zadanego  czasu  z kro−
kiem 1s i sygnalizacja gdy osiągnięte zosta−
nie  zero  (czas  minie).  Proste  –  prawda?  Je−
szcze jedna informacja odnośnie tajemnicze−
go opóźnienia 100ms w pętli głównej. Otóż

zwłoka  ta  jest  nałożo−
na po to, by:

− zbyt często nie aktualizować wyświetlacza
(możliwy  efekt  mrugania  lub  pływania  te−
kstu),
−  zbyt  często  nie  zapisywać  do  rejestrów
kontrolnych RTC informacji o chęci pobra−
nia z niego danych (żywotność EEPROM).

System zasilania został opracowany z my−

ślą  o  wykorzystaniu  zasilacza  wtyczkowego
9−12V. Gdy napięcie sieci zaniknie, układ au−
tomatycznie  przełączy  się  na  zasilanie  bate−
ryjne (D1). Praca z timerem powinna raczej
odbywać  się  z zasilaczem,  gdyż  buzzer  po−
biera sporo prądu i możliwe jest „wywiesze−
nie się“ programu przy słabszej baterii.

I to  byłoby  na  tyle,  jeśli  chodzi  o opis

działania.  Zachęcam  do  przeanalizowania
listingu, w którym ująłem dużo komentarza
pomocnego przy „rozgryzaniu” programu.

Możliwości zmian...

Wykonując  ten  projekt,  w założeniach  mia−
łem zastosować również czujnik AF50 do de−
tekcji ulatniającego się gazu. Ponieważ chwi−
lowo  nie  zostało  to  zrealizowane,  pozostały
dwa  wolne  wyprowadzenia  procesora  do,
właściwie,  dowolnego  wykorzystania.  Są  to
P1.0  i P1.1.  Najlepiej  wykorzystać  zalety
układu i wykonać jakiś układ komparacyjny,
jak by to miało miejsce w przypadku czujni−
ka gazu. Możliwe są także inne rozwiązania
w zależności od wyobraźni. Największą jed−
nak przeszkodą jest bardzo mało wolnej pa−
mięci, którą można jeszcze wykorzystać. Je−
śliby  użyć  układu  AT89C4051,  sytuacja  ra−
dykalnie zmieniłaby się. Dlatego też, gdy tyl−
ko uzyskam dostęp do takiego mikrokontro−
lera, wykonam nowszą wersję oprogramowa−
nia obsługującego albo wspomniany czujnik
gazu,  albo  cyfrowy  termometr  DS1820,
a może oba naraz.

Grzegorz Kaczmarek

Uwaga! Pliki z programem można ściągnąć 
ze strony internetowej EdW
www.edw.com.pl/library/pliki/zegarGK.zip

55

E l e k t r o n i k a   d l a   W s z y s t k i c h

Wykaz elementów

Rezystory

R

R11  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..110000kk

Kondensatory

C

C11−C

C33  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..3333ppFF

C

C44  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..1100nnFF

Półprzewodniki

U

U11  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..A

ATT8899C

C22005511

U

U22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..P

PC

CFF88558833

U

U33  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..7788LL0033
D

D11  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..11N

N44114488

Inne

P

P11−P

P33  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..m

miikkrroossw

wiittcchh

P

PO

OTT11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..ppootteennccjjoom

meettrr 5500kkA

A

Q

Q11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..kkw

waarrcc 1111..005599

Q

Q22  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..zzeeggaarrkkoow

wyy

B

Buuzzzzeerr
W

Wyyśśw

wiieettllaacczz LLC

CD

D

R E K L A M A

.     R E K L A M A

.     R E K L A M A