
Od dłuższego czasu zalegał mi w szufladzie ogromny wyświetlacz ze starego zepsutego radiobudzika.
Radiobudzik ten był prawdopodobnie zrobiony na układzie LM8560.
Wyświetlacz ma wyprowadzenia zgodne z Lite-ON LTC-637D1P, ale ma większe cyfry i w każdym segmencie ma 2 zielone LED-y.
Typowe wyświetlacze multipleksowane spotykane w sprzedaży mają jedną katodę albo anodę wspólną dla 8 segmentów i tyle wspólnych katod/anod, ile jest cyfr. Każda cyfra ma tak samo podłączone segmenty.
Tutaj jest inaczej. Są tylko dwie wspólne katody i 14 anod obsługujących segmenty cyfr.
Budowa wewnętrzna wyświetlacza

Liczby są numerami wyprowadzeń anod, kolor czerwony oznacza wspólną katodę 1 (wyprowadzenia 1 i 29), a zielony - wspólną katodę 2 (wyprowadzenia 2 i 26).
(Oprócz elementów pokazanych powyżej są jeszcze 2 kropki po lewej (PM i AM) oraz jedna po prawej na dole (ALARM), ale nimi się nie będę zajmować.)
Dwukropek może sobie świecić stale - nie trzeba nim sterować.
Wychodzi 2+14=16 linii sterujących - za dużo jak na mikrokontroler AT89C2051, który ma 15 linii GPIO. Zresztą, podobnie byłoby w przypadku np. ATtiny2313 - jeśli chcemy mieć zewnętrzny kwarc, to też jest do dyspozycji 15 linii.
Jedną linię można banalnie łatwo zaoszczędzić - wystarczy połączyć ze sobą sterowanie segmentami a,d,e,g pierwszej cyfry, czyli wyprowadzeniami 7 i 8; nadal da się wyświetlać cyfry 1 i 2 na pierwszej pozycji (na której i tak brakuje segmentu f, czyli górnego lewego).
Jeszcze jedną linię można zaoszczędzić, dając na wyprowadzenie 6 iloczyn sygnałów na 7 (już połączone z 8) i 9 - przy pomocy dwóch diód 1N4148. Na pozycji pierwszej można będzie nie wyświelić niczego, wyświetlić 1 albo 2.
Czyli mamy 2+12 linii sterujących wyświetlaczem. Pozostaje jedna wolna linia, przy pomocy której będzie można nastawiać zegar.
Schemat układu

Sterowanie wspólnymi katodami odbywa się przez tranzystory BC337, których bazy są podciągane opornikami 1k do +5V, a mikrokontroler może je zatkać wystawiając 0 na odpowiedni port.
Anody zaś są sterowane tranzystorami BC557, których bazy - poprzez rezystory 4,7k - załącza 0 wystawione przez mikrokontroler na odpowiedni port.
Dla zachowania jednakowej jasności segmentów użyłem 14, a nie 12 tranzystorów BC557 - opisane wyżej oszczędności w połączeniach dotyczą tylko portów mikrokontrolera.
Przy 2 zielonych diodach na segment i zasilaniu 5V, prąd płynący przez segmenty i tak jest mniejszy niż mógłby być, więc nie dawałem już żadnych oporników.
Prototyp - pająk











Nastawianie zegara odbywa się przez UART - zegar podsłuchuje meldunki lecące magistralą domu inteligentnego (9600,8,N,1) i się wg nich nastawia.
Quote:\rDD;HH:MM:SS;...
Przełącznikiem można odpiąć RXD (P3.0) od magistrali i podpiąć ten port do masy, co jest sygnałem dla programu, żeby zgasić wyświetlacz (zegar idzie sobie dalej).
Pobór prądu:
- przy 5 V: wszystkie segmenty: 310 mA, 0:00: 280 mA
- przy 5,88 V: wszystkie segmenty: 400 mA, 0:00: 373 mA
Program
Multipleksowanie odbywa się w przerwaniu zegarowym, które jest wywoływane co 3600 cykli, czyli 11059200/12/3600 = 256 razy na sekundę.
W pętli głównej program czeka na kolejne znaki z magistrali, żeby się nastawić, oraz aktualizuje zegar i "framebuffer", jeśli przerwanie ustawi flagę, że minęła sekunda.
Multipleksowanie wyświetlacza nie jest w żaden sposób zakłócone innymi operacjami.
Podczas wyświetlania danej godziny segmenty świecą jednakowo i nic nie miga, ale przy zmianie stanu zegara, w zależności od liczby zapalonych segmentów, jasność trochę się zmienia.
To chyba skutek za małego napięcia zasilania do tak dużego wyświetlacza (?)
Zaraz po włączeniu, kiedy mikrokontroler jest w stanie resetu, na wszystkich liniach są jedynki, co oznacza wyłączone anody, ale włączone wspólne katody. Świeci wtedy podłączony na stałe przez opornik 220 omów dwukropek - jaśniej niż normalnie, bo nie odbywa się multipleksacja.
Co dalej
1. Trzebaby zrobić jakąś fajną obudowę.
2. Dobrze byłoby zaoszczędzić jeszcze chociaż jedną linię, żeby móc zrobić normalne nastawianie zegara przy pomocy 2 przycisków. Jakieś pomysły?

Cool? Ranking DIY