Hallo, Ich möcht den Wert einer Variable auf einem LC- Display ausgeben. zB: x=1 -> Das Display zeigt mir 1 an. Ich weiss jedoch nicht wie ich das anstellen soll? (prog. mit C)
Stell bitte mehr Infos zur Verfügung: -Welcher Controller -Welches Display -usw. Prinzipiell würde ich sonst aufgrund Informationsmangel sagen "Ausgabe = 1", und das hilft dir wohl kaum weiter, oder? Ralf
>prog. mit C) >- Welche Sprache? Hätte nicht kommen dürfen... :D Hast du schon mal in die verschiedenen Tutorien auf dieser Seite geguckt? Ich weiß zwar nicht, wie weit die Jungs sind, die die bearbeiten, aber helfen könnte es vielleicht.
Ach verdammt, den kleinen Hinweis hab ich doch glatt übersehen ... ;) die einfachste methode sollte printf sein ... dann gibts noch itoa womit du eine zahl in einen String wandeln kannst den du dann auf deinem LCD ausgeben kannst. Ich gehe mal davon aus, dein LCD läuft oder?
> ATTiny2313 > printf Da wäre ich vorsichtig... 2 KiB Flash und printf könnte zumindest eng werden...
>Ich gehe mal davon aus, dein LCD läuft oder?
Ja mein lcd läuft.
Ich verwende die Lib von B. Nollmeyer (ist im Forum).
ASCII 0 = 30 1 = 31 2 = 32 ... also einfach +30 dann ist es ASCII Gruß Joe alias B.N.
Ach so, wenns nen Integer ist dann z.B. so:
1 | void int_dsp (uint16_t int_val) { |
2 | uint8_t int_val_ [5]; // Integer Array |
3 | uint8_t m = 4; // Schleifenzähler für Ausgabe |
4 | |
5 | do { |
6 | int_val_ [m] = '0' + int_val %10; // Berechnung der einzelnen Stellen |
7 | int_val /= 10; // |
8 | }while (m--); // |
9 | while (m != 4) { |
10 | display_data_out (int_val_ [++m]); // Integer Wert ausgeben |
11 | }
|
12 | }
|
Johannes M. wrote: >> ATTiny2313 >> printf > Da wäre ich vorsichtig... 2 KiB Flash und printf könnte zumindest eng > werden... Deswegen sag ich ja auch die einfachste ;) die geeignetste ist das ganze wie oben selbst zu schreiben. Ich hab das ganze in assembler gemacht, da sind das auch nur n paar zeilen (solange man sich die divisionroutine nicht anguckt ;) )
>Ich hab das ganze in assembler gemacht, da sind das auch nur n paar >zeilen (solange man sich die divisionroutine nicht anguckt ;) ) Funktioniert das auch auf ARM und PIC ?
Das Prinzip ist immer das gleiche ... Die Assembler sind immer andere, müsste man anpassen. Nochmal das Prinzip: Man nehme einen Array (oder in assembler halt ein stück SRAM) mit der maximalen länge an zeichen die bei der umwandlung entstehen können (8 bit maximal 3 Zeichen, 16 bit 5 Zeichen etc.) Man teile die Zahl durch 10, nehme den rest der divison plus 48 (0x30) schreibe es an den letzten speicherplatz im Array (oder SRAM speicherstelle) dann teilt man die zahl wieder durch 10 und nimmt den rest plus 48 (0x30) und schreibt ihn an n-1 und so fort bis man das dem datentyp entsprechend oft gemacht hat. Dieses Array kann man jetzt gemütlich auf ein LCD schreiben. Man könnte natürlich auch anstatt die werte ins SRAM zu schreiben sie direkt aufs LCD schreiben. Man muss jedoch bedenken, dass man "hinten" anfängt und sich nach vorne vorarbeitet. D.h. man muss den pointer ans ende der ausgabe setzen und dann decrementieren.
>Das Prinzip ist immer das gleiche ... >Die Assembler sind immer andere, müsste man anpassen. In C ist das immer der gleiche Code. Da muss man nix anpassen.
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.