logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega32] [Atmega32][C] Jak przewijać tekst na LCD HD44780 w jednej linii?

A.T. 17 Sie 2012 00:33 4218 7
REKLAMA
  • #1 11217135
    A.T.
    Poziom 20  
    Witam
    nie potrafię stworzyć kodu któryby przewijał tekst od prawej do lewej na wyświetlaczu. Tekst musi być przewijany tylko w jednej linii więc funkcji wbudowanej w sterownik HD44780 nie mogę wykorzystać. Znalazłem temat na forum gdzie jest pokazane jak to zrealizować, jest nawet kod. Niestety nie rozumiem zasady działania i dlatego nie potrafię wykorzystać podanego fragmentu.
    Oto jest ten temat: https://www.elektroda.pl/rtvforum/topic2345710.html

    Napisałem swój kod, jednak nie działa tak jakbym tego oczekiwał. Po przewinięciu całego tekstu tekst wraca do pozycji startowej zamiast zacząć przewijać się dalej od tego samego miejsca gdzie się skończył przewijać.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Z góry dziękuję za pomoc i pozdrawiam.
    A.T.
  • REKLAMA
  • #2 11217175
    mariuz
    Poziom 31  
    Spróbuj w ten sposób zakombinować:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 11217182
    A.T.
    Poziom 20  
    Niestety nie działa tak jak powinno. Po przewinięciu tekstu wyciąga jakieś śmieci z pamięci.
  • #4 11217191
    mariuz
    Poziom 31  
    Pisałem, zebyś zakombinował, a nie wkleił tak po prostu ;)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    [/quote]

    Pisałem na sucho, mogą być błędy. Ale mam nadzieję, ze podsunie Ci to prawidłowe rozwiązanie problemu ;)
  • #5 11217198
    A.T.
    Poziom 20  
    Dziękuję za pomoc:) Na razie w tej formie nie działa, ale mógłbyś mi wyjaśnić co robi ta linijka?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    bo jej nie rozumiem.
  • REKLAMA
  • #6 11217206
    mariuz
    Poziom 31  
    Miała wpisać spację o kodzie ascii 32, więc nieźle mnie zagiąłeś ;)
    W każdym razie chciałem w miejsca tych śmieci powstawiać do bufora spacje.
    W hexie to jest 0x20, może dlatego tak napisałem...
  • REKLAMA
  • #8 11227202
    maly_elektronik
    Poziom 23  
    Najprościej chyba będzie sobie stworzyć bufor o wielkości jednej linijki z wyświetlacza i po prostu po stronie programu (kodu) przekopiowywać ten napis do bufora ale z przesuniętym wskaźnikiem pierwszego znaku :) gdy wskaźnik osiągnie 0 to czas zacząć przesuwanie w prawo a gdy osiągnie wartość: pozycja + długość tekstu =wielkość wyświetlacza to czas przesuwać w lewo i tak w kółko w pętli (pod warunkiem że długość przesuwanego tekstu jest mniejsza niż długość linijki wyświetlacza. W przeciwnym razie musisz szatkować przesuwany tekst jak w scrollowaniu (przeczytaj posty w którym poruszałem ten temat)

    P.S Zamiast strlen spróbuj zastosować coś takiego
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA