69_054.pdf
(
766 KB
)
Pobierz
zegar.qxd
++
Zegar
z timerem
kuchennym
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:
1
− blok zasilacza,
2
− blok klawiatury,
3
− blok procesorowy ze sterownikiem
LCD i sygnalizatorem,
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,
4
− blok zegara RTC.
Schemat elektryczny zegara przedstawio−
ny jest na
rysunku 1
. W zasadzie praktycz−
nie żaden z elementów nie wymaga (chyba)
Rys. 1 Schemat ideowy
54
Elektronika dla Wszystkich
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:
1
− nastawianie zegara,
2
− nastawianie daty,
3
− 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:
1
− zbyt często nie aktualizować wyświetlacza
(możliwy efekt mrugania lub pływania te−
kstu),
2
− 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
Wykaz elementów
Rezystory
R1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100k
Uwaga! Pliki z programem można ściągnąć
ze strony internetowej EdW
www.edw.com.pl/library/pliki/zegarGK.zip
Ω
REKLAMA . REKLAMA . REKLAMA
Kondensatory
C1−C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . .33pF
C4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10nF
Półprzewodniki
U1 . . . . . . . . . . . . . . . . . . . . . . . . . .AT89C2051
U2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .PCF8583
U3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78L03
D1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1N4148
Inne
P1−P3 . . . . . . . . . . . . . . . . . . . . . . .miikroswiittch
POT1 . . . . . . . . . . . . . . . . . . .pottencjjomettr 50kA
Q1 . . . . . . . . . . . . . . . . . . . . . . . . .kwarc 11..059
Q2 . . . . . . . . . . . . . . . . . . . . . . . . . . .zegarkowy
Buzzer
Wyświiettllacz LCD
Elektronika dla Wszystkich
55
Plik z chomika:
ryszard9922
Inne pliki z tego folderu:
01_03.pdf
(4144 KB)
01_02.pdf
(3229 KB)
01_01.pdf
(1977 KB)
01_08.pdf
(3497 KB)
01_07.pdf
(2238 KB)
Inne foldery tego chomika:
Zgłoś jeśli
naruszono regulamin