Hallo allerseits,
ich bin nicht mehr ganz Anfänger in Sachen AVR Programmierung und
beschätige mich jetzt mit der Spannungsmessung und Ausgabe an einem
Display (2x16, AtMega8). Daher meine Frage:
Ich habe die ADC Routine soweit, dass ich den Wert im ADCH bzw. ADCL
Register habe. Aber wie kann ich nun diesen Wert umwandeln, dass z.B.
"3,9 Volt" am Display erscheint.
Vielleicht könnte hier jemand feritge Umwandlungs und LCD Routinen
posten, die mir (und auch anderen) hilfreich sein können.
Ich wäre auch für eine stichpunktartige Beschreibung für die
Vorgehensweise des Problems dankbar.
Vielen Dank schon mal.
Gruß
Bernhard
Die 10-Bit Zahl, die in den ADC-Registern steht, muß in 10-er Potenzen
zerlegt werden. Das geht schnell und einfach mit der
Subtraktionmethode. Zuerst subtrahierst Du von der Zahl 1.000, ist das
Ergebnis größer 0, dann inkrementierst Du einen Zähler, der vorher 0
war. Ist das Ergebnis <0, dann speicherst Du den momentanen Zählerwert
in einer Speicherzelle. Dieser Wert ist später die 1000er Ziffer. Dann
setzt Du den Zähler wieder auf 0 und subtrahierst 100 sooft, bis das
Ergebnis wieder < 0 wird und so weiter und so fort. Die verbleibenden
Einer werden direkt in die Speicherzelle für die Einer-Ziffern
übernommen. Um diese Einzel-Ziffern jetzt in ASCII für das Display zu
wandeln, addierst Du einfach zu jeder die 48 (dez.) und schon biste
fertig. Ein Komma schiebst Du an geeigneter Stelle als ASCII-Zeichen in
das Display, Texte wie "Volt" ebenso oder aus einer .db-Tabelle (in
Gänsefüßchen kannst Du dort direkt Text eintragen, abgesehen von
Umlauten, die gesondert codiert sind). Im Datenblatt zum Display
findest Du eine Zeichentabelle.
Und in wenigen Tagen hat der Nächste die selbe Frage.
Wobei mir zum "Messen von Volt" (Spannungsmessung) der AVR zu schade
und zu ungenau ist. Das macht ein Billig-Digital-Multimeter viel
besser, genauer und billiger.
...
@Hannes
Das ist ja grade das Schöne an der Hardware von den AVRs: Da ist alles
drin, ohne Aufpreis. Und meistens will man ja nicht nur die Spannung
messen, sondern auch was damit machen. Zum Beispiel malnehmen, oder
auch mal was schalten, oder was einstellen, u.v.a.m.
Und wenn wir schon bei Genauigkeit sind: Welches Multimeter ist schon
genauer als 10 Bit? Ich hab keins von der Sorte. Alles nur Schätzeisen.
Und in der Realität, beim Messen, klappert meist nicht nur die letzte
Stelle.
mfg
gerd
Hallo nochmal,
ich habe jetzt nur noch ein Problem: Ich benutze, die interne
Referenzspannung von 2,56 Volt. Die ADC Auflösungg beträgt aber 1024,
dh. ich kann auf 2,5mV genau messen. Muß ich den ADC Wert dann nicht
irgendwie durch 4 teilen, bevor ich ihn in BCD umforme, und auf dem
Display ausgebe?
Noch eine Frage: Brauche ich für eine BCD Ziffer ein komplettes
Register, oder ist es auch möglich zwei BCD Ziffern in ein Register zu
schreiben.
Für Antworten und eine prinzipielle Vorgehensweise wäre ich sehr
dankbar.
MfG
Bernhard