PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1 ganzen Port für 7-Seg Display ?



Robin1508
23.11.2007, 15:30
Hi, wie ist das zu realisieren? Wenn ich den 4 Ports hab, kann ich ja eigentlich nur 4 Segmente anschließen und hab dann aber nichts mehr frei für andere Aufgaben?
Wie wird das Realisiert? brauch ich nen zusätzlichen Baustein, der das Display ansteuert?

Gruß Robin

BlackDevil
23.11.2007, 15:35
ja, gibt 7Segment Bausteine. Musst hier mal Suchen, gibt einige Beiträge dazu

Erst letztens hab ich davon was gelesen. Ist soweit ich weis auch einer aus der 74er Reihe

Andree-HB
23.11.2007, 15:50
brauch ich nen zusätzlichen Baustein, der das Display ansteuert?


...gibt mehrere Möglichkeiten, z.B. auch Multiplexbetrieb :

http://www.dumdididum.de/blackstrom/avr/avr_uhr/index.shtml

BlackDevil
23.11.2007, 15:56
Was man auch gerne macht ist die Kanäle mit einer Frequenz zu takten. Spart Strom (so mein Prof ^^ ich hab mich damit noch nich befasst)

Besserwessi
23.11.2007, 21:13
Die BCD nach 7 Segment Decoder machen eher wenig sinn. Wenn schon solche mit Latch. Besser sind oft sogenannte Porterweiterungen duch Schieberegister oder man nimmt einen etwas größeren Prozessor.

for_ro
23.11.2007, 22:05
Tatsächlich würde ich genau so einen BCD/7-Segment Decoder mit Latch nehmen, z.B. einen 4511.
Du gibst dann 4 Bit als normale Zahl auf 4 Ausgänge. Wenn sie auf einem Port liegen, kannst du sogar direkt die Zahl schreiben, also PortA=Zahl.
Du brauchst dich dabei nicht um die Codierung auf BCD zu kümmern und hast dazu noch 3 Ausgänge gespart.
Willst du mehrere Stellen anzeigen, werden die 4Bit parallel auf alle 4511er geschrieben, und der LE Eingang selektiert dann die richtige Stelle.
Die würde ich dann auf die anderen 4 Bit des Ports legen.
Gibst du dann z.B. &B00101000 aus, würde die zweite (&B00101000) Stelle den Wert 8 (&B00101000) anzeigen.

Gruß

Rolf

wolli_bolli
07.12.2007, 15:46
Die absolute Minimalvariante, die ich auch erst kürzlich bei einem ähnlichen Problem angewandt habe benötigt nur 3 Pins.
Über zwei (clk, serielle Daten) werden die Daten in ein Schieberegister (z.B. 4015) gepumpt. Dessen Ausgänge werden mit den Eingängen der Segmente verbunden. Das Multiplexen wird über den dritten Controllerpin erledigt: dieser wird mit dem clk Eingang eines 4017-Zählers verbunden. Die Ausgänge dieses Zählers steuern nun über Transistoren die gemeinsamen Kathoden der Segmente an.
Die Ansteuerung erfolgt so: Daten ins Schieberegister eintakten, Flanke an 4017, warten (jetzt leuchtet erstes Segment), dann wieder eintakten, Flanke, warten, eintakten, flanke, warten, ..... . Damit ließen sich teoretisch 10 Segmente steuern, wenn weniger Segmente gebraucht werden zb. 4, so wird Q5 mit Reset verbunden (bei IC 4017), wodurch nach dem 4. Segment ein Reset passiert und wieder zum 1. Segment weitergeschaltet wird.
Solltest du etwas mehr Pins als nur 3 zur Verfügung haben, ist diese Lösung natürlich Quatsch, sonst kann sie jedoch ganz hilfreich sein.
Gruß
Wolli_bolli

BlackDevil
07.12.2007, 17:12
Die absolute Minimalvariante, die ich auch erst kürzlich bei einem ähnlichen Problem angewandt habe benötigt nur 3 Pins.
Über zwei (clk, serielle Daten) werden die Daten in ein Schieberegister (z.B. 4015) gepumpt. Dessen Ausgänge werden mit den Eingängen der Segmente verbunden. Das Multiplexen wird über den dritten Controllerpin erledigt: dieser wird mit dem clk Eingang eines 4017-Zählers verbunden. Die Ausgänge dieses Zählers steuern nun über Transistoren die gemeinsamen Kathoden der Segmente an.
Die Ansteuerung erfolgt so: Daten ins Schieberegister eintakten, Flanke an 4017, warten (jetzt leuchtet erstes Segment), dann wieder eintakten, Flanke, warten, eintakten, flanke, warten, ..... . Damit ließen sich teoretisch 10 Segmente steuern, wenn weniger Segmente gebraucht werden zb. 4, so wird Q5 mit Reset verbunden (bei IC 4017), wodurch nach dem 4. Segment ein Reset passiert und wieder zum 1. Segment weitergeschaltet wird.
Solltest du etwas mehr Pins als nur 3 zur Verfügung haben, ist diese Lösung natürlich Quatsch, sonst kann sie jedoch ganz hilfreich sein.
Gruß
Wolli_bolli

Kannst du ein Schaltbild dazu anhängen?

HannoHupmann
07.12.2007, 18:18
Das müsste doch auch mit einem Pin gehen eine 7 Segmentanzeige anzusteuern. Man schickt über den Pin einen Impuls raus (High) dann eine Pause und dann wieder High Signal, das ganze in einer festen Periode. Genau wie bei den Servos. Dann braucht man nur noch bei der 7 Segmentanzeige einen Chip der diese Periode bzw das Signal interpretiert und eine Zahl ansteuert. Auch könnte man den Wert seriell über einen Pin schicke und auf der anderen Seite wieder seriell auslesen, geht dann halt nicht mehr so schnell und nur noch im ms Bereich.

Am Einfachsten ist es wohl wirklich mit 4 Bit.

Steinigtmich
07.12.2007, 18:40
Es gibt auch noch eine Methode die nennt sich Charlieplexing. Ich habs mir nicht genau durchgelesen, aber ich denke das könnte das Richtige sein.

http://www.josepino.com/pic_projects/index?how_control_leds.jpc

BlackDevil
07.12.2007, 18:46
Es gibt auch noch eine Methode die nennt sich Charlieplexing. Ich habs mir nicht genau durchgelesen, aber ich denke das könnte das Richtige sein.

http://www.josepino.com/pic_projects/index?how_control_leds.jpc

Das macht natürlich am meisten sinn Herr Ohm und das Thema Diode zu Verknüpfen ...

Allerdings gehts ja auch drum Schaltungen Stromeffizient zu bauen und da fällt immer wieder das Stichwort "Getaktet" ... Sprich: Nich im Dauerbetrieb sondern mit einer Frequenz Leuchten lassen (>25Hz)

schnasemann
07.12.2007, 19:18
einfachste Sache ist ein SIPO, ein Schieberegister, in das man mit 2 Pins (Takt und Daten) seine 7-8 Bit reintaktet. Am Ausgang liegt dann für eine 7-Segment-Anzeige alles an, Vorwiderstände und fertig.
Wer nun (warum auch immer) im Stromsparwahn ist, kann das ja immer wieder dunkel takten und dann wieder schreiben.
Charlieplexing macht bei Sachen bis ca. 100 LEDs Sinn, habe ich bei einem Sternenhimmel eingesetzt.
Wer nur einen Pin einsetzen will/kann, verwendet einen 2. Controller, der das über den UART mitgeteilt bekommt (dann ist man zwar Pinsparweltmeister, hat aber einen weiteren Prozessor eingesetzt, das macht nur Sinn, wenn eben in ein bestehendes System unbedingt noch eine Anzeige rein muss).
HTH
Carsten

wolli_bolli
09.12.2007, 14:06
Hallo,
Hier mein Schaltplan (hat ein bisschen gedauert, da ich Schaltpläne normal nur auf Papier zeichne (kann keiner lesen). Sollte ich irgendwelche Fehler gemacht haben tuts mir leid). Habe in den Symbolbiblioteken leider kein geeignetes Symbol für ein Display gefunden, deshalb habe ich je 8 Leds hingemalt (7Segmente + Komma). Wichtig ist dass die Segmente gemeinsame Masseanschlüsse haben.
Sollte sich jemand wundern weshalb am 4017 jeweils ein Ausgang freigelassen ist: Es dient dazu, damit man nicht sehen kann, wenn neue Daten in das Schieberegister eingelesen werden. (sonst würden alle Segmente ein bisschen leuchten)
Zudem habe ich einen mittelmäsigen Assembler Quelltext, mit dem man das ganze ansteuern kann (AVR). Den kann ich bei Bedarf noch hochladen.
Gruß Wolli

Robin1508
09.12.2007, 16:02
Hm, soviele Methoden^^
Werd das mal mit dem Multiplexer versuchen, das ist auch gerade unser Thema in der Schule, passt grad perfekt dazu.
Danke

Besserwessi
09.12.2007, 20:51
Die Schaltung von Bolli hat noch ein Problem: man Weiss nicht, welche Stelle gerade aktiv ist. Irgendwie müßte man also noch den Reset des 4017 oder einen Ausgang anschließen, oder bei 3 Stellen einen Multiplexer nehmen.
Einfacher ist da die alterntive mit Schieberegistern die ein Latch drin haben (74HC595).

wolli_bolli
10.12.2007, 16:00
Das ist klar. Man muss beim anmachen der Schaltung für ein Reset des IC 4017 sorgen (zb. simples RC Glied). Dann befindet sich der Zähler in einer definierten Position, sodass der Prozessor "weiß", welches Segment momentan leuchtet. So funktioniert das ganze (zumindest bei mir, ich garantiere für nichts) perfekt, sogar bei stundenlangen Betrieb.

Gruß
Wolli_Bolli

matreich
25.03.2008, 13:02
[quote="for_ro"]Tatsächlich würde ich genau so einen BCD/7-Segment Decoder mit Latch nehmen, z.B. einen 4511.

Hallo,
also mit einem CD74HC4511E bekomm ich die Ansteuerung einer 7 Segment LED mit gemeinsamer Katode einfach nicht gebacken.
Meine Anschlüsse: Pin16 +5V, Pin8 Masse, Ausgänge Pin9-15 zum 7Segment über 270k, an Eingängen Pin1 Pin2, Pin6 und Pin7 Signalspannung +5V.

Was mach ich da falsch?

Wofür sind eigentlich die Anschlüsse Pin3 (BI), Pin4 (TI), Pin5(LE)? An TI und BI hab ich auch mal +5V angelegt, ohne Änderung. Aus dem Datenblatt kann ich auch nicht mehr rauslesen.

Wenn ich das Gehäuse berühre flackerts. Ist die Spannung zu hoch?

Danke für Hilfe??!!

MeckPommER
25.03.2008, 14:17
Das ist immer das Problem mit den Datenblättern - die wichtigen Dinge verstecken sich zumeist ;-)
Im den meisten Datenblättern gibts eine Wahrheitstabelle, die einem anzeigt, weil welchen Eingangswerten welche Asugangswerte zu erwarten sind.
Im Falle des 4511 kann man daraus auch die Funktion BL und LT-Pins ablesen. Liegt LT auf Low sind alle Segmente stets an (Lampentest). Für den Betrieb also auf High legen.
BL ist "Blank". Liegt hier Low an, sind alle Segmente aus. Muss für den sinnvollen Betrieb also ebenfalls auf High gelegt werden.
Wenn LE auf High liegt, wird der zuletzt angelegte code gehalten - "friert" die sozusagen die Anzeige ein.

Anmerkung: warum die Anzeige über so große widerstände angeschlossen? wenn ich strom wäre, da käm ich ja garnicht durch =-)

so ein decoder soll dir die binärwerte 0-9 in die ansteuercodes für die 7-segmentanzeige umwandeln. wenn du pin1,2,6 und 7 auf high hast, dann sendest du dem braven chip damit eine 15, die er (absichtlich) nicht umwandelt und das display verdunkelt (steht auch so im Datenblatt)

Gruß MeckPommER

JonnyP
28.03.2008, 12:28
@wolli_bolli
Hab mir deinen eagle schaltplan mal angesehen. Wenn du planst damit ein layout zu machen, dann wirst du noch einiges zu bearbeiten haben. Du solltest mal den ERC drüber laufen lassen und die Fehler abarbeiten. Übrinx genügt es nicht, einen Bus zu zeichnen und die Leitungen im Bus wissen dann schon wo sie hinmüssen. Wäre das der Fall würde jeder layouter der Welt nur noch Busse zeichnen. ;-)
Wie gesagt, fall du damit ein layout planst, dann stell noch mal einen korrigierten Plan hier rein und ich (und ein paar andere) werde drüber schauen.