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
Du musst die Zahlen erstmal in einen Textstring umwandeln. z.B. mit sprintf() umfangreich, aber speicherhungrig. Gibt noch ein paar Alternativen.
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
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.