Witam! Posiadam moduł wyświetlacza LCD 3.2", prawdopodobnie na sterowniku SSD1289 (sprzedawca twierdził, że na HX8347-A, jednak dopiero metoda inicjalizacji do SSD1289 zadziałała). Próbuję nim sterować przy pomocy mikrokontrolera STM32F103RBT6. Wszystko zdaje się działać dobrze, do czasu gdy chcę wyświetlić jasny kolor, np. RGB(240,240,240). Wtedy sterownik zdaje się "olewać" przesyłane mu dane, nie dzieje się nic. Po wielu próbach i przetestowaniu całej masy różnych metod inicjalizacji znalazłem pewne obejście problemu. Otóż przed wysłaniem ciągu danych zawierających informacje o jasnym kolorze trzeba wpisać do rejestru o adresie 0x12 wartość 0 i odczekać około 15ms. Wtedy na ekranie pojawiają się pasy, obraz ulega rozmyciu, jednak po przesłaniu danych i przywróceniu w rejestrze 0x12 wartości domyślnej (0x6CEB) na wyświetlaczu pojawia się poprawny obraz. Obejście to nie nadaje się jednak do np. dynamicznej aktualizacji tekstu(np. sekundnik), ponieważ przy każdej aktualizacji widoczne jest mignięcie i pojawiają się na chwilkę paski. Aby spróbować lepiej zobrazować problem zamieszczam filmiki.
1:
0:00 - Zainicjalizowany LCD i wypełniony kolorem czarnym - bez użycia rejestru 0x12
0:19 - Wypełniamy kolorem białym - z użyciem rejestru 0x12
0:27 - Wypełniamy kolorem jasnozielonym - bez użycia rejestru 0x12
0:33 - Wypisujemy przykładowy tekst - z użyciem rejestru 0x12 - jest wyraźne zaciemnienie ekranu
0:40 - Zaczynamy cyklicznie zmieniać cyfrę w rogu ekranu z użyciem rejestru 0x12 - widać paski i mignięcia
2: (Całość bez użycia rejestru 0x12)
0:00 - Zainicjalizowany LCD i wypełniony kolorem czarnym
0:10 - Wypełniamy kolorem białym - nic się nie dzieje
0:17 - Wypełniamy kolorem jasnozielonym
0:26 - Wypisujemy przykładowy tekst - jak widać pojawiają się tylko niewielkie fragmenty
0:33 - Zaczynamy cyklicznie zmieniać cyfrę w rogu ekranu - również pojawiają się tylko fragmenty
Poniżej zamieszczam również kod głównego programu oraz funkcje użyte do obsługi LCD.
Czy ktoś zna rozwiązanie tego problemu, czy jest to może uszkodzenie sterownika LCD?
Pozdrawiam.
1:
0:00 - Zainicjalizowany LCD i wypełniony kolorem czarnym - bez użycia rejestru 0x12
0:19 - Wypełniamy kolorem białym - z użyciem rejestru 0x12
0:27 - Wypełniamy kolorem jasnozielonym - bez użycia rejestru 0x12
0:33 - Wypisujemy przykładowy tekst - z użyciem rejestru 0x12 - jest wyraźne zaciemnienie ekranu
0:40 - Zaczynamy cyklicznie zmieniać cyfrę w rogu ekranu z użyciem rejestru 0x12 - widać paski i mignięcia
2: (Całość bez użycia rejestru 0x12)
0:00 - Zainicjalizowany LCD i wypełniony kolorem czarnym
0:10 - Wypełniamy kolorem białym - nic się nie dzieje
0:17 - Wypełniamy kolorem jasnozielonym
0:26 - Wypisujemy przykładowy tekst - jak widać pojawiają się tylko niewielkie fragmenty
0:33 - Zaczynamy cyklicznie zmieniać cyfrę w rogu ekranu - również pojawiają się tylko fragmenty
Poniżej zamieszczam również kod głównego programu oraz funkcje użyte do obsługi LCD.
Code: c
Code: c
Czy ktoś zna rozwiązanie tego problemu, czy jest to może uszkodzenie sterownika LCD?
Pozdrawiam.