Forum: Mikrocontroller und Digitale Elektronik 2 stellige Zahl zerteilen


von Patrick (Gast)


Lesenswert?

Hallo Leute,

ich suche eine Idee um eine 2 stellige Variable (vom DS18S20) zu 
zerteilen und in 2 einzelne Variablen (1stellig) zu speichern.

Ich will von einem DS18S20 die Temperatur lesen (klappt soweit) und sie 
auf ein 2stelliges 7Segment Display jeweils über 2 BCD zu Sieben Segment 
Decoder ausgeben.

Ich hätte mir folgendes überlegt:

Temperatur / 10 = Zehnerstelle

Temperatur - (10*Zehnerstelle) = Einerstelle

von Stefan (Gast)


Lesenswert?

Klingt gut. Probier es doch einmal aus.

von Alexander S. (agentbsik)


Lesenswert?

Das geht, falls deine Temperatur eine Integer Variable ist.

z.B

int Temperatur =74 ;
int Zehnerstelle;
int Einerstelle;

Zehnerstelle = Temperatur / 10 ;  (Ergebnis = 7, da keine 
Nachkommastellen bei Int. gehen.)

Einerstelle = Temperatur - (10* Zehnerstelle) ;  ( Ergebnis = 4)


oder mit modulo arbeiten

von Johannes M. (johnny-m)


Lesenswert?

Patrick wrote:
> Temperatur - (10*Zehnerstelle) = Einerstelle
Welche Programmiersprache? In C wäre das eher
1
Einerstelle = Temperatur % 10;

Es täte übrigens gut, wenn die Fragensteller hier mal die Forenregeln 
lesen könnten, bevor sie auf "Absenden" klicken!

von Tobias P. (hubertus)


Lesenswert?

Wenns schon BCD ist, kannst ja auch bisschen maskieren und shiften:

Zehner = (Variable & 0xF0) >> 4;
Einer = Variable & 0x0F;

wenn du übrigens die Einerstelle berechnen willst, kannst du auch den 
Modulo-Operator verwenden:

Einer = Temperatur % 10.

Schönen Gruss

Mist - Johannes, warst schneller :-D

von Johannes M. (johnny-m)


Lesenswert?

Sagt mal, Leute, seid Ihr alle Hellseher, oder woher wisst Ihr, dass der 
OP tatsächlich in C programmieren will? Stellt Euch mal vor, es soll 
BASCOM sein, und alles ist für'n Popo...

von Patrick (Gast)


Lesenswert?

Danke für eure Antworten das Forum hab ich schon durchsucht und auch 
schon einen Thread gefunden wegen einer 4er Stelle.

Da ich vorhin erst nach endlosen Ausprobieren meinen Temperatursensor 
fertig habe und die 7 Segmentdisplays auch werd ich morgen dann erst das 
ganze zusammenfügen.

von Patrick (Gast)


Lesenswert?

Es ist schon C :-) aber das Rechnen müsste in Bascom doch gleich sein 
oder?

von Johannes M. (johnny-m)


Lesenswert?

Patrick wrote:
> Es ist schon C :-) aber das Rechnen müsste in Bascom doch gleich sein
> oder?
Sagt wer?

von Patrick (Gast)


Lesenswert?

k.A. zumind. meine einfachen Rechnungen müssten doch ähnlich sein?

von Johannes M. (johnny-m)


Lesenswert?

Patrick wrote:
> k.A. zumind. meine einfachen Rechnungen müssten doch ähnlich sein?
Wieso müssten die das? Ich weiß nicht, ob BASCOM für die 
Modulo-Operation auch den %-Operator verwendet, aber die 
Wahrscheinlichkeit, dass es das nicht tut, ist groß! Und in Assembler 
sieht das sowieso ganz anders aus. Und genau deshalb ist es essentiell 
wichtig, dass man die Programmiersprache angibt!

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.