- sterowany poprzez magistralę I²C,
- współpracuje z wyświetlaczem DE127RS20, który umożliwia wyświetlenie czterech cyfr siedmiosegmentowych o wysokości 8,9 mm wraz z przecinkami,
- opracowany dodatkowy adapter umożliwiający zastosowanie wyświetlaczy zgodnych wyprowadzeniami z cyframi o większej wysokości np.: DE119 (12,7 mm), DE120 (17,78 mm), DE158 (25,4 mm),
- pobór prądu modułu, w którym wysterowano wszystkie segmenty, wynosił mniej niż 10 μA w przypadku wyświetlacza DE127 (8,9 mm) i mniej niż 35 μA w przypadku DE158 (25,4 mm).
Nie zawsze komunikacja z użytkownikiem musi bazować na dużych wyświetlaczach TFT, w wielu przypadkach sprawdzi się zwykły wyświetlacz siedmiosegmentowy. Cechuje się on jednak sporym poborem mocy. Gdy zależy nam na oszczędnym gospodarowaniu energią, warto przemyśleć zastosowanie znakowego wyświetlacza LCD.
Wybór mikrokontrolerów z wbudowanym interfejsem LCD jest ograniczony. Interfejs zajmuje sporą liczbę wyprowadzeń, a nie zawsze chcemy rezygnować z własnych preferencji co do wyboru mikrokontrolera. Wtedy z pomocą przychodzą zewnętrzne układy driverów LCD, takie jak zastosowany w module PCF8577C, którego strukturę wewnętrzną pokazano na rysunku 1. Zawiera on driver wyświetlacza LCD pracujący w trybie sterowania bezpośredniego 32 segmentami oraz w trybie multiplex 1:2 do 64 segmentami. Dodatkowo zawiera generator taktujący RC, osiem rejestrów ośmiobitowych (dwa banki 2×4 rejestry) przechowujących kształt wyświetlanego znaku oraz kontroler interfejsu I²C.
Budowa i działanie
Schemat układu został pokazany na rysunku 2. Oscylator układu U1 jest konfigurowany elementami R1 i C1, magistrala I²C doprowadzona jest do złączy I²Cx zgodnych z standardem Grove, QWIIC i na złącze szpilkowe, co ułatwia podłączenie do popularnych płytek uruchomieniowych. Układ wymaga zasilania 3...5 V.
Do wyprowadzeń S1...S32 podłączone są bezpośrednio segmenty wyświetlacza LCD. Model współpracuje z wyświetlaczem DE127RS20, który umożliwia wyświetlenie czterech cyfr siedmiosegmentowych o wysokości 8,9 mm wraz z przecinkami i dwukropkiem zegarowym. Do płytki opracowany został adapter umożliwiający zastosowanie wyświetlaczy zgodnych wyprowadzeniami z cyframi o większej wysokości np.: DE119 (12,7 mm), DE120 (17,78 mm), DE158 (25,4 mm). Przypisanie segmentów pokazano w tabeli 1. Dla ułatwienia oprogramowania segmenty cyfr przypisane są identycznie w kolejności A...G, różnica występuje jedynie w przypadku przecinków i dwukropka, który przypisany jest do cyfry jednostek.
Montaż i uruchomienie
Układ zmontowany jest na niewielkiej dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 3. Montaż jest typowy i nie wymaga opisu. Podczas montażu należy zadbać o zachowanie standardów ESD, gdyż układ PCF i wyświetlacz może zostać uszkodzony ładunkami statycznymi.
Do połączenia z wyświetlaczem w zależności od upodobań można użyć listwy i gniazda precyzyjnego SIP, wtedy możliwe jest łatwe rozłączenie i wymiana współpracującego wyświetlacza. W modelu wyświetlacz jest wlutowany na stałe.
W przypadku użycia wyświetlaczy o wyższej cyfrze konieczne jest użycie płytki adaptera, której schemat został pokazany na rysunku 4. W przypadku adaptera od strony druku lutujemy listwę kołkową łączącą adapter bezpośrednio z płytką główną, od strony elementów lutujemy parę złączy kielichowych w rozstawie zgodnym z użytym wyświetlaczem. Oczywiście wyświetlacz może zostać wlutowany bezpośrednio w płytkę adaptera.
Moduł LCD nie wymaga uruchamiania. Dla sprawdzenia moduł można podłączyć do Raspberry Pi. Adres bazowy określony jest na 0x3A, co można sprawdzić poleceniem:
Wynik działania polecenia pokazano na rysunku 5.
Sterowanie wyświetlaczem odbywa się poprzez rejestry układu PCF, mapa rejestrów znajduje się na rysunku 6. W rejestrze kontrolnym ustawiamy bit7=0, wybierając statyczny tryb wyświetlania, bit6=0, wybierając bank rejestrów A, bity 5...3 odpowiedzialne za subadres ustawiamy na 0. Bity V 2...0 służą do adresowania rejestru segmentów w bankach. Bank A dostępny jest pod adresami 0x00, 0x02, 0x04, 0x06. Zapisując kształty znaku w rejestrach wybranego banku (A), sterujemy świeceniem segmentów LCD.
Zapis poprzez magistralę odbywa się zgodnie z sekwencją z rysunku 5. Przykładowa sekwencja zapisu wyświetlająca wszystkie segmenty LCD wygląda tak:
i2cset -y 1 0x3a 0x02 0xFF
i2cset -y 1 0x3a 0x04 0xFF
i2cset -y 1 0x3a 0x06 0xFF
Efekt jej działania widać na fotografii tytułowej.
Podczas testów pobór prądu modułu zasilanego napięciem 3,3 V, w którym wysterowano wszystkie segmenty, wynosił mniej niż 10 μA w przypadku wyświetlacza DE127 (8,9 mm) i mniej niż 35 μA w przypadku DE158 (25,4 mm), co pozwala zasilać wyświetlacz z niewielkiej baterii przez długi czas... Jeżeli wszystko działa poprawnie, można moduł zastosować we własnej aplikacji - powodzenia.
Adam Tatuś, EP
- R1: 1 MΩ 1%
- R2, R3: 10 kΩ
- C1: 680 pF 10 V NP0
- C2: 0,1 μF 10 V
- C3: 1 μF 10 V
- U1: PCF8577CT3 (SOT158-1)
- I²C1: listwa SIP4 2,54
- I²C2: złącze JST 1 mm
- I²C: złącze Grove kątowe
- LCD: wyświetlacz LCD DE127RS20