Forum: Mikrocontroller und Digitale Elektronik Wie Kommazahlen erzeugen??


von Mario Mauerer (Gast)


Lesenswert?

Hallo miteinander,

ich hänge mit meinem AD Konverter fest.
Ich möchte die daran anliegende Spannung in Volt auf ein LCD ausgeben.

Vom ADC erhalte ich ja Werte von 0 bis 1024. Diese kann man ja ohne
Probleme in Volt umrechnen. Nur: Die Hardware macht das irgendwie nicht
mit... Der lässt die Nachkommastellen weg und gib nur die vordere Zahl
aus... (ATmega8, mit Bascom programmiert)..

Wie mach ich das? Dass beim ADC-Wert 512 2.5V aufm Display steht??

Herzliche Grüsse
Mario

von crazy horse (Gast)


Lesenswert?

das kommt schliesslich darauf an, wie du das skalierst. Hat mit Hardware
hertlich wenig zu zun, das ist auschliesslich Softwaresache. Am besten
rechnest du Ganzzahl-Arithmetik, das Komma nur bei der Ausgabe
berücksichtigen.
In deinem Fall:
A2D-Wert*5000/1024 -> ergibt bei A2D=512 2500. Der Rest ist
Ausgabesache.

von Mario Mauerer (Gast)


Lesenswert?

Ja, die mV hab ich auch hingekriegt. Nur: Wie kann ich dem Typen sagen,
er soll die Zahl zerlegen? Ich brauche ja die zwei und die fünf
separat.... Mit einem Komma dazwischen.. Gibts da einen Hochbefehl?

Gruss
Mario

von MartinS (Gast)


Lesenswert?

Das progst du in deiner Ausgaberoutine. du sagst einfach das immer das
3. letzte Zeichen ein Komma ist.

von Mario Mauerer (Gast)


Lesenswert?

Aha, cooler Trick! Und wie mach ich das? (In Bascom)...

von crazy horse (Gast)


Lesenswert?

dafür gibts mehrere Möglichkeiten, mit der genauen Syntax von Bascom
kenne ich mich aber nicht aus:
-Ausgabe des Ergebnisses/1000    //2
-Ausgabe eines Kommas oder Punkt //2.
-Ausgabe des Divisionsrestes     //2.500

von Mario Mauerer (Gast)


Lesenswert?

Jetzt müsste man nur noch den Divisionsrest und die zwei trennen
können....

von crazy horse (Gast)


Lesenswert?

Mein Gott, so schwer ist das doch nicht...
Dein Ergebnis:2500
Das teilst du durch 1000, ergibt 2, die zeigst du an.
Als nächstes ein Komma
Dann die Modulo-Division: 2500%1000 ergibt 500, ausgeben, fertig.

von Mario Mauerer (Gast)


Lesenswert?

Eeehm, 2500 durch 1000 gibt 2.5. Das rundet man auf, gibt 3
Oh, Modulo.. Hatten wir mal in der Schule, grad mal gucken , wie das
geht.. :)

von Mario Mauerer (Gast)


Lesenswert?

Ah, 2500=500 mod(1000)
Stimmt das so?
Oder:
17=2 mod(3)

Aber wie geht das mit den 2500 durch 1000? Wieso gibt das 2 und nicht
3?

Und: Wie kriege ich es hin, dass, wenn ich z.B. 21V anzeigen möchte,
dann muss ja das Komma auch eine Stelle nach rechts rutschen, als wenn
ich nur einstellig messen möchte.. Macht es das automatisch?

Gruss und vielen Dank

Mario

von Mario Mauerer (Gast)


Lesenswert?

Ok, das mit dem Modulo hat geklappt!!!
A=2500 mod 1000
für den Rest.

Nur: Sobald die Zahl vor dem Komma zweistellig wird, verschiebt er das
Komma nicht... Man sieht nur die erste Stelle der Zahl... Kann man das
durch Kommaverschieben lösen, oder soll man mehr Platz einräumen?

Herzlichen Gruss
Mario

von unbekannt (Gast)


Lesenswert?

2500/1000 = 2 + Rest !!!

Du musst schon etwas selbst überlegen, wie du dein Programm
programmierst. Oder probier es einfach aus.

von unbekannt (Gast)


Lesenswert?

Der µC Rundet nicht von selbst, dazu ist er viel zu doof.

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

In ASM könnte ich dir ja helfen (Anhang), aber in BASCOM nicht...

...

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.