wyświetlacza 2x16 przy przewijaniu

Bawię się właśnie pinami GPIO Raspberry Pi. Podpiąłem do nich wyświetlacz 2x16 na hd44780 (negatyw, niebieskie tło i białe litery). LCD podłączony przez magistralę 4bit, GPIO i LCD obsługuję za pomocą biblioteki wiringPi. Napisałem sobie do tego prosty program scrollujący tekst na jednej linii. Całość opiera się na zasadzie zbliżonej do bufora cyklicznego. W pętli głównej program sprawdza ile czasu minęło od ostatniego uaktualnienia. Jeśli minie zadany okres, wysyła do wyświetlacza 16 kolejnych znaków licząc od początku. Potem wskaźnik początku się imkrementuje i tak w kółko. Jeśli dojdzie do końca łańcucha (lub bufora) wskaźnik znów otrzymuje wartość 0.

Mam jednak efekt dziwnego migotania przewijanego tekstu. Wygląda to tak, jakby po uaktualnieniu w miejscu gdzie tekst był wcześniej pozostał jego ciemny cień.

Co jest w największym stopniu powodem tego zjawiska? Mam kilka hipotez:

1) Konstrukcja samego wyświetlacza - problem nie do obejścia, pozostaje szukać lepszego. 2) Zbyt długie wgrywanie znaku z uwagi na brak odczytu flagi zajętości. Jedynym wyjściem jest dodanie bufora na linii R/W, połączenie jej z RPi i przerobienie biblioteki, która domyślnie nie obsługuje tego trybu. 3) Zbyt wolna transmisja z uwagi na zastosowanie 4bitowej magistrali - trzeba poświęcić dodatkowe 4 linie. 4) Mój kod jest zły i trzeba napisać go jeszcze raz, stosując inne podejście. 5) Migotanie wynika z zastosowania RasPi - lepiej w tym przypadku użyć dedykowanego mikrokontrolera.

Która rozwiązanie jest najbardziej prawdopodobne?

Tak... Wiem, że niektóre wyświetlacze pozwalają na ograniczoną obsługę przewijania. Mi jednak zależy na możliwości wyświetlania długich tekstów, więc wolę to zrealizować programowo.

Reply to
Atlantis
Loading thread data ...

Użytkownik Atlantis napisał:

Jeśli to nie jest jakiś głupi błąd w programie wstawiający stare znaki po wstawieniu nowych to musi to być problem z LCD, bawiłeś się pinem od kontrastu?

[..]
Reply to
AlexY

Powitanko,

Niektore LCD bywaja zramolale, ale to szczegolnie w niskich temp. Wystarczy na chwile wsadzic do lodowki, by popularne wyswietlacze mialy refleks faceta w kapeluszu ruszajacego fiatem uno spod swiatel. Moze kontrast jest ustawiony za duzy. Jak podepniesz wyswietlacz do czegos innego niz Pi, to sie wyjasni czy to problem sprzetowy, czy softu.

Pozdroofka, Pawel Chorzempa

Reply to
Pawel "O'Pajak

hd44780 ma swoj generator znaków, nie trzeba softłerowo gasić pixli...

@
Reply to
Artur Miller

W dniu 2014-04-22 08:07, Artur Miller pisze:

Nikt tego nie robi... Miałem na myśli wysyłanie znaków pojedynczo, za pomocą funkcji lcdPutchar().

W każdym razie regulacja kontrastu nic nie dała. Poszperałem trochę po pudełkach z częściami i udało mi się znaleźć jeszcze jeden wyświetlacz - najbardziej typowy, z czarnymi znakami i zielonym podświetlaniem. W jego przypadku jest nieporównywalnie lepiej. Co prawda jeśli bardzo mocno wytężyć wzrok, też da się zauważyć przez krótki moment ten ślad po znikającej literce. Jednak natężenie tego zjawiska jest znacznie mniejsze i już nie rzuca się w oczy podczas normalnego oglądania przesuwającego się napisu. Kod się nie zmienił, wychodzi więc na to, że powodem zjawiska jest bezwładność samych pikseli, większa w tym pierwszym modelu.

Reply to
Atlantis

W dniu 2014-04-22 08:18, Atlantis pisze:

Dokładnie tak - co wyświetlacz (i chiński "odpowiednik" HD44780) to inaczej się zachowuje, dlatego jeśli musisz scrolować - to używaj funkcji sprzętowej samego wyświetlacza, a nie przerysowuj całego ekranu softwarowo od nowa. Wiem - hd nie ma scrollu - ale ma za to funkcję "display shift" - miejsce pisania tekstu (nr literki na lcd) jest stałe, a przesuwa się sam tekst wcześniej wpisany, tak to wygląda:

formatting link
to uaktywnic - włączasz Entry mode set 07h (zamiast standardowego 06h)

Reply to
BartekK

W dniu 2014-04-22 09:11, BartekK pisze:

Wiem. Jednak podstawową zaletą software'owego odświeżania zawartości fragmentu ekranu jest to, że mogę łatwo wyświetlać tekst o większej długości. W tej chwili wygląda to całkiem znośnie.

Reply to
Atlantis
[..]

Chyba nie zrozumiałeś, chodzi mi o tworzenie programowego "cienia" coś jak uzyskiwanie bodaj ponad 200kolorów na C64 oryginalnie mającym ich

  1. Wstawiasz nowy znak, stary i znowu nowy, powstanie cień starego.
Reply to
AlexY

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.