Forum: Mikrocontroller und Digitale Elektronik Wie bitte Word in String umwandeln ?


von Egon (Gast)


Lesenswert?

Hallo

Kann man ein Word in einen String umwandeln , ggf. wie?

Hintergrund: Ich habe einen 10 BIT ADC (ATTINY 24) , der das Ergebnis 0 
- 1024  als Word liefert. Damit ich dieses Ergebnis auf einer LCD- 
Anzeige (z.B. mit fusing) formatiert ausgeben kann , müßte ich es als 
String vorliegen haben.

Gruß Egon

von Thomas W. (thomas100)


Lesenswert?

In C mit
itoa oder printf

Gruß
Thomas

von ekke (Gast)


Lesenswert?

Egon schrieb:
> der das Ergebnis 0
> - 1024
Du meinst wohl 0 bis 1023.

Egon schrieb:
> als Word liefert
Was ist Word? Du meinst wohl einen 16-Bit-Integer.

Egon schrieb:
> Damit ich dieses Ergebnis auf einer LCD-
> Anzeige (z.B. mit fusing) formatiert ausgeben kann , müßte ich es als
> String vorliegen haben.
Was ist fusing?

Im übrigen musst du vermutlich noch mehr, denn der eigentliche Wert wird 
vermutlich nicht von 0 bis 1023 gehen. Du brauchst noch einen Dreisatz.
Hier etwas Lektüre:
ADC 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29 
LCD 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Ansteuerung_eines_LCD

von Tom (Gast)


Lesenswert?

ekke schrieb:
>> als Word liefert
> Was ist Word? Du meinst wohl einen 16-Bit-Integer.

Naja, das ist so falsch nicht, es ist schliesslich trotzdem ein 
Datenwort. Es war auch üblich 16 bit breite Datentypen Word zu nennen - 
früher (tm).

von Juppo N. (juppo)


Lesenswert?

Hi
Wenn du in C benutzt schaue mal nach "sprintf"

Gruß und guten rutsch jupp

von Egon (Gast)


Lesenswert?

Danke mal.
"itoa" währe wahrscheinlich das richtige, wenn ich "C" könnte. Bin 
jedoch erst bei BASCOM (man möge mir verzeihen). 0- 1023 in 
Spannungswerte umrechnen ist kein Problem, nur das Formatieren. Ja, 16 
Bit Integer = Word.
"fusing" ist ein BASCOM- Befehl (z.B.  Lcd Fusing(volt , "#.#") ; " V"), 
der jedoch nur Single (= 8 Bit) formatiert und ich habe das doppelte = 
16 Bit, die sich mit diesem Befehl nicht formatieren lassen...

von Joe (Gast)


Lesenswert?

Das hab ich gerade soeben selbst benutzt.


Dim U0 As Word , U0_s As Single
.
.
.
do

U0=Getadc(0)
U0_s = U0 /30.61    'Umrechnungsfaktor
Locate 1 , 1
Lcd " " ; Fusing(u0_s , "###.##") ; "V   "   'Ausgabe der 
Batteriespannung

wait 1

loop


Viel Erfolg.

joe

von Falk B. (falk)


Lesenswert?

RTFM!

Die Hilfe von BASCOM gitb es als PDF, dort kann man mit CTRL-F suchen. 
Nach dem Befehl FUSING. Und, surprise, surprise, dort gibt es einen Link 
auf die Befehle FORMAT und STR, letzterer ist dein gesuchter Befehl.

Immer das Gleiche mit den BASCOM-Deppen . . .

von Purzel H. (hacky)


Lesenswert?

printf() auf einem Controller ... dann kann man sich gleich erschiessen. 
Dann sind 20k Code weg. Ein InttoHex ist schnell geschrieben und braucht 
vielleicht 40 bytes

von Egon (Gast)


Lesenswert?

..vielen Dank , Joe, Dein Tip war hilfreich.

Gruß Egon

von Bernhard S. (b_spitzer)


Lesenswert?

O.. oha Jetzt ! schrieb:
> printf() auf einem Controller ... dann kann man sich gleich erschiessen.
> Dann sind 20k Code weg.
Das muss ein ziemlich besch... Compiler sein. Raisonance braucht bei 
einfachen (s)printf() etwas über 1k, mit INT-Variablen ca. 1,8k erst mit 
Float steigt der Speicherbedarf auf etwa 3k an.

> Ein InttoHex ist schnell geschrieben und braucht vielleicht 40 bytes
Die Info bringt uns hier auch nicht weiter. Daher als 6 Zeilen 
Quellcode:
Tausender = Wert /1000;
Rest = Wert % 1000; // % = Modulo, falls das in BASCOM anders aussieht
Hunderter = Rest /100;
Rest = Rest % 100;
Zehner = Rest /10;
Einer = Rest % 10;

unn tschuess
Bernhard

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
Noch kein Account? Hier anmelden.