Skocz do zawartości

Przesuwanie tekstu na LCD C


bartek1333

Pomocna odpowiedź

Witam,
Nie mogę przesunąć tekstu na ekranie. Cały czas zostaje on na początku. Zamieszczam kawałek kodu.

for(unsigned char a = 0; a < 10; ++a)
		{
		LCDxy(a,0);
		write_text("rOBOt");
		_delay_ms(500);
		lcd_clear();
		}

Czy są jakieś funkcje na przesuwanie tekstu, czy jakoś inaczej trzeba kombinować?

Pozdrawiam

Link do komentarza
Share on other sites

To nie ma znaczenia.

Pre / post inkrementacja w pętli for da ten sam wynik.

Zobacz kod:

#include <stdlib.h>
#include <iostream>
int main(int argc, char** argv)
{

   for(int i = 0; i < 10; ++i)
       std::cout << i << "\n";
   for(int j = 0; j < 10; j++)
        std::cout << j << "\n";

   return (EXIT_SUCCESS);
}
Link do komentarza
Share on other sites

Może jest ktoś na forum, co sobie kiedyś przesuwał tekst na LCD 2x16 😉 . Bo w Bascomie to prosta sprawa jest, tylko problem z C.

A może ktoś wie, dlaczego mój kod nie działał, kompilował się a mimo to tekst zostawał na początku.

Proszę o odpowiedzi,
pozdrawiam

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Rav racja, bez znaczenia, teraz to sprawdziłem, sorki mój błąd...

Natomiast bartek1333, problem nie leży w tym programie którego listing wkleiłeś bo u mnie na wyświetlaczu wszystko działa, zmieniłem tylko nazwy funkcji bo korzystam z innej biblioteki obs. lcd.

Link do komentarza
Share on other sites

Natomiast bartek1333, problem nie leży w tym programie którego listing wkleiłeś bo u mnie na wyświetlaczu wszystko działa, zmieniłem tylko nazwy funkcji bo korzystam z innej biblioteki obs. lcd.

To w czym może leżeć problem? Może dodać przed zmienną pętli: extern?

Link do komentarza
Share on other sites

Przyszedł mi taki sposób na obejście, żeby po prostu dodawać spacje na początku

zamiast

LCDxy(a,0); 

na przykład

for(int b = 0; b < a; b++)
  write_text(" ");    

to jest brzydkie rozwiązanie, ale może zadziała...

  • Lubię! 1
Link do komentarza
Share on other sites

Teraz nie mam jak sprawdzić bo już idę spać, ale może pojutrze sprawdzę.

To jest sposób, ale taki trochę brzydki 😋 . Może ktoś zobaczy jakie są błędy w tej bibliotece.

RaV, puki co trzymaj piwko za wytrwałość

😉

Link do komentarza
Share on other sites

Jeśli zmieniłbyś biblioteki na takie jak w kursie C z tego forum (dokładnie z tego linku http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=8 (poszukaj przy pierwszym programie wykorzystującym wyświetlacz LCD)) to mógłbyś zastosować funkcję LCD_LOCATE(x,y); która przynajmniej u mnie działa w podobnym zastosowaniu do twojego bardzo dobrze 😉

Link do komentarza
Share on other sites

O wiele bardziej eleganckie rozwiązanie, które dostarcza sam sterownik wyświetlacza to przesuwanie " okna" wyświetlacza bez zmiany napisu zawartego w jego pamięci RAM- co więcej bardzo szybkie od strony programowej i proste. Wystarczy zgodnie z dokumentacją wysłać kod 0x18 (S/C=1,R/L=0) aby przesunąć okno w lewo, 0x1C (S/C=1,R/L=1) w prawo (strona 24-25/59 dokumentacji HD44780). Ponadto należy pamiętać, że to przewijanie trwa przez 40 pozycji bo tylko jest komórek pamięci( tak długi tekst można faktycznie wysłać do wyświetlacza bez utraty danych). Okno przesuwa się dla obydwu linii jednocześnie- i to jedyny niewielki minus tego rozwiązania. Dla ścisłości rozwiązanie działa, bo sam z niego korzystam:)

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.