Zegar cyfrowy z wyświetlaczem analogowym (AVT5002).pdf

(802 KB) Pobierz
Zegar cyfrowy z wyświetlaczem analogowym
P R O J E K T Y
Zegar cyfrowy
z wyświetlaczem
analogowym
AVT−5002
Zegary!
Ma³e, duøe,
z†wyúwietlaczami
LED lub
ciek³okrystalicznymi,
zbudowane
z†wykorzystaniem
procesorÛw lub elementÛw
dyskretnych, zawsze cieszy³y
siÍ wielkim zainteresowaniem
CzytelnikÛw pism
przeznaczonych dla
elektronikÛw. Nic dziwnego,
poniewaø budowanie zegara
nawet o†znakomitych
parametrach nie jest
zadaniem trudnym i†nie
przekracza moøliwoúci choÊby
niezbyt zaawansowanych
hobbystÛw. £adnie wykonany
zegar dobrze úwiadczy
o swoim konstruktorze.
Jest coú fascynuj¹cego w†budo-
wie i†dzia³aniu urz¹dzenia odmie-
rzaj¹cego czas, czyli øywio³u, ktÛ-
rego natury w³aúciwie nie znamy.
Chyba kaødy z†nas przy³apa³ siÍ
juø niejednokrotnie na wpatrywa-
niu siÍ w†przesuwaj¹ce siÍ wska-
zÛwki zegara mechanicznego lub
cyfry sekundnika wyúwietlane
przez zegar cyfrowy. Czy kiedy-
kolwiek bÍdziemy umieli wp³y-
waÊ na bieg czasu, spowalniaÊ go
lub dowolnie przyspieszaÊ?
Co spowodowa³o, øe postano-
wi³em zbudowaÊ kolejny zegar
elektroniczny i†zaprezentowaÊ go
Czytelnikom Elektroniki Praktycz-
nej? Postanowi³em skonstruowaÊ
efektowny zegar, ktÛry powieszo-
ny na úcianie mÛg³by wzbudziÊ
podziw odwiedzaj¹cych nasze
mieszkanie goúci. SadzÍ, øe uda³o
mi siÍ zrealizowaÊ postawione
zadanie.
WiÍkszoúÊ zegarÛw elektronicz-
nych konstruowanych przez ama-
torÛw wyposaøona jest w†rÛøn¹
liczbÍ wyúwietlaczy siedmioseg-
mentowych LED lub, znacznie
rzadziej, w†wyúwietlacze LCD.
Wynika to z†powszechnej dostÍp-
noúci i†niskiej ceny takich wy-
úwietlaczy oraz z†faktu, øe do
takich w³aúnie wyúwietlaczy do-
Elektronika Praktyczna 3/2001
27
Zegar cyfrowy z wyświetlaczem analogowym
stosowane s¹ prawie wszystkie
ìzegaroweî uk³ady scalone. Pro-
ponowany przeze mnie zegar ³¹-
czy w†sobie, w†pewnym stopniu,
cechy klasycznego zegara wska-
zÛwkowego z†wygl¹dem wspÛ³-
czesnego zegara cyfrowego.
Up³ywaj¹cy czas obrazowany jest
bowiem na wyúwietlaczach cyfro-
wych, ale sekundy wyúwietlane s¹
analogowo na ko³owym wyúwiet-
laczu zbudowanym z†60 diod LED.
Wszystko to razem wygl¹da ca³-
kiem efektownie.
Wyposaøanie zegara, ktÛry
w†za³oøeniu ma byÊ efektown¹
ozdob¹ naszego mieszkania,
w†skomplikowane funkcje nie wy-
dawa³o mi siÍ celowe. Dlatego teø
jedynym dodatkiem do podstawo-
wej funkcji wyúwietlania godzin,
minut i†sekund jest w†naszym
zegarze prosty budzik.
Proponowany uk³ad jest sto-
sunkowo prosty, a†jego budowa
bÍdzie wymagaÊ jedynie sporej
cierpliwoúci, niezbÍdnej do wlu-
towania w†p³ytkÍ 60 diod LED
i†60 rezystorÛw ograniczaj¹cych
p³yn¹cy przez nie pr¹d. Elementy
uøyte do jego budowy s¹ bardzo
³atwo dostÍpne i†relatywnie tanie.
Rys. 1. Schemat elektryczny zegara.
28
Elektronika Praktyczna 3/2001
Zegar cyfrowy z wyświetlaczem analogowym
List. 1.
Sub Main_loop
Reset Ab
’ustaw stan niski na wejściach danych pierwszego rejestru
Waitms 255
’zaczekaj 255ms
Do
Sseconds = Seconds ‘zmienna pomocnicza SSECOND przyjmuje wartość równą aktualnej wartości sekund
Call Gettime
’podprogram odczytujący aktualny czas z rejestrów RTC
Set S1
‘spróbuj ustawić stan wysoki na wejściu S1 procesora
If S1 = 0 Then
‘jeżeli próba nieudana (zwarty styk S1), to:
Call Setting_hours
‘podprogram ustawiania godziny i minuty
End If
Loop
End Sub
Procesor steruj¹cy prac¹ zegara
takøe naleøy do najpopularniej-
szych w†swojej klasie. Program
napisany zosta³ w†jÍzyku MCS
BASIC stosowanym w†tak popu-
larnym ostatnio pakiecie narzÍ-
dziowym BASCOM8051 produkcji
holenderskiej firmy MCS Electro-
nics. Wykorzystuj¹c wersjÍ BAS-
COM-a Special Edition for Elek-
tronika Praktyczna (dostÍpny na
stronie
www.ep.com.pl),
kaødy bÍ-
dzie mÛg³ dowolnie zmodyfiko-
waÊ kod ürÛd³owy programu i†do-
stosowaÊ go do w³asnych potrzeb.
Opis dzia³ania uk³adu
Schemat elektryczny zegara
przedstawiono na
rys. 1.
Sercem
uk³adu jest zaprogramowany pro-
cesor typu AT89C2051. Poniewaø
jednak liczba wyprowadzeÒ tego
procesora jest za ma³a do wyste-
rowania aø 60 diod LED i†czte-
rech wyúwietlaczy siedmiosegmen-
towych, zastosowa³em w†uk³adzie
dodatkowe elementy pomocnicze:
rejestry szeregowe typu 74LS146,
bezpoúrednio steruj¹ce diodami
LED.
CiÍøar odmierzania up³ywaj¹-
cego czasu, tj. zliczania sekund,
minut i†godzin zosta³ przerzucony
na ìdyøurnyî uk³ad RTC -
PCF8583. Uk³ad ten posiada jed-
n¹, bardzo istotn¹ dla konstruk-
torÛw zegarÛw cechÍ: moøe po-
prawnie pracowaÊ jeszcze przy
napiÍciu nie mniejszym od 1,5V,
pobieraj¹c wtedy znikomo ma³y
pr¹d, rzÍdu mikroamperÛw. Roz-
wi¹zuje to wszelkie problemy
zwi¹zane z†podtrzymaniem wska-
zaÒ zegara przy zaniku napiÍcia
zasilaj¹cego: uk³ad RTC zasilany
moøe byÊ dodatkowo z†baterii
1,5..3V do³¹czonej do z³¹cza BT1.
Wprawdzie podczas przerwy w†za-
silaniu wyúwietlacze i†diody LED
zostan¹ wy³¹czone, a†procesor
przerwie swoj¹ pracÍ, to po po-
wtÛrnym w³¹czeniu zasilania in-
formacja o†bieø¹cym czasie zosta-
nie ponownie odczytana z†uk³adu
PCF8583.
W†zegarze sekundy wyúwietla-
ne s¹ w†sposÛb analogowy,
a†up³yw minut i†godzin pokazy-
wany jest na wyúwietlaczach
siedmiosegmentowych. Do obs³u-
gi rejestrÛw szeregowych musimy
wykorzystaÊ dwa wyprowadzenia
procesora, tworz¹ce magistralÍ
I
2
C, poprzez ktÛr¹ procesor bÍ-
dzie komunikowa³ siÍ z†uk³adem
RTC. Wymaga to dwÛch kolej-
nych wyprowadzeÒ. Pozosta³o
nam zatem tylko 11 wolnych
pinÛw procesora, czyli trochÍ za
ma³o do zrealizowania multiplek-
sowanego wyúwietlania czterech
cyfr, obs³ugi przyciskÛw steruj¹-
cych i†g³oúniczka sygnalizacyjne-
go. Zatem postanowi³em dodaÊ
do uk³adu jeszcze jeden element
pomocniczy: dekoder kodu BCD
na kod wyúwietlacza siedmioseg-
mentowego, popularny 74LS247.
Katody segmentÛw wyúwietlaczy
zasilane bÍd¹ z†wyprowadzeÒ
uk³adu IC10, natomiast wspÛlne
anody wyúwietlaczy do³¹czane bÍ-
d¹ do plusa zasilania za poúred-
nictwem tranzystorÛw T1..T4, ste-
List. 2.
rowanych bezpoúrednio z†proce-
sora. Pozosta³e elementy uk³adu
to dwa przyciski s³uø¹ce do
ustawiania czasu i†budzika (S1
i†S2) oraz przetwornik piezoelek-
tryczny Q3.
Program steruj¹cy prac¹ zegara
ma do wykonywania dwie czyn-
noúci, ktÛre musz¹ byÊ realizowa-
ne symultanicznie: obs³ugÍ sekun-
dnika, polegaj¹c¹ na ìzape³nianiu
rejestrÛw szeregowych zeramiî
i†wyúwietlaniu bieø¹cego czasu na
wyúwietlaczach siedmiosegmento-
wych. Dodatkowym utrudnieniem
jest to, øe nie wszystkie wyjúcia
rejestrÛw zosta³y wykorzystane do
sterowania diodami LED. Wyjúcia
Q7 pierwszych oúmiu rejestrÛw
s³uø¹ do przekazywania informa-
cji do nastÍpnego rejestru
i†w†zwi¹zku z†tym zachodzi po-
trzeba generowania dodatkowego
impulsu zegarowego po up³ywie
kaødych siedmiu sekund. Program
pracuje w†pÍtli pokazanej na
list.
1,
a†na
list. 2†moøemy
zobaczyÊ,
jak sobie radzi z†tym i†innymi
problemami.
Dodatkowego komentarza wy-
maga tylko podprogram zeruj¹cy
rejestry sekund, a†w³aúciwie opÛü-
nienie 5ms wstawione wewn¹trz
pÍtli NEXT..FOR. Nie jest ono
konieczne do poprawnej pracy
programu, ale zapewnia uzyskanie
dodatkowego efektu. Bez opÛünie-
nia rejestry zerowane s¹ nieza-
Sub Gettime
I2Cstart
‘inicjalizacja magistrali I2C
I2Cwbyte &HA0
‘podanie adresu bazowego układu RTC
I2Cwbyte 2
‘podanie adresu rejestru sekund
I2Cstart
‘ponowna inicjalizacja magistrali I2C
I2Cwbyte &HA1
‘żądanie podania danych do odczytu
I2Crbyte Seconds, Ack
‘odczyt sekund
I2Crbyte Minutes, Ack
‘odczyt minut
I2Crbyte Hours, Nack
‘odczyt godzin
I2Cstop
‘koniec transmisji na magistrali I2C
Disp1 = Makedec(hours)
‘konwersja odczytanych minut na postać dziesiętną
Disp2 = Makedec(minutes)
‘konwersja odczytanych godzin na postać dziesiętną
If Sseconds <> Seconds Then
’jeżeli upłynęła kolejna sekunda, to:
Temp2 = Makedec(seconds)
’przetwórz odczytaną wartość z kodu BCD na postać dziesiętną
Select Case Temp2
’w zależności od wartości sekund:
Case 6: Call Clock_impulse ‘jeżeli stan sekund = 6, to wygeneruj dodatkowy impuls zegarowy
Case 13: Call Clock_impulse
Case 20: Call Clock_impulse
Case 27: Call Clock_impulse
Case 34: Call Clock_impulse
Case 41: Call Clock_impulse
Case 48: Call Clock_impulse
Case 55: Call Clock_impulse
Case 0: Call Leds_off
‘jeżeli stan sekund = zero, to zerowanie sekundnika
End Select
Call Clock_impulse
End If
'---------------------------
Sub Clock_impulse
Set Clock
Reset Clock
End Sub
'---------------------------
Sub Leds_off
Set Ab
For Temp = 1 To 60
Call Clock_impulse
Waitms 5
Next Temp
Reset Ab
End Sub
‘wygeneruj impuls zegarowy
‘podprogram generujący impuls zegarowy
‘podprogram zerujący sekundnik
‘ustaw stan wysoki na wejściach rejestru sekund
‘wygeneruj impuls zegarowy
‘zaczekaj 5 ms (patrz dodatkowy komentarz)
‘ustaw ponownie stan niski na wejściach rejestru sekund
Elektronika Praktyczna 3/2001
29
Zegar cyfrowy z wyświetlaczem analogowym
List. 3.
Sub Setting_hours
Change_time_flag = 0
Disp1 = 88: Disp2 = 88
tryb ustawiania godzin
Waitms 255: Waitms 255
Call Gettime
Do
Set S2
‘spróbuj ustawić stan wysoki na wejściu S2 procesora
If S2 = 0 Then
‘jeżeli próba nieudana (przycisk S2 zwarty), to:
Incr Disp1
‘zwiększ zmienną pomocniczą decydującą o wyświetlanej wartości godzin
Change_time_flag = 1
‘zmień wartość zmiennej pomocniczej CHANGE_TIME_FLAG
If Disp1 = 24 Then
‘jeżeli zmienna określająca ustawianą wartość godzin stałą się równa 24, to
Disp1 = 0
‘zmienna ta przyjmuje wartość 0
End If
Waitms 255
‘zaczekaj 255 ms
End If
Set S1
‘spróbuj ustawić stan wysoki na wejściu S1 procesora
If S1 = 0 Then
‘jeżeli próba nieudana, to:
If Change_time_flag = 1 Then
‘jeżeli wartość godzin została zmieniona, to:
Hours = Makebcd(disp1)
‘przekształć zmodyfikowaną wartość na postać kodu BCD
Call Settime
‘zapisz wartość godzin w rejestrze RTC
End If
Call Setting_minutes
‘podprogram ustawiania minut
End If
Loop
End Sub
Sub Setting_minutes
‘-------------------------
Set S1
If S1 = 0 Then
If Change_time_flag = 1 Then
Seconds = 0
Minutes = Makebcd(disp2)
Call Settime
Call Leds_off
End If
Call Setting_alarm
End If
Loop
End Sub
‘-------------------------
‘podprogram korekty wskazań godzin
‘zmienna pomocnicza sygnalizująca poczynienie zmian w ustawieniach
‘zegara przyjmuje wstępnie wartość 0
‘wyświetl na wyświetlaczach “88”, co jest sygnałem przejścia w
‘zaczekaj ok. 0,5 sekundy
‘powróć do wyświetlania aktualnego czasu
WYKAZ ELEMENTÓW
Rezystory
R1..R67: 220..330Ω
R68..R71: 1kΩ
Kondensatory
C1, C2: 27pF
C3: 33pF
C4: 100µF/10V
C5: 100nF
C6: 4,7µF/10V
Półprzewodniki
DP1..DP4: wyświetlacz siedmioseg−
mentowy LED wsp. anoda
D1..D60: LED
φ3mm
D61, D62: 1N4148
IC1..IC9: 74LS164
IC10: 74LS247
IC11: AT89C2051
IC12: PCF8583
T1..T4: BC557
Różne
CON1: ARK2 (3,5mm)
Q1: rezonator kwarcowy
11,059MHz
Q2: rezonator kwarcowy 32768Hz
Q3: przetwornik piezo z generato−
rem
S1, S2: mikroprzełączniki
‘jeżeli bieżący czas został zmieniony, to:
‘wyzeruj rejestr sekund RTC
‘przekształć zmodyfikowaną wartość minut na kod BCD
‘zapisz wartość minut w rejestrze RTC
‘wyzeruj sekundnik zegara
‘ustawianie czasu budzenia
uwaøalnie: po prostu wszystkie
diody nagle gasn¹. Po wstawieniu
opÛünienia wygaszanie diod odby-
wa siÍ stopniowo, w†czasie ok.
0,3 sekundy. Wygl¹da to napraw-
dÍ bardzo ³adnie!
Kolejnym zadaniem wykony-
wanym przez program steruj¹cy
prac¹ zegara jest wyúwietlanie
aktualnej godziny i†minuty na
wyúwietlaczach siedmiosegmento-
wych LED. Funkcja ta realizowa-
na jest przez podprogram obs³ugi
przerwania pochodz¹cego od Ti-
mera 0, pracuj¹cego w†trybie ti-
mera z†zegarem wewnÍtrznym i†re-
jestrem szesnastobitowym.
Kaødy zegar, a†nasz nie jest tu
wyj¹tkiem, wymaga wstÍpnego
ustawiania aktualnego czasu,
a†takøe jego ewentualnej korekty.
Przyjrzyjmy siÍ wiÍc fragmentowi
listingu podprogramu ustawiania
aktualnego czasu oraz godziny
i†minuty budzenia. Przeanalizuje-
my jedynie fragment podprogramu
realizuj¹cy ustawianie godzin, po-
niewaø ustawianie pozosta³ych
wartoúci zrealizowane jest prawie
identycznie (list.
3).
Montaø i†uruchomienie
Na
rys. 2
przedstawiono roz-
mieszczenie elementÛw na p³ytce
obwodu drukowanego wykonane-
go na laminacie dwustronnym
z†metalizacj¹. Jeøeli celem by³o
zbudowanie zegara o jak najbar-
dziej efektownej i†bajeranckiej
konstrukcji, to nie widzia³em po-
wodu, aby w†takim samym stylu
nie wykonaÊ p³ytki obwodu dru-
kowanego. Moøe rozmieszczenie
rejestrÛw na obwodzie ko³a wpi-
sanego w†obrys p³ytki niczemu
nie s³uøy, ale... chyba fajnie wy-
gl¹da!
Montaø zegara wykonujemy ty-
powo, z†jednym wyj¹tkiem: nastÍ-
puj¹ce elementy musz¹ byÊ przy-
lutowane od strony úcieøek
(umownej w†przypadku p³ytki
dwustronnej):
1. Wyúwietlacze siedmioseg-
mentowe LED.
2. Przyciski S1 i†S2.
3. Diody sekundnika D1..D60.
W†pierwszym etapie pracy
montujemy wszystkie elementy,
z†wyj¹tkiem diod sekundnika. Ze
wzglÍdu na chÍÊ ograniczenia
rozmiarÛw p³ytki obwodu druko-
wanego odst¹pi³em od sztywno
dotychczas przestrzeganych prze-
ze mnie zasad i†rezystory ograni-
czaj¹ce pr¹d p³yn¹cy przez diody
s¹ wyj¹tkowo montowane w†pozy-
cji pionowej. Nie wygl¹da to
najlepiej, ale pozwala na za-
oszczÍdzenie sporej powierzchni.
Tu pora na ma³¹ uwagÍ dotycz¹c¹
rezystorÛw R1..R60, ktÛrych war-
toúÊ zosta³a dobrana do tanich
diod LED o†nie najwyøszej jakoú-
ci. W†przypadku zastosowania lep-
szych diod, wartoúÊ tych rezys-
torÛw naleøy niekiedy znacznie
zwiÍkszyÊ, czasami nawet do
1,5kΩ! W†kaødym przypadku,
przed wlutowaniem rezystorÛw ra-
dzi³bym przeprowadziÊ prÛbÍ
i†doúwiadczalnie ustaliÊ ich opty-
maln¹ wartoúÊ. PamiÍtajmy, øe
multipleksowane wyúwietlacze nie
bÍd¹ úwieciÊ zbyt jasno i†úwiat³o
emitowane przez diody nie po-
winno utrudniaÊ odczytu cyfr na
wyúwietlaczach siedmiosegmento-
wych.
Wlutowanie w†p³ytkÍ wszyst-
kich elementÛw, z†wyj¹tkiem diod
LED, nie powinno nikomu spra-
wiÊ wiÍkszego k³opotu. Inaczej
moøe mieÊ siÍ sprawa z†rÛwnym
zamontowaniem 60 diod, ale na
szczÍúcie zosta³a przygotowana
jeszcze jedna p³ytka, pe³ni¹ca
funkcjÍ w†miarÍ efektownej p³yty
czo³owej zegara, a†takøe mog¹ca
pos³uøyÊ jako matryca u³atwiaj¹ca
idealnie rÛwne wlutowanie diod.
KolejnoúÊ postÍpowania powinna
byÊ nastÍpuj¹ca:
1. Wk³adamy wszystkie diody
LED w†przeznaczone dla nich ot-
wory w†punktach lutowniczych.
30
Elektronika Praktyczna 3/2001
Zegar cyfrowy z wyświetlaczem analogowym
przest¹piÊ do ustawiania bieø¹cej
godziny za pomoc¹ przycisku S2.
Po wykonaniu tej czynnoúci nacis-
kamy ponownie S1 i†po dwukrot-
nym w³¹czeniu wszystkich segmen-
tÛw wyúwietlaczy moøemy ustawiÊ
minuty aktualnego czasu. Kolejne
naciúniÍcie S1 spowoduje zapisanie
podanego czasu w†rejestrach uk³a-
du RTC, wyzerowanie rejestru se-
kund i†przejúcie do trybu ustawia-
nia czasu budzenia, co zostanie
zasygnalizowane krÛtki sygna³em
düwiÍkowym. Czas budzenia usta-
wimy identycznie jak czas bieø¹cy.
Podczas normalnej pracy zegara
przycisk S2 s³uøy do naprzemien-
nego w³¹czania i†wy³¹czania budzi-
ka. W³¹czenie alarmu sygnalizowa-
ne jest dwoma sygna³ami akustycz-
nymi, a†wy³¹czenie jednym.
Andrzej Gawryluk
Wzory p³ytek drukowanych w for-
macie PDF s¹ dostÍpne w Internecie
pod adresem:
http://www.ep.com.pl/
?pdf/marzec01.htm
oraz na p³ycie
CD-EP03/2001B w katalogu
PCB.
Rys. 2. Rozmieszczenie elementów na płytce drukowanej.
2. SkrÍcamy ze sob¹ p³ytkÍ
g³Ûwn¹ zegara i†p³ytÍ czo³ow¹. Do
skrÍcenia p³yt moøemy uøyÊ úru-
bek i†tulejek dystansowych odpo-
wiedniej d³ugoúci lub, w†ostatecz-
noúci trzech úrub o úrednicy 3mm
wyposaøonych w†trzy nakrÍtki.
3. Tak utworzony pakiet k³a-
dziemy na g³adkiej powierzchni,
p³yt¹ czo³ow¹ w†dÛ³.
4. Wsuwamy wszystkie diody
w†otwory w†p³ycie czo³owej. P³yta
czo³owa odsuniÍta jest od p³asz-
czyzny, na ktÛrej leøy na odleg-
³oúÊ ok. 2mm przez wystaj¹ce
³ebki úrub, tak øe diody bÍd¹
trochÍ wystawaÊ ponad jej po-
wierzchniÍ.
5. Lutujemy wszystkie diody
LED, maj¹c absolutn¹ pewnoúÊ, øe
zosta³y one rozmieszczone ideal-
nie rÛwno.
Ostatni¹ czynnoúci¹ bÍdzie do-
³¹czenie do z³¹cza BT1 baterii
o†napiÍciu 3V. Mog¹ to byÊ np.
dwie baterie typu AA po³¹czone
szeregowo. Baterie te bÍd¹ wyko-
rzystywane jedynie sporadycznie,
a†byÊ moøe nigdy, jeøeli nie na-
st¹pi przerwa w†zasilaniu zegara.
Jeøeli zatem zastosujemy baterie
alkaliczne dobrego producenta, to
powinny one wystarczyÊ na kilka
lat pracy zegara. Dlatego teø nie
przewidzia³em øadnych elemen-
tÛw mocuj¹cych awaryjne ürÛd³o
zasilania i†baterie moøna po pros-
tu przykleiÊ do p³ytki zegara, tak
jak zosta³o to uczynione w†uk³a-
dzie prototypowym.
Uk³ad zegara zmontowany ze
sprawdzonych elementÛw nie wy-
maga po zmontowaniu jakichkol-
wiek czynnoúci uruchomienio-
wych i†dzia³a natychmiast po w³o-
øeniu zaprogramowanego proceso-
ra w†podstawkÍ.
Na zakoÒczenie naleøy jeszcze
omÛwiÊ sposÛb ustawiania aktual-
nej godziny i†minut oraz czasu
budzenia. Przejúcie do trybu usta-
wiania inicjowane jest krÛtkim na-
ciúniÍciem przycisku S1 (z lewej
strony p³yty czo³owej). Odebranie
przez procesor tego sygna³u kwi-
towane jest krÛtkotrwa³ym w³¹cze-
niem wszystkich segmentÛw wy-
úwietlaczy LED, po czym moøemy
Elektronika Praktyczna 3/2001
31
Zgłoś jeśli naruszono regulamin