PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Standard LCD-Modul



Ramsey
26.03.2005, 22:49
Hi Leute,

also ich habe da ein Problem. Ich möchte auf einem Standard LCD-Modul eine Zahl ausgeben, genauer eine Temperatur. Das Format sieht wie folgt aus:

Die Temperatur besteht aus 2 Byte.
Die Bytes sind folgendermaßen aufgebaut:
High-Byte Bit 7-5: 0 (Werden nicht gebraucht)
High-Byte Bit 4 : Vorzeichen (Invertiert)
High-Byte Bit 3-0 und Low-Byte Bit 7-4: Bilden die Ganz-Zahl
Low-Byte Bit 3-0: Sind die Nachkommastellen

Also +40,5 °C sind: 00000010 10001000

Verständlich?

Also auf jeden Fall will ich das ganze nun auf dem Display ausgeben. Und ich gehe davon aus, dass das Ding nur ASCII versteht.

Ich benutze den AN2131SC für diese Aufgabe (8051). Ich habe schon den Befehl da (Decimal Adjust) gefunden, der hat wohl was mit der Umrechnung von Binär zu BCD zu tun, ich weiss nun aber nicht, wie man den genau einsetzt, weil sich alles was ich bisher darüber gelesen habe nur auf Addition und Subtraktion bezieht.

Könnt ihr mir da vielleicht weiterhelfen?

Gruß Ramsey

leech
27.03.2005, 17:46
http://www.progforum.com/showthread.php?t=4528

Ansonsten:
Ganzzahl-Teil:
Nehmen wir fürs Beispiel 254° an.

254 geteilt durch 100 = 2 Rest 54. Die 2 ist deine 100er Stelle.
54 geteilt durch 10 = 5 Rest 4. Die 5 ist die 10er-Stelle, die 4 die 1er-Stelle.

Um zu ASCII-Ziffern zu kommen, muss man jeweils noch eine Konstante draufaddieren.

Arne
28.03.2005, 13:58
Im Prinzip hat leech schon alles gesagt, ich bevorzuge jedoch die Methode immer wieder durch 10 zu teilen und den "Rest" als dezimal umgewandelte Ziffer aus der Rechnung zu nehmen. Das läßt sich besser in Assembler programmieren, grade wenn man auf einem 8-Bitter mit 16Bit (und mehr) zu hantieren anfängt.

Um zu ASCII-Ziffern zu kommen, muss man jeweils noch eine Konstante draufaddieren. Also:
add [Ziffer],#'0'

Gruß,
Arne

Ramsey
28.03.2005, 15:09
Also erstmal vielen Dank für eure schnelle Hilfe. :)

Das mit den Ganzzahlen hab ich nun verstanden und schon teilweise implementiert... Stimmt, ich schreibe in Assembler :D

Aber das mit den Nachkommastellen... Mir ist da was eingefallen, allerdings ist das ziemlich rechenintensiv und verschluckt sehr viel Zeit:

Wenn ich mir einfach vier Nachkommastellen mache, also 4 Zahlen... Dann gehe ich mit einer Schleife die vier Bits durch und da ich die Wertigkeit von jedem Bit schon kenne kann ich dann diese Wertigkeit auf die vorhandenen Zahlen draufaddieren. Also ein Beispiel:

ich fange an mit ,0000 mein erstes Nachkomme-Bit ist nun gesetzt, das bedeutet 0,5 also addiere ich:
,0000
+ ,5
--------
,5000
dann ist das zweite nicht gesetzt, aber das dritte, das beudeutet ,125
,5000
+ ,1250
-------
,6250

Das ganze ist nun aber so rechenintensiv, weil ich ja jedesmal vier add-Befehle brauche, so wie eine Abfrage, ob nicht eine Zahl größer als 9 geworden ist und das ist noch eine viel größere Rechnung...

Hat da jemand eine bessere Methode als ich?

Gruß Ramsey

leech
28.03.2005, 17:43
Mach Dir eine Tabelle mit allen 16 Werten.