Modyfikacja funkcji wyświetlania na LCD

0

Hej,

Mam przygotowaną funkcję do wyświetlania napisu na ekranie LCD (chodzi o programowanie mikrokontrolerów aduc 831). Czy możecie pomóc mi ją przerobić, żeby otrzymywała ona stringa i jego wyświetlała na ekranie?
Obecny kod:

void bouncing(unsigned char* short_line)
{
    unsigned char location_index;
    unsigned char direction;
    int display_length = 20;

    location_index = display_length - strlen(short_line);
    direction = 1;

        LCD_czysc();
        LCD_wyswietlslowo(short_line, location_index);
        Delay_us(1000);

        if(direction == 1)
        {
            if(location_index > 0)
            {
                location_index--;
            }
            else
            {
                direction = 0;
            }
        }
        else
        {
            if(location_index < (display_length - strlen(short_line)))
            {
                location_index++;
            }
            else
            {
                direction = 1;
            }
        }
    }   

Dodatkowo dwie funkcje z których korzystam:

void LCD_wyswietlslowo(char* slowo, unsigned char start_bajt)
{
   unsigned int i, dlugosc;
   LCD_RS = 1;
   LCD_RW = 0;
   dlugosc = strlen(slowo);
   for(i=0; i<dlugosc; i++)
   {
   		LCD_adresDD(i+start_bajt);
		Delay_us(40);
		LCD_wyswietlznak(slowo[i]);
   }	
} 
void LCD_czysc(void)
{
	LCD_wyslij(0x01, 0, 0, 1640);
} 

Pozdrawiam
Łukasz

0

Ale przecież otrzymuje c-string'a. Ma otrzymywać std::string?

0

Kolega z którym robimy wspólnie ten program mówił mi, że będzie wysyłal mi stringa i mam go wyświetlać (będzie to temperatura). Dodatkowo wyświetlany tekst ma się składać z ponad 20 znaków i być przesuwanym od prawej do lewej na okrągło (na końcu znak ‘*’ i spacja), tekst w górnej linii krótszy niż 10 znaków i ma się „odbijać” od brzegów LCD. Tutaj niestety nie wiem jak zmodyfikować tę funkcję (ona obecnie robi, że tekst "odbija się" od krawędzi wyświetlacza).

0

Jeśli ma być c-string to ta już jest gotowe, jeśli będzie std::string to po prostu dorabiasz funkcję:

void bouncing(std::string& txt) { bouncing(txt.c_str()); }

I gotowe (tylko przykład wyżej jest tylko i wyłącznie dla C++.

0

Dzięki, tylko ja muszę mieć to właśnie w C :( Mógłbyś w tym języku mi to podać?

0

To masz gotowe. W ANSI C nie ma stringów jako takich, są tylko tablice znakowe co już obsługujesz.

0

Właśnie chyba nie, bo jak przekazałem tą wersję to proszono mnie o poprawę :/ Nie wiem o co może chodzić.

0

Zmień z unsigned char na char.

1 użytkowników online, w tym zalogowanych: 0, gości: 1