Forum: Mikrocontroller und Digitale Elektronik Dezimalzal mit LCD


von Heli (Gast)


Lesenswert?

Hallo,
ich möchte auf meiner Lcd den Wert
eines Registers als Dezimalzahl darstellen.
Aber bei mir funktioniert das irgendwie nicht.
Hat jemand von euch vielleicht ein kleines
Beispielprogramm zu dem Thema.
Ich würde mich sehr über eure Hilfe freuen.
Heli

von Sebastian Wille (Gast)


Lesenswert?

Hi Heli,

Deine Registerzahl besteht ja aus drei Ziffern (maximal), die Du 
nacheinander auf's Display schreiben musst (erst die Hunderter, dann die 
Zehner und dann noch die Einer).

Erst dividierst Du die Zahl durch 100 und schneidest dann die Kommazahl 
ab. Das sind die Hundeter. Nun ziehst Du von der ursprünglichen Zahl 
ERGEBNIS*100 ab. Dann diese Zahl durch Zehn. ... Dann die Einer.

Beispiel: 243

243/100 = 2,43 = 2 (Hunderter)
243-(2*100) = 43 --> 43/10 = 4,3 = 4 (Zehner)
243-(2*100)-(4*10) = 3 (Einer)

Hast Du eine Zahl kleiner als 100 bzw. kleiner als 10 so bekommst Du 
halt Nullen. Sollen die nicht auf's Display, musst Du halt eine Abfrage 
haben.

Sebastian

von Heli (Gast)


Lesenswert?

Hallo Sebastian,

leider kenne ich mich mit dem Binärsystem
noch nicht so gut aus. Wie dividiert
man denn eine binäre Zahl durch eine andere?

Stefan

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Du musst die Zahl ins BCD-Format umwandeln, schau dir mal die Appnote 
204 von Atmel an.

von Gerd (Gast)


Lesenswert?


von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

error 404: Datei nicht gefunden!

von Uwe (Gast)


Lesenswert?

Hi!
Ich würde immer 10 subtrahieren.
Wenn Erg. neg-> Erg.+10 = Einer.
wenn +, Zehner +1 und Test 10er >9
wenn 10er >9 ->100er +1, 10er = 0
und zurück bis negativ.
Das geht rasend schnell und ist bei 3 Stellen gut zu machen.
Gruss Uwe

von Gerd (Gast)


Lesenswert?

Der Link muss natürlich heißen:
http://www.avr-asm-tutorial.net/avr_de/rechnen/index.html
Aber hast Du bestimmt schon selber gefunden.

Bei der Wandlung von binär nach BCD muss man natürlich immer mit der 
nächstniedrigen Dezimalstelle anfangen, die die Zahl haben kann, also 
bei 8 Bit mit 100, bei 16 Bit mit 10.000.

MfG
Gerd

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.