Skocz do zawartości

Przesuwanie tekstu na LCD C


bartek1333

Pomocna odpowiedź

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:)

Ja też z niego korzystam, przykładowy kod poniżej:

LCD_write_command(0x80 | 0x10);	//ustawienie kursora poza obszarem wyświetlania (adres0x10) patrz p21 i 24
LCD_write_text_CR(tekst1);		//jakiś tekst, np. char tekst1[] = "WELCOME !!!";
	for(i = 0; i<13; i++)
	{
		LCD_write_command(0x18);//przesuwanie tekstu w lewo
		wait(18*tau);
	}
void LCD_write_command(char x)
/**
* Funkcja zapisu instrukcji do wyświetlacza LCD
* @x char - instrukcja do zapisu
*/
void LCD_write_text_CR(char *s)
{
/**
* Funkcja zapisu tekstu z uwzględnieniem znaku \n do wyświetlacza LCD
* @s char * - tekst do zapisu
*/
while(*s)
{
	if(*s == CR)
	{
		row == 1 ? row = 0 : ++row;

		column = 0;
		LCD_goto_rc(row,column);
	}
	else
	{
		LCD_write_data(*s);
	}
	s++;
}
return;
}
void LCD_write_data(char x)
{
/**
* Funkcja zapisu danej do wyświetlacza LCD
* @x char - dana do zapisu
*/
/** znak konca linii */
const unsigned char CR = 0x0a;
/** skaler na ms dla wait() */
const unsigned char tau = 10.64;
/** zapamietana pozycja na LCD (wiersz) */
unsigned char row = 0;
/** zapamietana pozycja na LCD (kolumna) */
unsigned char column = 0;
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.