AVT5281.pdf

(1208 KB) Pobierz
Elektronika Praktyczna
PROJEKTY
„Inteligentny” zegar
AVT
5281
z wyświetlaczami LED
Dodatkowe materiały
na CD i FTP
Chyba każdy elektronik zaprojektował i  wykonał choć jeden zegar.
Ja zbudowałem ich kilka, ale ostatnio znów wróciłem do tego
tematu, a  to z  powodu specjalnych wymagań, których zazwyczaj
nie spełniają komercyjne wyroby. Zegar powstał w  odpowiedzi
na zapotrzebowanie na zegarek naścienny z  dużymi cyframi,
widocznymi zarówno w  dzień jak i  w  nocy, ale nieoświetlającymi
w  nocy pokoju. Tak powstał zegar, który mimo prostej budowy ma
kilka bardzo przydatnych funkcji.
Rekomendacje: ze względu na unikatowe funkcje, zegar przyda się
w  niejednym domu.
AVT-5281 w ofercie AVT:
AVT-5281A – płytka drukowana
AVT-5281B – płytka drukowana + elementy
Podstawowe informacje:
• Wyświetlanie czasu na dużym, czytelnym,
6-cyfrowym wyświetlaczu 7-segmentowym
• Wskazania minut, godzin i  sekund.
• Możliwość wyświetlania temperatury.
• Jasność świecenia regulowana automatycznie
w  zależności od natężenia światła
zewnętrznego.
• Zasilanie 8...20 VDC, pobór prądu do ok.
600 mA.
• Mikrokontroler ATmega8.
• Możliwość programowej korekty chodu zegara
Dodatkowe materiały na CD i FTP:
ftp://ep.com.pl , user: 10460 , pass: 0646g3n0
• wzory płytek PCB
• karty katalogowe i  noty aplikacyjne
elementów oznaczonych w  wykazie
elementów kolorem czerwonym
Fotograia 1. Pierwszy prototyp zegara w wersji 4-cyfrowej
Projekty pokrewne na CD i FTP:
(wymienione artykuły są w  całości dostępne na CD)
AVT-5273 Zegar cyfrowy z analogowym
sekundnikiem (EP 1/2011)
AVT-5245 Zegar widmowy (EP 7/2010)
AVT-5145 Zegar retro na lampach NIXIE
(EP 9/2008)
AVT-513 Zegar ze 100-letnim
kalendarzem (EP 10-11/2003)
AVT-5048 Zegar z kalendarzem zasilany
bateryjnie (EP 2/2002)
AVT-5022 Programowany zegar z DCF77
(EP 6-7/2001)
AVT-5002 Zegar cyfrowy z wyświetlaczem
analogowym (EP 3/2001)
AVT-217 Zegar DCF (EP 7/1994)
AVT-2849 Tiny clock (EdW 1/2008)
AVT-2825 Zegar z budzikiem (EdW 5/2007)
AVT-2721 Mikroprocesorowy zegar
(EdW 4/2004)
AVT-2632 Gigantyczny zegar (EdW 5/2002)
Początkowo przewidywałem wykonanie
zegara w wersji 4-cyfrowej ( fotograia 1 ), lecz
dość szybko powstała kolejna wersja rozsze-
rzona o obsługę sekundnika oraz z możliwo-
ścią pomiaru i wyświetlania temperatury. Po
pewnym czasie w oprogramowaniu przybyła
możliwość obsługi dodatkowych driverów wy-
świetlaczy oraz analogowego sekundnika zło-
żonego z 60 diod świecących. Całością zarzą-
dza mikrokontroler ATmega8. Oprogramowa-
nie mikrokontrolera zostało napisane w języku
C z wykorzystaniem darmowego kompilatora
GCC w wersji 3.4.5 (WinAVR-20060125).
Opis układu i jego podstawowe
funkcje
Najważniejszą funkcją każdego zegara jest
wyświetlanie aktualnego czasu. Do odmierza-
nia czasu nie został użyty żaden specjalizowa-
ny układ RTC. Czas jest mierzony z wykorzysta-
niem wewnętrznych mechanizmów mikrokon-
trolera ATmega8. Jako podstawę czasu użyto
timer 2 mikrokontrolera w trybie asynchronicz-
nym, który jest taktowany sygnałem z oscy-
latora z kwarcem „zegarkowym” 32,768 kHz
dołączonym do pinów OSC1 i OSC2. Timer
generuje przerwania co sekundę i są one zasto-
sowane do aktualizacji zawartości programo-
32
ELEKTRONIKA PRAKTYCZNA 3/2011
701571763.307.png
„Inteligentny” zegar z wyświetlaczami LED
Wykaz elementów
Rezystory: (SMD, 0805)
R1...R7: 75 V
R8...R14: 10 V
R15...R20: 1 k V
R21, R22, R26: 10 k V
R23: 47 V
R24: 5,6 k V
R25: 1 M V (fotorezystor np. FR48/1M)
P1: 47 k V (pot. montażowy)
Kondensatory:
C1, C2, C3, C6: 100 nF (SMD, 0805)
C4: 100 M F/16 V
C5: 470 M F/16 V
C7: 10 M F/25 V
C8: ColdCap 0,22 F/5,5 V
Półprzewodniki:
U1: ATMega8 (DIL28)
U2: 7805 (TO220)
U3: DS18B20, DS18S20 lub DS1822
(opcjonalnie)
Q1...Q6: BC807 (SOT23)
D1: 1N4148
D2: 1N5817
D3,D4: LED (czerwona, 5 mm, z płaskim
czołem)
W1...W4: JZD180106RO-GW (1,8”,
czerwony)
W5,W6: JZD100106RO-GW (1,0”, czerwony)
Inne:
Y1: Kwarc 32,768 kHz
S1, S2: mikroprzycisk kątowy h=7,35 mm
S3: mikroprzycisk SMD INT-1187
JP1: Złącze szpilkowe 2×5 raster 2,54 mm
J1: Gniazdo DC 4,5×1 mm
J2: Gniazdo Jack 3,5 mm (dla czujnika
temperatury)
wych liczników sekund, minut i godzin. Sam
mikrokontroler taktowany jest z wewnętrznego
generatora RC ustawionego na 2 MHz.
Dokładność zliczania czasu jest korygowa-
na programowo. Jest to najefektywniejszy i naj-
prostszy sposób na uzyskanie bardzo dokładne-
go zegara, z błędem mniejszym niż 2...3 sekundy
na miesiąc (!), a jednocześnie umożliwia bardzo
prostą kalibrację.
Cały układ, którego schemat ideowy przed-
stawiono na rysunku   1 składa się ze stabiliza-
tora zasilania, mikrokontrolera, driverów anod
wyświetlaczy oraz wyświetlaczy z rezystorami
ograniczającymi prąd. Do ustawiania godzin
i minut służą dwa przyciski. Jasność świecenia
jest regulowana na podstawie sygnału z fotorezy-
R E K L A M A
Rysunek 2. Schemat ideowy zegara 6-cyfrowego
ELEKTRONIKA PRAKTYCZNA 3/2011
33
701571763.318.png 701571763.329.png 701571763.340.png 701571763.001.png 701571763.012.png 701571763.023.png 701571763.034.png 701571763.045.png 701571763.056.png 701571763.067.png 701571763.078.png 701571763.089.png 701571763.100.png 701571763.111.png 701571763.122.png 701571763.133.png 701571763.144.png 701571763.155.png 701571763.166.png 701571763.177.png 701571763.188.png 701571763.199.png 701571763.210.png 701571763.221.png 701571763.232.png 701571763.243.png 701571763.254.png 701571763.265.png 701571763.276.png 701571763.284.png 701571763.285.png 701571763.286.png 701571763.287.png 701571763.288.png 701571763.289.png
 
PROJEKTY
stora. Dodatkowo zegar ma układ podtrzymania
zasilania oraz opcjonalny czujnik temperatury.
Do wyświetlania godzin i  minut użyto
czerwonych wyświetlaczy o wielkości 1,8 cala
(46 mm), natomiast sekund trochę mniejszych,
o wysokości 1 cala (25,4 mm). W tym miejscu
muszę zaznaczyć, że wybrany przeze mnie typ
wyświetlaczy 1,8” jako jeden z niewielu ma
w  każdym segmencie dwie diody połączone
szeregowo. Większość zamienników ma trzy
diody i ich użycie zaowocuje kiepską jasnością
świecenia. Przed ewentualnym zastosowaniem
zamienników należy koniecznie sprawdzić ich
kartę katalogową i konigurację diod.
Wyświetlacze uzupełniają dwie diody świe-
cące o średnicy 5 mm z płaskim czołem, włą-
czone jako dwukropek. Ze względu na to, że
zastosowane wyświetlacze mają spadek napięcia
na pojedynczym segmencie wynoszący 4,2 V,
to zastosowano prosty sposób na niewielkie
podwyższenie napięcia zasilania wyświetlaczy
poprzez zastosowanie diody krzemowej w ob-
wodzie masy stabilizatora 7805, co podnosi jego
napięcie wyjściowe do wartości około 5,6 V. Ano-
dy wyświetlaczy są sterowane za pomocą kluczy
z tranzystorami PNP. W obwodach katod zastoso-
wano rezystory ograniczające prąd wpływający
do wyjść portu mikrokontrolera. Katody wyświe-
tlaczy sekund mają dodatkowe rezystory wyrów-
nujące ich jasność, ponieważ spadek napięcia na
segmentach tych wyświetlaczy wynosi ok. 2,1 V.
Podłączony do wyprowadzeń OSC1 i OSC2 re-
zonator kwarcowy nie potrzebuje dodatkowych
kondensatorów od jego wyprowadzeń do masy,
ponieważ programując odpowiednio bity proce-
sora możemy włączyć wewnętrzne kondensato-
ry 36 pF znajdujące się w procesorze.
Listing 1. Przerwanie obsługujące zliczanie czasu i korekcję dokładności.
SIGNAL(SIG_OVERFLOW2) //RTC, przerwanie co 1 sekundę
{
sekunda++; //zwiększ pomocniczy licznik sekund
if (++t.second == 60) //zwiększ licznik sekund i sprawdź czy 60
{
t.second=0; // zeruj licznik sekund
if (++t.min == 60) //zwiększ licznik minut i sprawdź czy 60
{
t.min = 0; //zeruj licznik minut
if (++t.hour == 24) //zwiększ licznik godzin i sprawdź czy 24
t.hour=0; //zeruj licznik godzin
}
t.corr++; // co minutę zwiększ również licznik korekcji
}
}
około 1 MV. Potencjometr P1 służy do ustawie-
nia czułości regulatora jasności. Odpowiednie
ustawienie należy przeprowadzić w zależności
od typu użytego fotorezystora oraz jasności iltru,
za którym są schowane wyświetlacze i fotorezy-
stor. Do regulacji jasności świecenia wyświetla-
czy zastosowano sprzętowo-programowy PWM,
niezbędny do multipleksowania wyświetlaczy.
Napisałem „sprzętowo-programowy”, ponieważ
wykorzystano w nim sprzętowy mechanizm out-
put compare timera 1 do ustalania wartości PWM
i do ustalania momentu gaszenia wyświetlaczy,
lecz samo gaszenie jest realizowane programowo
w przerwaniu compare match . Multipleksowa-
nie wyświetlaczy następuje w przerwaniu over-
low tego samego timera.
Na listingu   2 zamieszczono procedury ob-
sługi przerwania służące do sterowania wyświe-
tlaczem.
Przerwanie SIG_OVERFLOW1 jest wywoły-
wane z częstotliwością ok. 977 Hz (2 MHz/8/256).
Najpierw gaszona jest poprzednia cyfra i jest wy-
łączane sterowanie anodami. Zmienne neg_anod
neg_katod ustawiane są na początku programu
po przeprowadzeniu testów obciążenia pinów
procesora, zapewniając odpowiednie wystero-
wanie wyjść niezależnie od ewentualnej negacji
sygnałów na dodatkowych buforach. W ten spo-
sób układ sam dostosowuje się do ewentualnie
podłączonych dodatkowych driverów anod lu-
b/i katod wyświetlacza. Następnie zwiększany
jest licznik cyfr, i jeśli zrówna się on z liczbą za-
Listing 2. Procedury obsługi wyświetlaczy i regulacji jasności.
//Przerwanie overlow timera 1,
//obsługa multipleksowania wyświetlaczy
SIGNAL(SIG_OVERFLOW1) //Multiplex LED
{
static u08 cyfra,anod;
u08 tmp,tmp2;
if(licz)
licz--; //pomocniczy licznik czasu do wielu zastosowań
KATODY = neg_katod; //zgaś wyświetlacz
anod <<= 1; //wartość dla wybrania kolejnej anody
tmp = 4;
if(opt.sekundnik) //maks. licznika cyfr to 4 lub 6
tmp = 6;
if(++cyfra == tmp) //zwiększ licznik cyfr, maksimum?
{
cyfra = 0; //zeruj licznik cyfr
anod = 1; //wartość dla wybrania pierwszej anody
}
ANODY = neg_anod^anod; //wybierz kolejną anodę (XOR umożliwia
//sterowanie niezależnie od negacji na anodach)
if( !opt.sekundnik && opt.dwukPB5 ) // oddzielna obsługa
//dwukropka na PB5
{
if(dwukropek)
ANODY |= 1<<PB5; //„1” na PB5, niezależnie od negacji anod
else
ANODY &= ~(1<<PB5); //„0” na PB5
}
tmp = ledbuf[cyfra]; //pobierz znak do wyświetlenia
if(cyfra == 0 && tmp == 0) //jeśli na pozycji 10 godz.
//ma być wyťwietlone 0
tmp2 = 0xFF; //to wygaś dziesiątki godzin
else
tmp2 = pgm_read_byte(GENZNAK+tmp); //lub pobierz stan katod
//z generatora znaków
if(dwukropek||opt.dwukPB5) //obsługa dwukropka na katodach
tmp2 &= ~(seg_dp); //zaświeć dwukropek lub użyj PD7 tylko do PWM
KATODY = (neg_katod) ? tmp2 : ~tmp2; // wyświetl cyfrę
}
//Przerwanie Compare A timera 1 - obsługa regulacji jasności
//minimalizacja czasu trwania obsługi przerwania
void SIG_OUTPUT_COMPARE1A(void)__attribute__ ((naked));
SIGNAL(SIG_OUTPUT_COMPARE1A) //Softwarowy PWM do wyświetlacza
{
asm volatile(“PUSH R24”); //Zachowaj R24
KATODY = neg_katod; //zgaś wyświetlacz jeżeli TCNT1==OCR1
asm volatile(“POP R24”); //Odtwórz R24
asm volatile(“RETI”); //Powrót z ISR (atrybut “naked”
//nie generuje powrotu)
}
Odmierzanie czasu
Odmierzanie czasu odbywa się w obsłu-
dze przerwania po przepełnieniu timera 2,
które następuje dokładnie co sekundę. Na li-
stingu   1 przedstawiono procedurę zliczania
sekund wykonywaną w przerwaniu „OVER-
FLOW” timera 2.
To przerwanie jest wykonywane zawsze,
nawet w przypadku braku zasilania sieciowego,
gdy procesor pracuje z zasilaniem awaryjnym.
Struktura „t” zawiera pola, w których jest prze-
chowywana bieżąca wartość czasu. Jego wyświe-
tlanie jest wykonywane w pętli głównej, w opar-
ciu o aktualne wartości struktury „t”
Regulacja Jasności
Do wejścia PC0 (ADC0) jest przyłączony
dzielnik napięcia z fotorezystorem R25, a we-
wnętrzny przetwornik A/D mierzy napięcie
z  tego dzielnika i  odpowiednio dostosowuje
jasność świecenia wyświetlaczy do natężenia
oświetlenia zewnętrznego. Fotorezystor jest do-
łączony do zasilania +5,6 V, aby dzielnik nie
pobierał prądu z kondensatora podtrzymującego
zasilanie mikrokontrolera (backup) w przypadku
zaniku zasilania sieciowego. Zastosowany foto-
rezystor powinien mieć rezystancję na ciemno
34
ELEKTRONIKA PRAKTYCZNA 3/2011
701571763.290.png
„Inteligentny” zegar z wyświetlaczami LED
stosowanych wyświetlaczy (warunkowa instruk-
cja kompilacji #ifdef ), to jest on zerowany. Dalej
jest adresowana kolejna anoda (z tablicy, żeby
było szybciej), z bufora wyświetlacza pobierany
jest kolejny znak do wyświetlenia, przekodowa-
ny według tablicy GENZNAK zawierającej układ
segmentów dla danego znaku. Teraz następuje
sprawdzenie czy wyświetlane dziesiątki godzin
są równe 0 (aby wygasić 0 na pierwszej pozycji),
określenie stanu dwukropka i wysłanie odpo-
wiedniego bajtu do portu sterującego katodami
wyświetlacza, z uwzględnieniem ewentualnej
negacji wszystkich bitów.
Przerwanie SIG_OUTPUT_COMPARE1A ,
wywoływane w momencie zrównania licznika
timera 1 z zawartością rejestru OCR1AL, służy
do regulacji jasności wyświetlaczy. Jego zada-
niem jest zagaszenie w odpowiednim momencie
aktualnie wyświetlanej cyfry. Kilka asemblero-
wych instrukcji oraz deklarację __attribute__
((naked)) wstawiono aby zminimalizować czas
jego obsługi – kompilator nie traktuje tej pro-
cedury jak przerwania, co normalnie skutkuje
odłożeniem zawartości standardowego zestawu
rejestrów na stosie. Jedyny używany w tej pro-
cedurze rejestr jest zachowywany i odtwarzany
„ręcznie”.
Schemat czynnościowy obsługi tego prze-
rwania jest następujący:
1. Zaświeć cyfrę.
2. Zaczekaj aż TCNT1 zrówna się z OCR1.
3. Zgaś cyfrę.
4. Zaczekaj do czasu zaadresowania kolejnej
cyfry.
Czas pomiędzy pierwszym i ostatnim zada-
niem jest stały, a zmienia się tylko moment zga-
szenia cyfry. W ten sposób wszystko dzieje się
autonomicznie, a poziom jasności zmieniamy
zawartością rejestru OCR1A.
Zasilanie
Zegar może być zasilany z niestabilizowane-
go zasilacza 9 V/300 mA, lub z jakiejś impulso-
wej ładowarki do telefonu komórkowego. Użyta
przeze mnie ładowarka do telefonu Nokia 6210
daje na wyjściu około 9 V i jest idealna do tego
celu. Gniazdo zasilania J1 ma wymiary przysto-
sowane do wtyku takiej właśnie ładowarki.
Jako zasilanie awaryjne użyto kondensa-
tora (C8) typu GoldCap o pojemności 0,22 F,
podtrzymującego zasilanie samego procesora
w przypadku zaniku napięcia sieciowego. Przy
braku zasilania sieciowego zasilanie pozostałych
obwodów jest odcięte przez diodę D2. Sygnał
pobrany sprzed stabilizatora U2 jest podany
poprzez dzielnik napięcia na linię portu PC1
procesora i informuje o występowaniu zasilania
sieciowego, a w przypadku jego braku następuje
wyłączenie wszystkich zbędnych obwodów mi-
krokontrolera. Jedynie jest realizowana funkcja
odmierzania czasu (pętla pokazana na listingu   3
oraz przerwanie z listingu 1). W tym stanie pro-
cesor pobiera tylko około 15 MA prądu, a więc
użyty do podtrzymania GoldCap wystarcza na
kilka-kilkanaście godzin pracy bez zasilania sie-
ciowego. Po restarcie mikrokontrolera (pierwsze
uruchomienie,\ lub zbyt długi zanik zasilania)
zegar pokazuje „ --:-- --” aż do momentu ręcznego
ustawienia czasu. Na płytce drukowanej prze-
widziano miejsce na przycisk RESET , dostępny
np. przez otwór w tylnej ściance zegara. Ręczny
restart mikrokontrolera jest przydatny w przy-
padku zbyt długiej przerwy w zasilaniu siecio-
wym, co spowoduje spadek napięcia zasilania
mikrokontrolera poniżej poziomu, przy którym
może jeszcze pracować, lecz jednocześnie zbyt
krótkiej do całkowitego rozładowania konden-
satora podtrzymania i tym samym zadziałania
wewnętrznych obwodów zerujących mikrokon-
troler. W takim przypadku może się zdarzyć, że
po włączeniu zasilania sieciowego zegar będzie
ciemny, więc musimy go zrestartować ręcznie,
lub odczekać jeszcze kilka godzin bez zasilania
sieciowego. Czytelnicy znający procesory rodzi-
ny AVR zapewne stwierdzą, że można wykorzy-
stać wbudowany w procesor układ BOD, czyli
czuwak napięcia zasilania procesora. Niestety,
załączenie tego układu za pomocą fusebitów po-
woduje drastyczny wzrost poboru prądu w try-
bie Power save i bardzo szybkie rozładowanie
kondensatora podtrzymującego zasilanie.
minut, licznik sekund jest automatycznie zero-
wany oraz jest kasowany licznik poprawki do-
kładności zegara. Od momentu zmiany minut
poprawka jest więc liczona od początku. Zmiana
zawartości licznika godzin nie ma wpływu na
liczniki minut i sekund oraz poprawkę. Ponad-
to, pierwsze naciśnięcie klawisza zmiany minut
umożliwia tzw. korektę czasu w zakresie ±30 s,
co oznacza, że jeśli w momencie jego naciśnięcia
licznik sekund wskazuje mniej niż 30 sekund, to
jest zerowany bez zwiększania licznika minut.
Natomiast, jeśli licznik sekund wskazuje 30 lub
więcej albo jest to kolejne naciśnięcie przycisku
bądź jego przytrzymanie w celu repetycji, to
oprócz zerowania licznika sekund jest inkremen-
towany licznik minut.
Zegar nie ma pełnego kalendarza, więc nie
ma możliwości automatycznej zmiany czasu zi-
mowy - letni.
Ustawianie parametrów zegara
Oprogramowanie zegara napisano tak, aby
można go było łatwo dostosować do własnych
potrzeb. Aby wejść w tryb konigurowania na-
leży odłączyć zasilanie sieciowe, nacisnąć jed-
nocześnie oba przyciski i trzymając je wciśnięte
włączyć zasilanie sieciowe. Wówczas zegar
wyświetli komunikat „SEt”, a po puszczeniu
klawiszy numer programu, w tym przypadku
„P1”. W tym trybie klawiszem ustawiania go-
dzin zmieniamy po kolei numer programu (P1
-> P2 -> P3 -> P4 -> P5 -> P6 -> P7 -> P1
...), a klawiszem ustawiania minut wchodzimy
w odpowiedni program. Poszczególne progra-
my umożliwiają:
- P1 - ustawianie okresu (w sekundach) wy-
świetlania czasu; w przypadku niestosowa-
nia czujnika temperatury, wpisana wartość
jest nieistotna, ponieważ zegar i tak będzie
cały czas pokazywał aktualną godzinę,
- P2 - ustawianie okresu (w sekundach)
wyświetlania temperatury; wpisanie war-
tości „0” powoduje wyłączenie wyświet-
lania temperatury,
- P3 - ustawianie korekcji dokładności pra-
cy zegara,
- P4 - ustawianie opóźnienia (iltru) reakcji na
zmianę oświetlenia otoczenia,
- P5 - ustawianie minimalnej jasności wy-
świetlacza,
- P6 - ustawienie częstotliwości multiplekso-
wania wyświetlaczy,
- P7 - wybór opcji i trybu pracy zegarka.
W każdym z programów wartość parametru
zwiększa się klawiszem „minuty” a zmniejsza
klawiszem „godziny”. Wyjście z programu na-
stępuje automatycznie po 5 sekundach od ostat-
Pomiar temperatury
Pomiar temperatury jest wykonywany za
pomocą cyfrowego termometru irmy Dallas
DS18B20, DS18S20 lub DS1822. Program
sam wykrywa podłączenie czujnika tempera-
tury i w przypadku jego wykrycia odblokowu-
je opcję wyświetlania temperatury. Ponieważ
wymienione powyżej układy nie są między
sobą w 100% kompatybilne, oprogramowa-
nie mikrokontrolera automatycznie rozpo-
znaje typ podłączonego czujnika. Czujnik
podłącza się dwoma przewodami pomiędzy
masę a linię portu PC2. Jeśli użyjemy czujni-
ka w obudowie TO92, to zwieramy jego dwa
skrajne wyprowadzenia i zwieramy do masy,
a środkowe podłączamy do linii PC2 portu
mikrokontrolera. W wersji 4-cyfrowej tempe-
ratura jest pokazywana z rozdzielczością 1°,
a w wersji 6 cyfrowej – 0,1°. Dla czujników
DS18S20 i DS1822 zastosowano procedurę
zwiększającą rozdzielczość pomiaru tempera-
tury. Temperatura jest wyświetlana na zmianę
z aktualnym czasem, przy czym można usta-
wić zarówno okres wyświetlania czasu jak
i temperatury.
Ustawianie czasu
Przycisk K1 służy do ustawiania godzin,
a K2 do ustawiania minut. Oba przyciski mają
autorepetycję z  dynamiczną zmianą szybko-
ści repetycji. Przy zmianie zawartości licznika
Listing 3. Pętla wykonywana przy zasilaniu awaryjnym.
do {
MCUCR = 0xB0; //Wybierz tryb power save
asm volatile(„SLEEP”); //Wejdź w power save
asm volatile(“NOP”); //Czekaj na zakończenie wybudzenia z p.s.
TCCR2=0x05; //Zapisz coś do TCCR2 (wymagane dla
//synchronizacji)
while(ASSR&0x07); //czekaj na aktualizacje rejestru TCCR2
}while(bit_is_clear(PINC,PWR_FAIL)); //sprawdź status zasilania,
ELEKTRONIKA PRAKTYCZNA 3/2011
35
//jeśli dalej brak, powtórz
701571763.291.png
PROJEKTY
Rysunek 3. Rozmieszczenie elementów SMD
Rysunek 4. Rozmieszczenie elementów przewlekanych
36
ELEKTRONIKA PRAKTYCZNA 3/2011
701571763.292.png 701571763.293.png 701571763.294.png 701571763.295.png 701571763.296.png 701571763.297.png 701571763.298.png 701571763.299.png 701571763.300.png 701571763.301.png 701571763.302.png 701571763.303.png 701571763.304.png 701571763.305.png 701571763.306.png 701571763.308.png 701571763.309.png 701571763.310.png 701571763.311.png 701571763.312.png 701571763.313.png 701571763.314.png 701571763.315.png 701571763.316.png 701571763.317.png 701571763.319.png 701571763.320.png 701571763.321.png 701571763.322.png 701571763.323.png 701571763.324.png 701571763.325.png 701571763.326.png 701571763.327.png 701571763.328.png 701571763.330.png 701571763.331.png 701571763.332.png 701571763.333.png 701571763.334.png 701571763.335.png 701571763.336.png 701571763.337.png 701571763.338.png 701571763.339.png 701571763.341.png 701571763.342.png 701571763.343.png 701571763.344.png 701571763.345.png 701571763.346.png 701571763.347.png 701571763.348.png 701571763.349.png 701571763.350.png 701571763.002.png 701571763.003.png 701571763.004.png 701571763.005.png 701571763.006.png 701571763.007.png 701571763.008.png 701571763.009.png 701571763.010.png 701571763.011.png 701571763.013.png 701571763.014.png 701571763.015.png 701571763.016.png 701571763.017.png 701571763.018.png 701571763.019.png 701571763.020.png 701571763.021.png 701571763.022.png 701571763.024.png 701571763.025.png 701571763.026.png 701571763.027.png 701571763.028.png 701571763.029.png 701571763.030.png 701571763.031.png 701571763.032.png 701571763.033.png 701571763.035.png 701571763.036.png 701571763.037.png 701571763.038.png 701571763.039.png 701571763.040.png 701571763.041.png 701571763.042.png 701571763.043.png 701571763.044.png 701571763.046.png 701571763.047.png 701571763.048.png 701571763.049.png 701571763.050.png 701571763.051.png 701571763.052.png 701571763.053.png 701571763.054.png 701571763.055.png 701571763.057.png 701571763.058.png 701571763.059.png 701571763.060.png 701571763.061.png 701571763.062.png 701571763.063.png 701571763.064.png 701571763.065.png 701571763.066.png 701571763.068.png 701571763.069.png 701571763.070.png 701571763.071.png 701571763.072.png 701571763.073.png 701571763.074.png 701571763.075.png 701571763.076.png 701571763.077.png 701571763.079.png 701571763.080.png 701571763.081.png 701571763.082.png 701571763.083.png 701571763.084.png 701571763.085.png 701571763.086.png 701571763.087.png 701571763.088.png 701571763.090.png 701571763.091.png 701571763.092.png 701571763.093.png 701571763.094.png 701571763.095.png 701571763.096.png 701571763.097.png 701571763.098.png 701571763.099.png 701571763.101.png 701571763.102.png 701571763.103.png 701571763.104.png 701571763.105.png 701571763.106.png 701571763.107.png 701571763.108.png 701571763.109.png 701571763.110.png 701571763.112.png 701571763.113.png 701571763.114.png 701571763.115.png 701571763.116.png 701571763.117.png 701571763.118.png 701571763.119.png 701571763.120.png 701571763.121.png 701571763.123.png 701571763.124.png 701571763.125.png 701571763.126.png 701571763.127.png 701571763.128.png 701571763.129.png 701571763.130.png 701571763.131.png 701571763.132.png 701571763.134.png 701571763.135.png 701571763.136.png 701571763.137.png 701571763.138.png 701571763.139.png 701571763.140.png 701571763.141.png 701571763.142.png 701571763.143.png 701571763.145.png 701571763.146.png 701571763.147.png 701571763.148.png 701571763.149.png 701571763.150.png 701571763.151.png 701571763.152.png 701571763.153.png 701571763.154.png 701571763.156.png 701571763.157.png 701571763.158.png 701571763.159.png 701571763.160.png 701571763.161.png 701571763.162.png 701571763.163.png 701571763.164.png 701571763.165.png 701571763.167.png 701571763.168.png 701571763.169.png 701571763.170.png 701571763.171.png 701571763.172.png 701571763.173.png 701571763.174.png 701571763.175.png 701571763.176.png 701571763.178.png 701571763.179.png 701571763.180.png 701571763.181.png 701571763.182.png 701571763.183.png 701571763.184.png 701571763.185.png 701571763.186.png 701571763.187.png 701571763.189.png 701571763.190.png 701571763.191.png 701571763.192.png 701571763.193.png 701571763.194.png 701571763.195.png 701571763.196.png 701571763.197.png 701571763.198.png 701571763.200.png 701571763.201.png 701571763.202.png 701571763.203.png 701571763.204.png 701571763.205.png 701571763.206.png 701571763.207.png 701571763.208.png 701571763.209.png 701571763.211.png 701571763.212.png 701571763.213.png 701571763.214.png 701571763.215.png 701571763.216.png 701571763.217.png 701571763.218.png 701571763.219.png 701571763.220.png 701571763.222.png 701571763.223.png 701571763.224.png 701571763.225.png 701571763.226.png 701571763.227.png 701571763.228.png 701571763.229.png 701571763.230.png 701571763.231.png 701571763.233.png 701571763.234.png 701571763.235.png 701571763.236.png 701571763.237.png 701571763.238.png 701571763.239.png 701571763.240.png 701571763.241.png 701571763.242.png 701571763.244.png 701571763.245.png 701571763.246.png 701571763.247.png 701571763.248.png 701571763.249.png 701571763.250.png 701571763.251.png 701571763.252.png 701571763.253.png 701571763.255.png 701571763.256.png 701571763.257.png 701571763.258.png 701571763.259.png 701571763.260.png 701571763.261.png 701571763.262.png 701571763.263.png 701571763.264.png 701571763.266.png 701571763.267.png 701571763.268.png 701571763.269.png 701571763.270.png 701571763.271.png 701571763.272.png 701571763.273.png 701571763.274.png 701571763.275.png 701571763.277.png 701571763.278.png 701571763.279.png 701571763.280.png 701571763.281.png 701571763.282.png 701571763.283.png
Zgłoś jeśli naruszono regulamin