Na rysunku 1 pokazano schemat ideowy modułu. Dokładniejsza charakterystyka układu PR4010 znajduje się w opisie „Moduł trzech 16-segmentowych wyświetlaczy LED”. Niżej skupimy się wyłącznie na aspekcie funkcjonalnym.
Zastosowany w module, matrycowy wyświetlacz LED typu TC07-11 umożliwia wyświetlanie znaków wpisanych w matrycę 5×7 pikseli. Dzięki temu jest możliwe wyświetlenie wszystkich znaków ASCII oraz innych, np. zdefiniowanych przez użytkownika. Dodatkowo, wyświetlacze LED wyróżniają się bardzo dobrą czytelnością również w kiepskich warunkach oświetlenia. Zastosowanie układów Premy typu PR4010 umożliwia konstrukcję modułów o minimalnej liczbie elementów, niewymagających rezystorów ustalających prąd segmentów.
W związku z tym, że rejestry dołączają masę do katod poszczególnych diod, to wewnętrzna konstrukcja wyświetlacza wymusiła użycie siedmiu tranzystorów PNP typu BC858B do załączania zasilania anod. I tak otwarcie tranzystora T1 powoduje załączenie zasilania do pierwszego wiersza wszystkich wyświetlaczy matrycowych LED1...LED4, T2 – drugiego itd.
W module użyto 3 układów PR4010, co daje 30 wyjść, których można użyć do zasilania LED. 7 wyjść jest używanych do załączania tranzystorów T1...T7, więc do LED-ów pozostaje 30-7 tj. 23 wyjścia. Każdy z wyświetlaczy ma 5 pikseli w wierszu, więc można sterować maksymalnie 4 wyświetlaczami. 3 wyjścia układów pozostają w takiej sytuacji nieużywane.
Układ jest szeregowym rejestrem przesuwnym, więc bit przesłany jako pierwszy staje się najstarszym, 10-tym. Dane doprowadzane są do wejścia DIN i wpisywane przy każdym narastającym zboczu na wejściu CLK. Narastające zbocze sygnału na wejściu LOAD powoduje przepisanie stanów z wewnętrznych rejestrów przesuwnych na wyjścia układu. W związku z taką budową wewnętrzną układu, pierwsze przesłane do modułu bity (numer 21...27) odpowiadają za załączenie poszczególnych wierszy. Jako tranzystory klucze zastosowano BC858 o polaryzacji PNP, więc logiczna „1” powoduje zatkanie tranzystora i wyłączenie wiersza, natomiast „0” jego załączenie. Np. przesłanie do wyświetlacza sekwencji bitów (zapis zgodny z formatem języka C) 0b11111111, 0b10110111, 0b00011000, 0b11101111 w kolejności od najstarszego do najmłodszego, powoduje zaświecenie pierwszego wiersza obrazu ze zdjęcia modułu.
Wyświetlacz musi być multipleksowany. Oznacza to, że w danym momencie może być załączony tylko jeden wiersz, a przełączanie pomiędzy nimi powinno być na tyle szybkie, aby ludzkie oko go nie zauważyło. Zaleca się częstotliwość multipleksowania równą co najmniej 300 Hz. Oznacza to konieczność wysłania do rejestrów kompletu danych (4 bajty na moduł) co 1/300 sekundy.
Wartość prądu płynącego przez segmenty ustalają rezystory R1, R2, R3. Powinny one mieć tę samą rezystancję. Dodatkowo, jasność można regulować za pomocą sygnału PWM na wejściu BLANK.
Moduły mają wyprowadzenia na krawędziach płytek, dzięki którym można je łatwo łączyć w łańcuchy (OUT do DIN następnego; CLK, LOAD, BRT, CTRL – wspólne). Producent zaleca, aby w takim łańcuchu nie było więcej niż 20 układów, co umożliwia wyświetlenie do 28 znaków (21 układów w szeregu).
Podczas pisania programu obsługi pewną trudność sprawia nietypowa, niepodzielna przez 8 długość rejestru. Na listingu 1 umieszczono fragment przykładowego programu w języku C wysyłającego 30 bitów przez wyjście DIN mikrokontrolera z rodziny 8051. Po modyfikacji można go również użyć do sterowania „Modułem LED 3×16 segmentów”.
void send30bits(char * tptr)
{
char i, j, x;
for (j = 0; j < 3;) //wysłanie 24 bitów
{
x = *tptr; //pobranie bajta spod adresu tptr
for (i = 0; i < 8;)
{
x <<= 1; //przesunięcie zmiennej w lewo,
//najstarszy bit przenoszony do CY
DIN = CY; //przypisanie wyjściu danych stanu CY
CLK = 1; //impuls zegarowy
CLK = 0;
i++;
}
j++;
tptr++;
}
x = *tptr; //kolejny bajt
for (i = 0; i < 6;) //jeszcze 6 bitów
{
x <<= 1;
DIN = CY;
CLK = 1;
CLK = 0;
i++;
}
tptr++;
}
void main()
{
CTRL = 1; //stan początkowy wyjść
BLANK = DIN = CLK = LOAD = 0;
...
send30bits(&rows);
LOAD = 1; //impuls na wejściu LOAD
LOAD = 0;
...
}
Na rysunku 2 pokazano schemat montażowy modułu wyświetlacza. Do jego budowy użyto elementów SMD, więc jego montaż wymaga pewnej wprawy. Najtrudniejsze ze względu na niewielki raster wyprowadzeń jest przylutowanie układów scalonych. Trudne ze względu na umieszczenie pomiędzy nóżkami wyświetlacza jest również przylutowanie tranzystorów. Wyświetlacze należy przylutować na końcu.
Moduł jest zasilany napięciem 5 V. Prąd segmentów ustalono na wartość ok. 5 mA. Po poprawnym zmontowaniu moduł nie wymaga żadnych czynności regulacyjnych i od razu jest gotowy do pracy.
Jacek Bogusz, EP
- R1...R3: 80 kΩ, ew. 82 kΩ (SMD, 0603)
- C1, C2: 100 nF (SMD, 0603)
- LED1...LED4: TC07-11GWA
- T1...T7: BC858B (SOT-23)
- U1...U3: PR4010