LPH7779 i wyświetlacz ze starego telefonu oraz Bascom AVR

5/5 - (1 vote)
widok wyświetlacza od spodu

widok wyświetlacza od spodu, po wymontowaniu z telefonu

No i w końcu stało się … W końcu „poszedł na warsztat” wyświetlacz graficzny … Nie tam jakiś super nowoczesny, kolorowy, ale specyficzny, wszystkim dobrze znany – z telefonu … Traf tak chciał, że budując lub starając się uruchomić radyjko na TEA5767, na pierwszy strzał chciałem uruchomić projekt znaleziony w internecie. I proszę radio w projekcie wyposażone było w wyświetlacz 😉 i to nie byle jaki, bo jak wcześniej wspomniałem specyficzny. Wysoce energooszczędny (pobór prądu około 240µA przy zasilaniu napięciem 3,3V) niewielki 84 na 48 pikseli, zasilany ku mojej udręce napięciem 3,3V. Charakteryzujący się czytelnym polem o bardzo dobrych właściwościach, pochodzący z telefonu Nokia 3310 ;-p

Z istotnych zalet należy wymienić szeroki zakres temperatur pacy, od wysokich mrozów -25°C po ekstremalne upały 70°C, np w nagrzanym latem samochodzie pozostawionym na otwartym słońcu. Wyświetlacz pomieści 6 wierszy po 14 znaków. Przy organizacji: 6 kolumn i 8 wierszy (na znak). Z tego można obliczyć ile bajtów potrzeba na jeden wiersz – wychodzi 6 na każdy znak x 14 znaków = 84 bajty w 6 wierszach – co daje 504 bajty pamięci RAM w sterowniku. Układ wyświetlacza stanowi zintegrowany ze sterownikiem moduł LCD – GD47 i dwa kondensatory (nie wiem czy są wykorzystane). Moduł wykonany jest w technologii COG (Chip on Glass), z wyprowadzeniami typu ACF (Adhesive Conductive Film). Do pracy niezbędne są dwa kondensatory poza obwodem modułu, umieszczone na płytce drukowanej urządzenia współpracującego.
Sterownik ekranu zawiera HW-reset, tripler lub quadrupler napięcia zależnie od temperatury, układ kompensacji temperatury i kontroli napięcia niskiego zasilania.
Sterownik zawiera (jak to wspomniałem wcześniej) 84×48 bitów pamięci RAM. Jeden bit w pamięci RAM odwzorowuje jeden piksel na ekranie. Sterownik  nie zawiera CG-ROM (generatora znaków). Brak generatora przysporzy dodatkowej pracy lecz możemy dowolnie definiować wielkość i rodzaj czcionki. Poszukując informacji o wyświetlaczu natrafiłem na dwa podawane w różnych artykułach oznaczenia sterownika -> LPH7779, oraz PCD8544. Modele te różnią się drobnymi detalami w postaci instrukcji (tryb negatywowy i ustawianie kontrastu). W odnalezionych informacjach znalazłem też wzmiankę o różnych modelach wyświetlaczy stosowanych w telefonach pochodzących od producentów: Philips i Seiko Epson. Co było by zgodne z odmiennymi oznaczeniami kontrolerów. Możemy je rozpoznać po rodzaju złącza i wyprowadzeniach w telefonie.

prosty sposób na identyfikację producenta modułu wyświetlacza, identyfikacja na podstawie typu złącza

prosty sposób na identyfikację producenta modułu wyświetlacza, identyfikacja na podstawie typu złącza

Wyświetlacz ten można spotkać w telefonach
– Nokia 3210
– Nokia 3310
– Nokia 3330
– Nokia 5510
– Nokia 5110
– Nokia 6110
– Nokia 6150
– Nokia 8210
– Nokia 8850

Warto wspomnieć, że w telefonie Nokia 3410 znajduje się bardzo podobny wyświetlacz. Ma on większą rozdzielczość (96×65 pikseli), sterownik PCF8812 (Philips). Sterownik ten może obsłużyć matrycę większą – 102×65, niż zastosowana w tym wyświetlaczu telefonu. Mechanicznie i elektrycznie matryce do Nokii 3310 i 3410 są w pełni zamienne. Mają mieć identyczne wymiary, wyprowadzenia elektryczne.

Doskonały artykuł z minimum wiedzy o topologii wyprowadzeń dla „naszego” wyświetlacza.

widok złącza z opisem wyprowadzeń

widok złącza z opisem wyprowadzeń

Wyprowadzenia jakie mamy do dyspozycji to:
SDIN serial data input – Input for the clock signal: 0.0 to 4.0 Mbits/s.
SCLK serial clock input
D/C data/command – dla command aktywny stan niski
SCE chip enable – aktywny stan niski
RES external reset input – aktywny stan niski
VOUT do podłączenia kondensatora filtrującego zasilanie matrycy
VDD zasilanie
GND masa zasilania

timming

Sterując wyświetlacz należy pamiętać, iż maksymalna częstotliwość sygnału SCLK nie może przekroczyć 4MHz aby wszystko dobrze funkcjonowało. Podanie prawidłowego sygnału reset też jest bardzo istotne, ponieważ nieprawidłowe może nawet uszkodzić moduł, co jest nawet zaznaczone w nocie katalogowej.

zalecenia producenta

zalecenia producenta

Gdy załączymy zasilanie należy odczekać 30ms i podać sygnał reset o czasie trwania 100ns.

Po załączeniu zasilania i zresetowaniu modułu musi nastąpić prawidłowa inicjalizacja sterownika LCD. Nie jest to nic innego jak seria instrukcji określających niezbędne parametry dla prawidłowej pracy. W tym momencie opowiem czego się naczytałem. Otóż model tego wyświetlacza stał się na tyle popularny, iż doczekał się też produkcji nazwijmy je „nieoryginalnych”. Prawdopodobnie nie zawsze są one w 100% zgodne z notą sterownika PCD8544, o którą jest oparty kod źródłowy przytoczony poniżej, z przykładem obsługi wyświetlacza. Co objawia się błędnym funkcjonowaniem lub całkowitym brakiem współpracy z wyświetlaczem. Ponoć zaradzić temu można przez modyfikację poleceń i parametrów służących do inicjalizacji.
Znalazłem też uwagi na temat kondensatora podłączanego do wyprowadzenia Vout. W nocie podana jest informacja o minimalnej wartości kondensatorów zewnętrznych wynoszącej 1µF, w różnych opracowaniach najczęściej widziałem kondensator o wartości 4,7µF. Niemniej nota zawiera też informację, iż zalecana jest większa pojemność od minimalnej. Czytając czyjeś opracowanie znalazłem informację o tym, że przy małych wartościach kondensatora Vout wyświetlacz (nie oryginalny) nie pracował poprawnie. Dopiero przy wartości dużo większej układ zaczął pracować.

A ja sobie myślę, że problemy mogą wynikać w związku z zastosowaniem różnych modeli zaimplementowanych sterowników, o których wspomniałem na wstępie bądź jeszcze odmiennych.

Tak, że w razie problemów należy zwrócić uwagę na kod inicjujący, oraz wartość tego kondensatora. Mnie na szczęście takie niedogodności nie spotkały, ale miałem inne problemy … o tym może później.

uwagi stosowne przy doborze wartości kondensatora

uwagi stosowne przy doborze wartości kondensatora

W tym momencie trzeba rozważyć sposób połączenia modułu z µC. O ile zdecydujemy się na wspólne zasilanie na poziomie 3,3V o tyle nie będzie wymagane dalsze zwracanie w tym temacie uwagi. Należy pamiętać tylko o stosownych kondensatorach. Co natomiast jeśli µC musi być zasilany napięciem wyższym – np 5V? Trzeba rozważyć dobry nieskomplikowany sposób translacji sygnałów magistrali, oraz dodatkowe zasilanie 3,3V dla modułu wyświetlacza. Można zastosować stabilizator ? – hehe przerost formy nad treścią i jakiś translator poziomów magistrali. Tutaj ułatwieniem będzie to, że komunikacja jest zawsze jednokierunkowa – od µC do wyświetlacza. Do translacji można zastosować któryś ze scalaków MAX3393, 74LS07, albo 2xLVC125. Mam na myśli kilka dróg postępowania:
1. olać wszystko, wszak jest pewna doza prawdopodobieństwa że wszystko (wyświetlacz) będzie działało przy napięciu zasilania 5V – takie napięcie jest dopuszczalne w określonych warunkach. Pewno kiedyś potestuję.
2. przejąć się i napchać tych wszystkich scalaków na PCB.
3. Wypośrodkować i zbudować „zasilacz” z szeregowego opornika i zenerki, bez translacji magistrali lub z, w postaci szeregowych oporników na liniach.
Teoretycznie i praktycznie większość układów scalonych zasilanych 3,3V toleruje sygnały na wejściach GPIO o poziomach logicznych 5V. Dla mnie czym mniej elementów tym lepiej ;-D – mniej pracochłonne i taniej wychodzi.

Przykład rozwiązania zasilania - choć na dziś dzień go jeszcze nie przetestowałem

Przykład rozwiązania zasilania – choć na dziś dzień go jeszcze nie przetestowałem

Do obsługi wyświetlacza w BASCOM znalazłem kilka rozwiązań programowych. Jedne oparte na komunikacji SPI ze wsparciem software lub hardware, przywiązujące nas do ściśle określonych pinów, a inne już w pełni realizowane programowo. Te drugie mi bardziej odpowiadało i te tutaj zaprezentuję. Zaznaczam, iż nie jestem autorem tego kodu, jedynie udało się go w kilku miejscach zoptymalizować.  Kod pochodzi z forum elektroda. Kod oparty o SPI można przeglądać tutaj. W tym miejscu wspomnę jeszcze o pewnej zalecie komunikacji SPI, otóż z łatwością możemy zdefiniować w BASCOMie prędkość magistrali co nie jest bez znaczenia, w przypadku zastosowania rezonatorów wzorcowych o dużej częstotliwości. Do tego celu służy polecenie CONFIG SPI z parametrem CLOCKRATE gdzie CLOCKRATE = 4|16|64|128 (dotyczy tylko CONFIG SPI= HARD). W helpie wyczytamy:

The clock rate selects the division of the of the oscillator frequency that serves as the SPI clock. So with 4 you will have a clock rate of 4.000000 / 4 = 1 MHz , when a 4 MHZ XTAL is used.

W wybranym przeze mnie rozwiązaniu trzeba będzie programowo dostosować prędkość SCLK do kryterium wymaganego, w przypadku gdy µC będzie musiał pracować wydajniej. Można to uczynić np aseblerową instrukcją NOP.

Kod jest bardzo dobrze opisany i raczej nie powinien wymagać wyjaśnień. Uwagi zasługuje fakt, iż zakomentowałem sterowanie zasilaniem wyświetlacza przy testach. Zasilanie brane jest w tym przykładzie z pina µC, który nim czynnie steruje, załączając je w stosownym momencie by spełnić wymogi czasowe. Po skompilowaniu kod zajmuje 6814 bajtów pamięci flash, więc wersja demo środowiska IDE już nie wystarczy. Wiadomo najwięcej miejsca pochłania grafika i definicja czcionki. Można je przegonić do EEPROM gdyż BASCOM umożliwia umieszczenie wartości z pół Data w tej pamięci. Służy do tego przełącznik $EEPROM zastosowany po etykiecie danych, szczegóły w helpie Bascom-Avr. Kod znacząco się wtedy odchudzi. Po uruchomieniu układu z załadowanym przykładowym kodem możemy cieszyć się demonstracją jak poniżej:

Przy zmianie wartości kontrastu w procedurze LCDINIT należy zwrócić szczególną uwagę na wpisywaną wartość. Ma ona bezpośredni wpływ na wartość napięcia zasilania matrycy – VOP. Można ustawić 128 wartości, ale użyteczny zakres regulacji to nastawy w zakresie 30…90. Po resecie nie jest zerowana zawartość pamięci RAM i należy usunąć z niej wartości przypadkowe, co widzimy pod koniec procedury inicjującej.

Tak jak wcześniej wspominałem sterownik nie ma generatora znaków więc znaki są definiowane samodzielnie w kodzie. Aby zdefiniować nowy obrazek i umieścić go w liniach Data można posłużyć się np programem FastLCD. Sprawa wtedy jest wyjątkowo banalna, i ogranicza się do ustawienia rozmiaru i przygotowania grafiki oraz do wklejenia kodu wynikowego do listingu.

program podczas pracy

program podczas pracy

Efekt pracy programu prezentowany na wyświetlaczu ;-D

pięknie się prezentują te kwiatki ;-)

pięknie się prezentują te kwiatki 😉

Jedno co mnie zastanawia to fakt, że w czasie gdy chciałem zrobić fotografię kaktusków i w aparacie załączona była lampa błyskowa, gdy zadziałał flesz, na wyświetlaczu przestawało być widać cokolwiek …
Inne programy do konwersji grafik na kod: Hex Workshop, BMP2Hex, PictureConert II, AsystentLCD, FastLCD, XVI32

Ciekawe artykuły na jakie trafiłem o wyświetlaczu:
EP 2003/5 str. 81 Sterowanie graficznych wyświetlaczy z telefonów komórkowych firmy Nokia, część 1,
EP 2003/6 str. 83 Sterowanie graficznych wyświetlaczy z telefonów komórkowych firmy Nokia, część 2,
EP 2003/7 str. 80 Sterowanie graficznych wyświetlaczy z telefonów komórkowych firmy Nokia, część 3,
EP 2008/2 str. 89 Kilka sposobów na wyświetlacz z Nokii 3310,
EP 2009/12 str. 84 Wyświetlacz graficzny do Nokii3310,

W wymienionych artykułach można odnaleźć alternatywne konfiguracje instrukcji inicjujących, które można testować w razie problemów. Tutaj jeszcze ciekawostki o sterownikach z wyświetlaczy znalezione na tej witrynie:

model name (of display) type nokia cellphones
LPH 7366 2 Nokia 5110, 5120, 5130, 5160, 6110, 6150
LPH 7677 1 Nokia 3210
LPH 7779 1 Nokia 3310, 3315, 3330, 3350, 3410
LPH 7690 1 Nokia 6210

(digits in brackets show the marks in the following pictures)

  • type 1:
    • the display is connected to the circuit board [2] using metallic pins [1]
    • leds are soldered on the other side of the circuit board [3]
    • they enlight the display through holes in the circuit board [3]
    • the display has 8 pins
    • pin #1 is rightmost (rear view of display, connectors at the bottom line)
    • tiny cables could be soldered directly onto the metallic pins
    • recommentation: design a circuit board for leds and display connector on your own because the circuit board can hardly be recycled
    • update: some displays use a different method to connect the display module to the circuit board: contact pads and a separate „transmitter”. it should be possible to solder wires directly onto the contact pads or to use an elastomer
  • type 2:
    • the display is connected to the circuit board [2] using an elastomer (’lcd-connector’ or 'rubber pad with conducting joints’) [1]
    • leds are soldered on the same side of the circuit board [3] underneath the position of the display
    • on the other side of the circuit board there are no electronic parts
    • the display itself is „clipped” [4] onto the circuit board
    • the display has 9 pins (additional possibility to connect an external oscillator)
    • pin #1 is rightmost (rear view of display, elastomer at the bottom line)
    • the circuit board of the cellphone can be 'recycled’ by simply cutting out the interesting part (see picture below)
      obrazek z witryny http://serdisplib.sourceforge.net

      obrazek z witryny http://serdisplib.sourceforge.net

      drugi obrazek z witryny http://serdisplib.sourceforge.net stanowiący legendę do opisu

      drugi obrazek z witryny http://serdisplib.sourceforge.net
      stanowiący legendę do opisu

Od teraz wszyscy razem zbieramy stare telefony będą super dawcami ;-D Coś mi się wydaje, że te wszystkie wyświetlacze będą długo nieśmiertelne. Wyświetlacz doczekał się nawet wersji modułu z PCB dla „majsterkowiczów”.moduł z wyświetlaczem LCDZ ostatniej chwili, – prezentowany program bezproblemowo obsługuje wyświetlacz gdy µC taktowany jest wewnętrznym oscylatorem 8MHz – bez żadnych dodatkowych wybiegów. Przy takim taktowaniu częstotliwość na magistrali SCLK waha się w okolicach 100kHz.

okazało się że nie taki diabeł straszny jak go malują ;-D

A.D. 2014-05-06 z ostatniej chwili 😉 gdy wyświetlacz zasilam z portu μC wszystko działa gdy zasilanie główne wynosi 5V. I to bez jakichkolwiek dodatkowych elementów 😉

A.D. 2014-06-25 Ponieważ jakiś czas temu dostałem zapytanie – a szkoda, że nie przez formularz w artykule… o treści:

Pytanie odnośnie sterowania wyświetlacza, jak w Bascom wysłać na ten wyświetlacz zmienną ?

Więc odpowiem. Domyślam się że chodzi o typ zmiennej numerycznej. Ja realizuję taką funkcjonalność z użyciem funkcji STR.

Służy ona do „konwersji” dowolnego typu liczby na ciąg znaków. Co z tego wynika? Może okazać się że nie potrzebnie nasz kod puchnie. Standardowa biblioteka zapewni konwersję przez tą funkcję dla typów byte, integer, word i longs. W przypadku kiedy nie potrzebujemy konwertować typów zmiennoprzecinkowych można zastosować alternatywną bibliotekę o nazwie mcsbyteint.lbx. Gdy w użyciu są tylko zmienne z zakresu byte wtedy warto zainicjować bibliotekę mcsbyte.lbx. I mamy piękny sposób na optymalizację kodu ;-D Dla przypomnienia biblioteki dołącza się następująco:

A.D. 2015-01-10 buszując po forum MCS Electronics natrafiłem na temat gdzie wyczytałem, iż powstała biblioteka do obsługi tego typu wyświetlaczy. Nosi nazwę glcd-Nokia3310.lib. W wątku jest też mowa o jeszcze innych wyświetlaczach – polecam zaglądać. ;-D


Nota katalogowa sterownika wyświetlacza PCD8544.pdf (4113 pobrań )
Nota katalogowa sterownika wyświetlacza PCF8812U.pdf (4166 pobrań )

Otagowano , , , , , , .Dodaj do zakładek Link.

2 odpowiedzi na „LPH7779 i wyświetlacz ze starego telefonu oraz Bascom AVR

  1. xter komentarz:

    jak to podłączyć? Bo nie wiem, nigdzie nie ma jak podłączyć ten wyświetlacz…

    • kaktus komentarz:

      Witam.
      Może tak jak piszesz „nigdzie nie ma jak podłączyć …”
      Ale w końcu trafiłeś na tą zieloną witrynę, a tutaj to nie nigdzie.
      Mam uzasadnione wątpliwości czy czytałeś tą prezentację.
      I z tego powodu jest mi niezmiernie przykro …

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

czternaście + 15 =

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.