Forum: Mikrocontroller und Digitale Elektronik 3 Stück 7- Segmentanzeigen mit 8 bit füttern


von Thomas W. (thomas0906)


Lesenswert?

Hallo

Ich habe 3 einzelne 7-Segment Anzeigen und möchte nun, daß diese
den dezimalen Wert eines 8-bit Registers eines PIC anzeigen.

Also 1111 1111 soll 2 5 5 anzeigen.
     0000 1110 soll 0 1 3 anzeigen

Dazu muß ich im PIC die bits in die 3 Ziffern je Segment zerlegen.
Alles andere ist vorhanden. Also auch Software, die eine Ziffer in einem 
7-Segment anzeigt.

Wie wandle ich das am einfachsten in die 3 Ziffern um?

Danke
Thomas

von Karl H. (kbuchegg)


Lesenswert?

Thomas W. schrieb:
> Hallo
>
> Ich habe 3 einzelne 7-Segment Anzeigen und möchte nun, daß diese
> den dezimalen Wert eines 8-bit Registers eines PIC anzeigen.
>
> Also 1111 1111 soll 2 5 5 anzeigen.
>      0000 1110 soll 0 1 3 anzeigen
>
> Dazu muß ich im PIC die bits in die 3 Ziffern je Segment zerlegen.
> Alles andere ist vorhanden. Also auch Software, die eine Ziffer in einem
> 7-Segment anzeigt.
>
> Wie wandle ich das am einfachsten in die 3 Ziffern um?

sukzessive Subtraktion und mitzählen ist am Einfachsten, wenn man keine 
schnelle Division zur Verfügung hat.

Wieviele Hunderter sind in 245?

    Anzahl Hunderter = 0

    245 - 100 = 145   gibt keinen Unterlauf     ANzahl Hunderter = 1
    145 - 100 =  45   gibt keinen Unterlauf     Anzahl Hunderter = 2
     45 - 100 =       gibt einen Unterlauf

    Anzahl Zehner = 0
    45 - 10 = 35      gibt keinen Unterlauf     Anzahl Zehner = 1
    35 - 10 = 25      gibt keinen Unterlauf     Anzahl Zehner = 2
    25 - 10 = 15      gibt keinen Unterlauf     Anzahl Zehner = 3
    15 - 10 =  5      gibt keinen Unterlauf     Anzahl Zehner = 4
     5 - 10 =         gibt einen Unterlauf

    und die Einer, 5, bleiben noch übrig

245 kann man also zerlegen in
2 Hunderter, 4 Zehner und 5 Einer

von Thomas E. (thomase)


Lesenswert?

unsigned char nHex, nHunderter, nZehner, nEiner;

nHunderter = nHex / 100;
nHex = nHex - (nHunderter * 100);
nZehner = nHex / 10;
nEiner = nHex % 10;


mfg.

von Thomas W. (thomas0906)


Lesenswert?

Sorry, ich vergaß:

Kann das nur in PIC Assembler machen ;-)
Sonst wärs ja einfach.

Danke, das mit dem "wieviele sind in" ist ne Möglichkeit.

Gruß
Thomas

von Bernhard S. (b_spitzer)


Lesenswert?

Wenn der PIC besser dividieren könnte als der Uropa-8051 wäre es ja 
schön. Beim 8051 bekomme ich Quotient der Division im Akku und den Rest 
im Hilfsakku. Damit ist die Aufgabe mit ein paar mov und 2x div lösbar.

unn tschuess
B.

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.