INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Darstellung einer Hexadezimalzahl auf drei 7Segmentanzeigen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

30.09.2008, 01:35
Beitrag #1

casio Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2008

8.2
2008
de

20537
Deutschland
Darstellung einer Hexadezimalzahl auf drei 7Segmentanzeigen
Hallo Leute!
Ich habe folgendes Problem: Ich möchte eine Hexadezimalzahl mit drei gültigen Ziffern und einer Nachkommastelle mit Hilfe von drei 7Segmentanzeigen darstellen. Die Hex.Zahl stellt eine von einem anderem Programm erfasste Temperatur dar. Also z.B 23,5 °C oder 34,2 °C, etc... Die drei 7SegmentAnzeigen sind als elektr. Schaltung so konzipiert, dass vor jeder Anzeige jeweils ein BCD-to-7 Segment Decoder vorgeschaltet ist. Diese Decoder haben unter anderem folgende Eingänge: D,C,B,A, LE <-> Input-Port A entspricht dem 1. Bit, Port B dem 2.Bit, Port C dem 3.Bit und Port D dem 4.Bit. Mit vier Bits kann ich also locker die Zahl(en) 0 bis 9 darstellen. Wenn der Eingang LE des Decoders auf "high" is, speichert die Anzeige den gerade dargestellten Wert. Ich müsste nun doch logischerweise (über die Digitalen Output-Ports) der Messkarte, die Hexadezimalzahl bzw. die dargestellte Temperatur im LabVIEW-Programm in eine Binärzahl umwandeln und diese dann über die digitalen Ports meiner Messkarte rauschicken. Das Problem is nun folgendes: Ich habe das erstmal mit einer ganzen Zahl wie 1, 2, 3,... in Verbindung mit einem Zähler ausprobiert. Funktionierte einwandfrei.. nur hat er die Zahl auf allen drei Anzeigen gleichzeitig dargestellt. Hier kommen nun die drei Latch-Buttons zum Einsatz: Wenn "LO" gedrückt ist, speichert die Anzeige, die die kleinste Ziffer darstellt ihren Wert, wenn "L1" gedrückt speichert die mittlere Anzeige, usw. Wie ich das alles bei einer Hexadezimalzahl mit einer Nachkommastelle anzeigen soll, die sich ja auch kontinuierlich verändert (dann sollen die Latch-Buttons sich ja von selbst betätigen), bleibt mir im Moment schleierhaft. Der Dezimalpunkt der mittleren Anzeige leuchtet übrigens permanent.. das sollte also nicht dass Problem werden. Vielleicht kann mir jemand ein paar gute Ratschläge geben wie das Problem lösen könnte..?! Ich hänge z.B. schon an dem Problem eine Hex.Zahl wie meine, in eine zur Weiterverarbeitung verwertbaren Binärzahl umzuwandeln. Ich schicke mal mein Programm mit, damit man sich ein besseres Bild machen kann.
Thank´s im Voraus!
Der casio

Programm ist mit LV-8.2 erstellt


Angehängte Datei(en)
Sonstige .vi  ansteuerung.vi (Größe: 341,69 KB / Downloads: 171)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.09.2008, 07:31
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Darstellung einer Hexadezimalzahl auf drei 7Segmentanzeigen
Irgendwie machst du dasselbe wie der hier:

http://www.LabVIEWforum.de/index.php?showtopic=10600

Sitzt ihr vor derselben Studienarbeit?

Verstehe ich eines richtig: Die Anzeige soll jetzt auch A,B,...F anzeigen? Dann solltest du deine Zahl auch Hexadezimal aufteilen (also durch 16 teilen) und nicht dezimal.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.10.2008, 14:00
Beitrag #3

casio Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2008

8.2
2008
de

