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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.