poniedziałek, 19 marca 2018

EA DOGM162-A - LCD 2x16 firmy Electronic Assembly

Przyszedł czas na rozpracowanie wyświetlacza LCD jaki wybrałem do mojej płytki developerskiej dla PIC32MM. Od samego początku wiedziałem , że będzie to wyświetlacz firmy EA. Miałem wcześniej kontakt z LCD 4x20 (DOGM204-A) tej firmy i byłem zauroczony szybkością działania, subtelnością wyglądu i pięknym podświetleniem. Ponieważ na płytce dla PIC32MM nie chciałem zajmować dużo miejsca wyświetlaczem, dlatego mój wybór padł na małego słodziaczka DOGM162W-A z bursztynowym podświetleniem. Ło matko jaki on piękny :) Słodziaczek został oparty o sterownik ST7036 i możemy z nim zagadać po 4 / 8 bitach i po SPI jak dla mnie fajnie.


Literka W  oznacza , że jest to technologia FSTN pos.transflective. Dla użytkownika oznacza to tyle, że wyświetlacz jest bardzo czytelny bez podświetlenia. Ja jednak dokupiłem dodatkowe podświetlenie w kolorze bursztyn bo lubię ładne światełka. Podświetlenie jest bajkowe, bardzo równomierne, to nie jest tak jak w typowym HD44780 gdzie chamskie diody walą po ślipiach z boku wyświetlacza. To jest inny świat. Kiedy po raz pierwszy zetknąłem się z wyświetlaczem firmy EA to z dyskomfortem potem patrzyłem na HD44780, którego jedyną zaletą jest cena.

Do wyświetlacza DOGM162-A są dostępne dwa źródła dokumentacji oba w linkach. Jeden dokument to krótki datasheet producenta czyli firmy EA a drugi to dokumentacja samego sterownika ST7036. Dokumentacja nie jest najlepszej jakości w szczegółach.Jak się zorientowałem po okolicy, dużym problemem dla użytkowników jest inicjalizacja w trybie 4 bitowym i SPI.
O ile o inicjalizacji 4-bitowej coś tam przeczytamy w manualu sterownika i jest nawet jakiś przykład ale nie do końca poprawny o tyle o  SPI na pierwszy rzut oka tabula raza, nie ma np wytłumaczenia dlaczego pin CSB w tym trybie dynda sobie w powietrzu (pierwsza myśl , może to błąd bo we wszystkich innych trybach ten pin jest umasiony). Dopiero jak bardziej wnikliwie zaczniemy studiować manuala niektóre rzeczy się rozjaśnią. Krótko mówiąc dokumentacja nie jest do końca przyjazna dla użytkownika, wielu rzeczy trzeba się mocno doszukiwać i domyślać. Udało mi się jednak rozgryźć wszystkie problemy w każdym trybie inicjalizacji uff w cholerę poszły dwa dni :)

Na płytce developerskiej PIC32MM założyłem , że będę sterował wyświetlaczem w trybie 4-bitowym. W sumie trochę się cykałem po pobieżnym spojrzeniu na datasheet wyświetlacza gdzie nie było inicjalizacji dla 4-bitów a tylko dla 8-bitów. No ale problemy lubię z przyjemnością rozwiązywać :)

Na samym końcu walki z inicjalizacją wyświetlacza doszedł jeszcze jeden problem tym razem związany z jednym niefortunnie wybranym wyjściem do sterowania wyświetlacza. Mianowice na wyjściu RA3 (PIC32MM) sterowałem pinem D7 wyświetlacza. Problem polegał na tym, że pin RA3 mikrokontrolera jest podłączony na starcie do wewnętrznego oscylatora, jeśli przeoczymy ten niuans w konfiguracji zmiennych inicjalizujących naszego PIC32MM to napotkamy na problem ze sterowaniem tym wyjściem. I ja z takim problemem się zderzyłem. Na szczęście najlepszy na świecie debbuger w postaci zewnętrznej diody LED naprowadził mnie na trop i problem został rozwiązany. Aby to się nie powtórzyło w przyszłości zmieniłem pin RA3 na RD0 , zmiany zostały uwzględnione w płytce rev 2.0

Jest kilka sposobów na odpięcie zegara od pinu RA3 w PIC32MM, aby można było je używać jako normalnego wyjścia ja zalecam zrobić to podczas konfiguracji w MCC bo jest najprościej :

w panelu MCC zdjęcie poniżej , opcja Clock Output Pin Configuration powinna być na OSCO pin operates as a normal I/O

 
Dobra sprawy z pinem RA3 załatwione, wracamy do tematu. Poniżej zdjęcie obrazujące efekt działania wyświetlacza. W realu wygląda to o wiele lepiej.


Wszystkie podłączenia są uwidocznione na schemacie mojej płytki developerskiej PIC32MM w tym artykule Płytka PIC32MM
Żeby więcej nie ględzić nie potrzebnie przejdę do konkretów czyli do inicjalizacji w trybie 4-bitowym. Inicjalizacja zrobiona przezemnie jest tak wykonana aby bez problemu działały zdefiniowane przez użytkownika znaki. Inicjalizacja dla 4-bitów z manuala ST7036 jest błędna i tam nie uzyskamy poprawnego wyświetlania zdefiniowanych przez użytkownika znaków choć sama inicjalizacja jako taka się powiedzie.

Poniżej moja wersja inicjalizacji wyświetlacza EA DOGM162W-A dla trybu 4-bitowego (sprawdzona i działająca)


Jeśli chcemy aby po inicjalizacji pokazał się migający kursor to zmieniamy wartość 0x0C na 0x0F.

Ważne są timingi przy wysyłaniu, poniżej prezentuję funkcję wysyłającą dla trybu 4-bitowego. Cały kompletny kod do PIC32MM będzie dostępny na GitHubie w linkach poniżej artykułu. A poniżej kod funkcji wysyłającej dane w trybie 4 bitowym.


Na koniec powtórzę się , że wyświetlacz EA DOGM162W-A z bursztynowym podświetleniem (dokupujemy osobno) jest naprawdę wart grzechu. Cena w granicy 50 zł + 14 zł podświetlenie, jest jedyną wadą tego wspaniałego wyświetlacza. Bardzo ładnie upiększył on moją płytkę developerską PIC32MM co mnie niezmiernie cieszy.


Pozdrawiam
picmajster.blog@gmail.com


Linki :

EA DOGM 162-A - datasheet
ST7036 - manual
Biblioteka w GitHub - projekt MPLABX-IDE

Brak komentarzy:

Prześlij komentarz