char Array in integer Array speichern geht nicht

Gast #3345110
Lesenswert?

Hallo,

ich bin neu auf dem Gebiet Programmierung weswegen meine Frage 
warscheinlich für welche mit mehr Wissen ganz klar zu beantworten ist. 
Deswegen wäre es schön wenn ihr mir helfen könntet, weil ich einfach 
nicht dahinter komme.

Problem:

Ich möchte float- integer- und char Werte an ein LCD Display senden. Das 
Display ist im 4 Bit Modus initialisiert, ich sende also immer erst das 
obere Nibble und dann das untere Nibble für jedes Zeichen. Char Arrays 
zu senden, also z.B. "Test" klappt schon. Jetzt möchte ich aber auch 
float und integer Variablen an das Display senden. Der Teil des Sendens 
an das Display sieht so aus:

/////////////////////////////////////////////////

while(ausgabe[i] != 0)
    {
    RS = 1;
    __delay_us(60);
    Datenport = (ausgabe[i]>>4);
    Datenbits_einlesen();
    Datenport = (ausgabe[i]);
    Datenbits_einlesen();
    __delay_ms(5);          // Wartezeit
    i++;
    }
//////////////////////////////////////////////////

das Array " ausgabe " ist weiter oben im Code angelegt worden:

char * ausgabe[];

Jetzt fehlt mir aber der Ansatz wie ich float und Integer werte in 
dieses Array speichern kann um sie dann durch den oben abgebildeten Teil 
an das Display zu schicken.

Kann mir hierbei jemand Tipps geben?

Grüße,
Dave
#3345122
Lesenswert?

David schrieb:

> das Array " ausgabe " ist weiter oben im Code angelegt worden:
>
> char * ausgabe[];

das ist ein Array von Pointern. Das willst du ganz sicher nicht.

> Jetzt fehlt mir aber der Ansatz wie ich float und Integer werte in
> dieses Array speichern kann
gar nicht.

Aber du kannst eine Funktion, zb itoa benutzen, die dir einen String 
zusammenbaut, welchen du dann mit der STringausgabe ausgeben kannst
1
   char output[10];
2

3
   itoa( zahl, output, 10 );
4
   lcd_string( output );


> um sie dann durch den oben abgebildeten Teil
> an das Display zu schicken.

der Teil ist Quatsch.
Isolier dir erst mal den Kern in eine Funktion, die 1 Zeichen (nicht 
mehr) ausgeben kann.
Und damit baust du dann eine Funktion, die einen ganzen String ausgeben 
kann. Und diese Funktion benutzt du dann wieder weiter um Zahlen 
auszugeben, indem du dir die Zahl erst mal mit einer der vorhandenen 
Konvertierfunktionen in einen String konvertieren lässt.
1
void lcd_char( char c )
2
{
3
  RS = 1;
4
  __delay_us(60);
5
  Datenport = c >> 4;
6
  Datenbits_einlesen();
7
  Datenport = c;
8
  Datenbits_einlesen();
9
  __delay_ms(5); // Wartezeit
10
}
11

12
void lcd_string( const char* String )
13
{
14
  while( *string )
15
    lcd_char( *string++ );
16
}
17

18
void lcd_int( int Integer )
19
{
20
  char output[7];
21

22
  itoa( Integer, output, 10 );
23
  lcd_string( output );
24
}
25

26

27
int main()
28
{
29
  ...
30

31
  lcd_string( "Hallo " );
32
  lcd_char( ':' );
33
  lcd_int( 5 );
34

35
  ...
36
}

>
> Kann mir hierbei jemand Tipps geben?

Kauf dir ein C-Buch

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren