RTV forum PL | NewsGroups PL

Kwestia wyświetlania napisu na LCD w funkcji WYSW_MENU z użyciem tablicy znaków?

mspgcc problem z napisem jako parametr funkcji

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Kwestia wyświetlania napisu na LCD w funkcji WYSW_MENU z użyciem tablicy znaków?

Grzegorz Latocha
Guest

Wed Aug 16, 2006 6:37 am   



Hej!
Mam problem z przekazaniem do funkcji parametru w postaci tablicy
znaków. Mam to zrobione ak niżej.
Chcę po prostu funkcję, która mi wyrzuci na LCD napis. To poniżej
kompiluje się z Warningami odnoście typów wskaźników i niby napisy
wyświetla, ale cały program jakoś głupieje Sad Książki mi niewiele
pomogły, więc mam nadzieję, że grupa podpowie mi jak to zrobić.

Z góry dziękuję
pozdrawiam

const unsigned char LCD_M_1[] = "1. POMIAR 2. USTAW SKALE3. USTAW
JEDN.";
....
void WYSW_MENU(unsigned int menu,unsigned char *co,unsigned int ile,
unsigned int linia);
....
WYSW_MENU(menu,LCD_M_1,14,0);
....
void WYSW_MENU(unsigned int menu,unsigned char *co,unsigned int ile,
unsigned int linia)
{
SEND_CMD(0x80+linia*0x40);
for(i=(menu-1)*ile;i!=menu*ile;i++) //wyswietlenie napisu
{
SEND_CHAR(*(co+i));
}
}

Miller Artur
Guest

Wed Aug 16, 2006 6:46 am   



Użytkownik "Grzegorz Latocha" <glatocha@poczta.onet.pl> napisał w wiadomości
news:ebuefj$mjj$1@news.onet.pl...
Quote:
Hej!
Mam problem z przekazaniem do funkcji parametru w postaci tablicy
znaków. Mam to zrobione ak niżej.
Chcę po prostu funkcję, która mi wyrzuci na LCD napis. To poniżej
kompiluje się z Warningami odnoście typów wskaźników i niby napisy
wyświetla, ale cały program jakoś głupieje Sad Książki mi niewiele
pomogły, więc mam nadzieję, że grupa podpowie mi jak to zrobić.

Z góry dziękuję
pozdrawiam

const unsigned char LCD_M_1[] = "1. POMIAR 2. USTAW SKALE3. USTAW
JEDN.";
...
void WYSW_MENU(unsigned int menu,unsigned char *co,unsigned int ile,
unsigned int linia);
...
WYSW_MENU(menu,LCD_M_1,14,0);
...
void WYSW_MENU(unsigned int menu,unsigned char *co,unsigned int ile,
unsigned int linia)
{
SEND_CMD(0x80+linia*0x40);
for(i=(menu-1)*ile;i!=menu*ile;i++) //wyswietlenie napisu
{
SEND_CHAR(*(co+i));
}
}

a zrob tak

while (*co)
{
SEND_CHAR(*co);
co++;
}

SOA#1

Sirtap
Guest

Wed Aug 16, 2006 7:30 am   



Quote:
Chcę po prostu funkcję, która mi wyrzuci na LCD napis.

Tu masz moją funkcję. Reaguje poprawnie na znak '\n', czyli przejście do
drugiej linii w wyświetlaczy 2x16. W kodzie piszesz LCD_Text("napis\ninny
napis");
lub LCD_Text(LCD_M_1);

void LCD_Text(const unsigned char* text)
{
int i;
for(i=0; *text != 0; i++)
{
if (*text == '\n')
{
LCD_Ln();
*text++;
}
else LCD_Send(data, *text++);
}
}

U mnie działa.

Sirtap
Guest

Wed Aug 16, 2006 7:39 am   



Quote:
void LCD_Text(const unsigned char* text)
{
int i;
for(i=0; *text != 0; i++)
{
if (*text == '\n')
{
LCD_Ln();
*text++;
}
else LCD_Send(data, *text++);
}
}

Mała poprawka. * przy *text++; jest nie potrzebny. Czyli:

void LCD_Text(const unsigned char* text)
{
int i;
for(i=0; *text != 0; i++)
{
if (*text == '\n')
{
LCD_Ln();
text++;
}
else LCD_Send(data, *text++);
}
}

Pozdrawiam

AK
Guest

Wed Aug 16, 2006 8:57 pm   



Sirtap napisał(a):

Quote:

void LCD_Text(const unsigned char* text)
{
int i;
for(i=0; *text != 0; i++)
{
if (*text == '\n')
{
LCD_Ln();
text++;
}
else LCD_Send(data, *text++);
}
}
Tu chyba lepiej petla while pasuje:

void LCD_Text(const unsigned char* text)
{
while(*text)
{
if (*text == '\n')
{
LCD_Ln();
text++;
}
else LCD_Send(data, *text++);
}
}

Pozdr
AK

A odnosnie do pytania z pierwszego postu, to warningi sa,
poniewaz tekst jest definiowany jak 'const' natomiast funcja wymaga
parametru bez atrybutu 'const', czyli powinno byc tak:

const unsigned char LCD_M_1[] = "1. POMIAR 2. USTAW SKALE3. USTAW
JEDN.";
....
void WYSW_MENU(unsigned int menu, const unsigned char *co,unsigned int
ile, unsigned int linia);
....
WYSW_MENU(menu,LCD_M_1,14,0);
....
void WYSW_MENU(unsigned int menu,const unsigned char *co,unsigned int
ile, unsigned int linia)
{
SEND_CMD(0x80+linia*0x40);
for(i=(menu-1)*ile;i!=menu*ile;i++) //wyswietlenie napisu
{
SEND_CHAR(*(co+i));
}
}

Pozdr
AK

elektroda NewsGroups Forum Index - Elektronika Polska - Kwestia wyświetlania napisu na LCD w funkcji WYSW_MENU z użyciem tablicy znaków?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map