mikrocontroller.net

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


Autor: Thomas W. (thomas0906)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char nHex, nHunderter, nZehner, nEiner;

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


mfg.

Autor: Thomas W. (thomas0906)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.