20537
Deutschland
Darstellung einer Hexadezimalzahl auf drei 7Segmentanzeigen
Hallo Jens,
erstma dickes sorry, dass ich erst jetzt antworte! Hatte nebenbei viel zu tun und kann mich daher erst jetzt wieder auf mein Programm konzentrieren.. zu deiner Vermutung würde ich sagen, dass du damit voll ins Schwarze getroffen hastWink
Das Ding ist einfach, dass wir zwei uns schon den Kopf zerbrochen haben, wie wir das nun am besten programmieren. Könntest du mir eventuell dabei helfen, wie man eine Dezimalzahl mit drei gültigen Stellen (also z.B 23,4 °C) in drei "unabhängige Kompenten" zerlegt, so dass man mit den drei Ziffern weiterarbeiten kann? Ich möchte damit dann, bzw. hab ich mir das so gedacht, jeweils eine Ziffer (also in meinem Beispiel oben die "2", die "3" und die "4" mittels 3 VI´s "Array indizieren" dann auf die Ausgänge "Port A, Port B, Port C und Port D" schicken. Da dieser Vorgang aber ja nicht gleichzeitig erfolgen darf (oder?) hatte ich mir gedacht, das in eine "flache Sequenzstruktur" zu packen, mit dieser zeitlichen Struktur könnte man doch so schnell hintereinander auszuführende Abläufe realisieren, oder?!
Noch zu deiner Frage: Wir wollen "nur" die Zahlen 0 bis 9 auf den 7-Segment-Anzeigen darstellen... allerdings halt unabhängig und da ist auch genau unser Problem: Bisher haben wir es ja geschafft "eine" Zahl auf alle drei Anzeigen gleichzeitig zu schicken. Nur wie schickt man drei unterschiedliche Ziffern auf drei Anzeigen?? Wir haben dafür ja "nur" vier Digitale Ports, eben Port A, B, C und D zur Verfügung. Und halt die drei Latch Ports L0, L1 und L2. Auch ein Problem von uns.. wie bekommt man denn diese drei Portausgänge so im Programm automatisch geschaltet, dass sie solange auf "high" sind, bis sich die jeweilige Ziffer ändert.
Ich hoffe, du kannst mir ein wenig weiterhelfen.. wer echt super!!!

Ps: Habe gesehen, dass dein Wohnort Schweinfurt ist. Aus der Stadt komme ich nämlich her!
Viele Grüße also an die HeimatSmile

Der casio
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.10.2008, 00:05
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Darstellung einer Hexadezimalzahl auf drei 7Segmentanzeigen
' schrieb:wie man eine Dezimalzahl mit drei gültigen Stellen (also z.B 23,4 °C) in drei "unabhängige Kompenten" zerlegt, so dass man mit den drei Ziffern weiterarbeiten kann?
Es gibt zwei grundsätzliche Möglichkeiten:
1. Möglichkeit: Einen String draus machen mit dem Format "%04.1f". Der String sieht dann z.B. so "04.5" oder "12.3" aus. Nun zerlegst du den String: Position 1 = 1. Stelle. Position 2 = zweite Stelle. Position 4 = dritte Stelle. Die jeweilige Stelle wandelst du mit einem entsprechenden Element in eine Zahl um.
2. Möglichkeit: Du zerlegst die Zahl mit mathematischen Operationen: SGL/DBL-Zahl mal 10 nehmen. Zahl nach INT wandeln. Jetzt mit DIV und MOD die Zahl der Reihe nach zerlegen.

Zitat:Ich möchte damit dann, bzw. hab ich mir das so gedacht, jeweils eine Ziffer (also in meinem Beispiel oben die "2", die "3" und die "4" mittels 3 VI´s "Array indizieren" dann auf die Ausgänge "Port A, Port B, Port C und Port D" schicken. Da dieser Vorgang aber ja nicht gleichzeitig erfolgen darf (oder?)
Richtig. Dieser Vorgang darf nicht gleichzeitig erfolgen.

Zitat:hatte ich mir gedacht, das in eine "flache Sequenzstruktur" zu packen, mit dieser zeitlichen Struktur könnte man doch so schnell hintereinander auszuführende Abläufe realisieren, oder?!
Im Prinzip ja.

Zitat:Bisher haben wir es ja geschafft "eine" Zahl auf alle drei Anzeigen gleichzeitig zu schicken. Nur wie schickt man drei unterschiedliche Ziffern auf drei Anzeigen?? Wir haben dafür ja "nur" vier Digitale Ports, eben Port A, B, C und D zur Verfügung. Und halt die drei Latch Ports L0, L1 und L2. Auch ein Problem von uns
Z.B. so:
Schritt 1 (S1): Alle Latches aus. S2: 10ms warten. S3: Daten für Ziffer Eins auf Bus legen. S4: 10ms warten. S5: Latch für Ziffer eins aktivieren. S6: 50ms warten. S7: Latch für Ziffer ein aus. S8: 10ms warten. S9: Daten für Ziffer Zwei auf Bus legen. S10=S4 usw.

Die Zeiten (auch S8) an sich sollen bleiben. Den genauen Wert muss man ausprobieren.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.10.2008, 18:10
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Darstellung einer Hexadezimalzahl auf drei 7Segmentanzeigen
Ich hab mal ein Muster gemacht. Für den Bus machst du eine Task mit Byte-Zugriff und für die Latches auch.

Lv80_img


Angehängte Datei(en)
Sonstige .vi  BCD.vi (Größe: 20,55 KB / Downloads: 194)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Oberfläche aus drei 1D-Arrays erzeugen cdegelmann 10 6.603 05.02.2015 08:19
Letzter Beitrag: teegee
  Fehler bei der Darstellung einer Mittelung Flyby 3 3.173 12.02.2013 14:36
Letzter Beitrag: Lucki

Gehe zu: