Hallo Roberto!
Zitat von
Roberto
Ich möchte einen Text im Code angeben ( z.B. mit: Lcd(Test test); ) der mir dann
in das char "Text" kopiert wird.
'Text' ist in diesem Fall kein char, sondern ein Araay von chars. Ein einzelner char kann nur einen einzigen Buchstaben aufnehmen.
Deine Funktion LCD(char a) ist auch fehlerhaft, da strcpy zwei Zeiger auf einen char erwartet und nicht einen Zeiger und einen char.
Wenn Du eine Funktion LCD_putchar(char) hast, dann kannst Du mit der Funktion meines ersten Beitrags den ein char-Array ausgeben. Da Du in C aber noch einige Probleme hast(keine Sorge, am Anfang hat jeder Probleme), werde ich Dir die Funktion näher erläutern:
Code:
/*Die Funktion LCD_puttext erwartet als ersten Parameter einen Zeiger auf das
mit 0 abgeschlossene Array von zeichen, das ausgegeben werden soll. Der
weite und dritte Parameter ist die Position des Textes
*/
void LCD_puttext(char *pstr,unsigned char x_pos, unsigned char y_pos)
{
while(*pstr)/*Folgende schleife wird solange durchgeführt, bis das char,
auf das der Zeiger pstr zeigt, nicht 0 ist. '*' ist der Dereferenzierungsoperator,
der dafür sorgt, dass der Compiler nicht mit dem Zeiger rechnet, sondern mit dem
Wert, auf den der Zeiger zeigt.*/
{
LCD_putchar(*pstr,x_pos,y_pos);/*Zeichnet den Buchstaben, der sich an der Stelle befindet,
worauf pstr zeigt auf das LCD*/
x_pos+=Zeichenbreite;//erhöhe die x-Position für das nachste Zeichen.
pstr++;/*erhöhe den Zeiger selbst. Nun zeigt er nicht mehr auf den char, der gerade
gezeichnet wurde, sondern auf den nächsten. Sollte der char, auf den er jetzt zeigt,
eine 0 sein, so wird die Schleife verlassen, weil die Bedingung in while(*pstr) nicht
mehr stimmt.*/
}
}
Jetzt Kannst Du mit LCD_puttext("Dein Text"); oder LCD_puttext(Text); (Text ist in diesem Fall das char-Array aus deinem Beitrag unten) ausgeben. Ich hoffe Du hast es jetzt einigermahßen verstanden. Guck mal hier, wenn Du mehr über Zeiger erfahren willst.
MfG Mark
Lesezeichen