Skocz do zawartości

Przesuwanie tekstu na LCD C


Pomocna odpowiedź

To zależy jeszcze od tego czy na przykład zmienna jest volatile czy nie, ale zawsze można podglądnąć w kodzie wynikowym.

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;

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...