Hallihallo. Und zwar gehts um folgendes: Wir haben von der Schule ein kleines Programmierboard bekommen mit einem ATMega32, 16*2 LCD Display und 3*4 Matrix Keypad, auf dem wir C Programmieren üben sollen. Aufgabe war es einen Taschenrechner zu programmieren. Das klappt soweit ganz gut. Man wählt zuerst seine gewünschte Rechenoperation aus(Addition, Subtraktion, Multiplikation oder Division) und gibt dann die 2 gewünschten Zahlen ein. Diese Zahlen werden (im Moment noch) als Int abgespeichert. Das Ergebnis ebenso. Zum anzeigen habe ich mir eine Funktion geschrieben, die mir Int zahlen am LCD ausgibt. Aber ich komme auf keine Lösung für eine Funktion, die mir floatzahlen am LCD ausgibt. Wäre sehr nett wenn mir da einer helfen könnte.
Patrick Hoefler schrieb: > Aber ich komme auf keine Lösung für eine Funktion, die mir floatzahlen > am LCD ausgibt. Wäre sehr nett wenn mir da einer helfen könnte. wobei bist du genau gescheitert? man kann z.b. mit printf float in einen String umwandeln.
Hallo, schau die mal die Funktion itoa() an :-) Oder möchtest du dir selbst eine schreiben? http://www.mikrocontroller.net/articles/FAQ#itoa.28.29_.28utoa.28.29.2C_ltoa.28.29.2C_ultoa.28.29.2C_ftoa.28.29_.29 sollte dir aber weiterhelfen
Da nimmt man doch besser sprintf() anstatt itoa().
Patrick Hoefler schrieb: > Zum anzeigen habe ich mir eine Funktion geschrieben, die mir Int zahlen > am LCD ausgibt. > Aber ich komme auf keine Lösung für eine Funktion, die mir floatzahlen > am LCD ausgibt. Wäre sehr nett wenn mir da einer helfen könnte. Kannst du kurz den Ansatz zeigen, den du wählst? Es gibt da mehrere Möglichkeiten: Man verwendet eingebaute int/float Typen und eingebaute Funktionen printf(...), itoa(...) etc. Für einen Taschenrechner auf einem Mikrocontroller wäre es aber auch denkbar, die Datentypen und Funktionen selbst zu bauen, im Stile des schriftlichen Rechnens. Dann ist man nicht auf Float-Bibliotheken angewiesen, die teilweise berüchtigt sind für ihren Speicherbedarf und prinzipbedingt Rundungsfehler generieren.
hmm zuerst wollte ich mir ja selbst eine schreiben, aber ich hab keine ideen wie ich das bewerkstelligen soll. ich komm einfach nicht drauf wie ich die nachkommastelle verarbeiten soll. mit printf haben wir bisher nicht gearbeitet, ich weiss nichtmal ob das n befehl ist, den ich benutzen kann bei dem teil was wir da haben. lcd_puts("TEXT"); //Zur ausgabe von strings am lcd lcd_putc('T'); //Zur Ausgabe von Zeichen am LCD lcd_put_number(zahl); //Zur Ausgabe von long int zahlen am lcd ich schau mir mal die inoa funktion an, vll klappts ja damit. danke für die hilfe :)
Warum willst du itoa()? Das ist für int -> String. Tipp einfach das Beispiel mit sprintf() von dem Link ab. Dein Compiler wird dir dann schon sagen falls er die Funktion nicht kennt. http://www.mikrocontroller.net/articles/FAQ#itoa.28.29_.28utoa.28.29.2C_ltoa.28.29.2C_ultoa.28.29.2C_ftoa.28.29_.29
:
Bearbeitet durch User
ok danke für die antworten, ich schau mal ob das klappt.
1 | #include <stdlib.h> |
2 | |
3 | ...
|
4 | |
5 | double dbResult; |
6 | char szResult[11]; |
7 | |
8 | ...
|
9 | |
10 | dtostrf(dbResult, 9, 3, (char*)szResult); |
11 | lcd_puts(szResult); |
mfg.
:
Bearbeitet durch User
Patrick Hoefler schrieb: > Zum anzeigen habe ich mir eine Funktion geschrieben, die mir Int zahlen > am LCD ausgibt. Warum? Was gefällt Dir an der C-Lib nicht? Selber schreiben lohnt sich erst, wenn float Genauigkeit nicht mehr reicht und man double oder höher haben will. Bzw. dafür gibts bestimmt auch fertigen C-Code.
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.