# sps und 7 segmentanzeige



## magmaa (20 April 2007)

Hallo ich will den zählstand (einstellig) eines zählers auf einer 7 segmentanzeige darstellen. Gibt des da eine baustein der den dezimalwert in ein 4 stelligen BCD code umwandelt? Um die 7 segmentanzeig anzusteuern.


----------



## lorenz2512 (20 April 2007)

hallo,
bei s7 schon, wenn du die sps meinst. müßte aber nachschauen welcher.


----------



## crash (20 April 2007)

wenn du eine S7 benutzt kannst du den FC 93 aus der Standard Library/TI-S7 Converting Blocks nehmen.:s12:


----------



## magmaa (20 April 2007)

Danke für die schnellen antworten ja arbeite S7 kannst das mal genauer beschreiben wie das geht mit FC93.


----------



## crash (20 April 2007)

Den FC 93 anklicken und dann F1 drücken --> dann gibts hilfe


----------



## magmaa (20 April 2007)

ok hab ich mir durchgelesen ganz schlau werd ich darus nicht.


----------



## Ralle (20 April 2007)

Nimm den Befehl ITB . Für größere Zahlen DTB.


----------



## magmaa (20 April 2007)

aha und wie get das wieder? mit its ?


----------



## Ralle (20 April 2007)

L MW10 (122 dez)
ITB
T MW12 (122 BCD)

Mausclick auf ITB und dann "F1", dann erscheint auch die Hilfe dazu !


----------



## crash (20 April 2007)

ITB erzeugt doch kein Bitmuster für eine 7-Segment-Anzeige


----------



## volker (20 April 2007)

einen dezimalen wert kannst du auch ganz einfach mit ITB ins bcd-format wandeln

(eifachste variante)
L 6
ITB
T AB 3
hier verquast du natürlich 4bit da die linken 4bit ja mit nullen überschrieben werden.

mit ein paar uw/ow anweisungen kannst du alle bits nutzen


----------



## crash (20 April 2007)

*ER MÖCHTE DOCH EINE 7 SEGMENT-ANZEIGE ANSTEUERN!!!* *-->FC 93*


----------



## magmaa (20 April 2007)

Ok umwandel ist jetzt klar denk ich aber ich schließe die 7 eingänge der 7 segmentanzeige an 7 ausgänge der sps an (z.B. A0.0 bis A0.6). 
Das ist mir jetzt nicht so klar wie das dann geschied wenn ich den BCD code habe.?


----------



## Ralle (20 April 2007)

@crash

Wenn er die Segmente direkt ansteuern will, dann natürlich, aber er schrieb doch:



magmaa schrieb:


> Hallo ich will den zählstand (einstellig) eines zählers auf einer 7 segmentanzeige darstellen. Gibt des da eine baustein der den dezimalwert in ein *4 stelligen BCD code* umwandelt? Um die 7 segmentanzeig anzusteuern.



Die meisten 7-Segmentanzeigen haben über eine Elektronik Eingänge für BCD. Dafür reicht ITB aus.

@Magmaa
Edit: Siehe Magmaas letzer Post: Dann hat Crash natürlich recht und du nimmst am Besten den FC93.
Die Hilfe zum FC93 ist doch eindeutig!


----------



## crash (20 April 2007)

du  brauchst den FC 93 -> der erzeugt dir ein Bitmuster für die 7 Ausgänge für deine 7 Segment-Anzeige.


----------



## crash (20 April 2007)

magmaa schrieb:


> Hallo ich will den zählstand (einstellig) eines zählers auf einer 7 segmentanzeige darstellen. Gibt des da eine baustein der den dezimalwert in ein 4 stelligen BCD code umwandelt? *Um die 7 segmentanzeig anzusteuern.*



@Ralle: du hättest noch etwas weiter lesen müssen.
naja ist ja schon spät 

Edit: ich war zu langsam: Hast es ja schon selbst bemerkt!


----------



## magmaa (20 April 2007)

Ok hab mir die hilfe nochmal genau durchgelesen aber jetzt ist mir immer noch nicht klar wie das gehn soll. 
Ich habe da eine funktion SEG FC 93 mit E0.0 wird die gestartet und wenn es fehlerfrei läuft wird A0.0 auf 1 gesetzt und weiter.
Sorry das ich so blöde frage aber ich bin noch anfänger und für jemand der sich damit auskennt mögen die fragen vielleicht dumm sein.


----------



## Ralle (21 April 2007)

> Die Funktion Bitmuster für 7-Segment-Anzeige erzeugen (SEG) wandelt jede der vier Hexadezimalziffern des angegebenen Quellworts (IN) in vier equivalente Codes für eine 7-Segment-Anzeige um und schreibt diese in das Doppelwort des Ausgangs (OUT).


An IN legst du ein Word mit deinen Hexadezimalziffern, also für eine 7-Segmentziffer steht da drin

W#16#0001
W#16#0002
W#16#0003
...
W#16#000E
W#16#000F

Dann startest du mit E0.0 (du kannst da auch einen beliebigen Merker oder Eingang nutzen) die Wandlung.
Am Ausgang A0.0 (du kannst da auch einen beliebigen Merker oder Ausgang nutzen) erscheint eine 1, wenn die Wandlung ok und fertig ist.
Dann kannst du den Ausgang Out lesen, da schreibst du ein Merkler-Doppelwort ran hier MD0 (du kannst da auch einen beliebiges Merkerdoppelwort)

Im MB3 (Merkerbyte 3) dieses Merkerdoppelwortes erscheint dann dein Code für die 7-Segmentanzeige. Du schreibst dann noch:


```
L     MB     3                    //7-Segment-Bitmuster
 T     AB     0                    //und in die Ausgänge
```
Allerdings kannst du so den A0.7 nicht mehr richtig nutzen, bzw. erst nach dieser Zuweisung kannst du den Ausgang 0.7 für etwas anderes verwenden.

Besser ist deshalb:


```
L     AB     0
      L     B#16#80                     //Hex für 1000 0000 binär
      UW                                //nur Bit7 behält seinen altuellen Wert, alle anderen werden 0
      L     MB     3                    //7-Segment-Bitmuster
      OW                                //Bit 7 ist wie vorher, Bit0-6 enthält das Bitmuster für die 7-Segmentanzeige
      T     AB     0                    //und zurück in die Ausgänge
```


----------



## magmaa (21 April 2007)

Ah danke für die gute erklärung jetzt hab ich es auch verstanden und mit der S7 simulation haut es auch hin. Danke.


----------

