7-Segment-Anzeigen mit Tastenfeld ansteuern

Hallo,
ich würde gerne vier 7-segment-anzeigen mit einem tastenfeld ansteuern.

Genauer gesagt soll auf der ersten 7-segment-anzeige die erste zahl stehen, die gedrückt wird, auf der zweiten anzeige die zweite zahl, auf der dritten anzeige die dritte zahl und auf der vierten anzeige die vierte zahl.

Die Zahlen sollen möglichst so lange stehen bleiben, bis sie mit hilfe eines „reset-tasters“ wieder „gelöscht“ werden.

Habe schon ne menge gegooglet, aber nichts gefunden.
Ich weiß leider nur soviel, das man einen IC braucht der als „speicher“ dient und einen der die „signale“ für die 7-segment anzeigen umwandelt.

Ich hoffe ihr könnt mir helfen, Danke im vorraus:
Moritz Klein

Hallo,
ich würde Dir ganz allgemein einen Mikroprozessor als Problemlösung anbieten. Aber ich kenne das eigentliche Problemn nicht - das wird ja wohl nicht darin bestehen, ein Paar Tasten anzuzeigen und dann wieder zu löschen.
Also: was soll denn eigentlich gemacht werden und warum und was weißt Du bereits und was steht Dir zur Verfügung?
Gruß
loderunner

Das es mit einem Mikroprozessor „einfacher“ wäre ist mir bekannt, aber ich habe absolut keine möglichkeit einen zu programmieren bzw. ein passendes programm zu schreiben.

Das problem besteht darin das ich einfach kein ahnung habe wie ich diese schaltung aufbauen soll :frowning:

100% wissen tue ich leider nichts (trotz googeln), aber ich vermute man braucht einen IC der die signale des tastenfeldes verarbeitet, einen der die signale dann für die 7-segment-anzeigen umwandelt und einen als kleinen speicher, so dass die angezeigten zahlen stehen bleiben…
Und wie das funktioniert das die schaltung automatisch für die nächste zahl die nächste anzeige nimmt ist mir völlig fremd :frowning:

Moritz

Hallo Moritz,

Das es mit einem Mikroprozessor „einfacher“ wäre ist mir
bekannt, aber ich habe absolut keine möglichkeit einen zu
programmieren bzw. ein passendes programm zu schreiben.

Würdest du das Programm hinkriegen ?

Grundsätzlich lässt sich jeder Algorithmus als Programm oder als Hardware realisieren.
Unterschiede gibt es dann nur in der Ausführungsgeschwindigkeit und in der Änderbarkeit. Naja, das Programm ist weniger sperrig :wink:

Das problem besteht darin das ich einfach kein ahnung habe wie
ich diese schaltung aufbauen soll :frowning:

zuerst musst du dir überlegen wie das ganze funktionieren soll und welche Elemente du dazu benötigst.

Zuerst musst du einmal erkennen, wenn eine Taste gedrückt wird und wann sie wieder losgelassen wird.

Grundsätzlich benötigst du, wie du schon erkannt hast, für jede 7-Seg-Anzeige noch einen Zwischenspeicher.
Hier hast du schon einmal 2 Möglichkeiten:

  1. Du speicherst 4-Bit und steuerst damit einen BCD zu 7Seg-Decoder an.
  2. 8-Bit Zwischenspeicher bekommt man recht günstig, zudem auch mit Bustreibern als Ausgang, welche auch eine 7-Seg-Anzeige direkt treiben kann (z.B. 74xx374). Also kannst du auch die Ausgangswerte des BCD zu 7Seg-Decoders abspeichern.

Mit der Variante 2, kannst du dir 3 ICs sparen, wenn 4 7Seg-Anzeigen angesteuert werden.

Jetzt musst du noch aus den einzelnen Tasten BCD erzeugen. Dies kann man z.B. mit Dioden und einem Pullup-Widerstand machen.

Dann benötigst du noch einen Zähler, welcher die Tastendrücke zählt und entsprechend auf die nächste Anzeige weiterschaltet.

Ein Reset beim Einschalten ist auch noch wichtig.
Sonst hast du die wildesten Zeichen und es ist nicht klar, an welcher Stelle erste Ziffer gespeichert wird.

Dann kommen noch die Probleme mit der Fehlbedienung:

  1. Was passiert wenn man sich verdrückt hat ?
  2. Was wenn 2 Tasten gleichzeitig gedrückt werden ?
  3. Display löschen ? (dazu brauchst du nur eine Taste, welche einen Reset auslöst)

Dann ist noch ein wichtiger Effekt bei den Tasten zu berücksichtigen !
Als elektromechanisches Bauteil, schaltet so eine Taste nicht richtig schön, sondern prellt. Bei guten Tasten erhältst du die ersten paar ms nach der Betätigung eine Anzahl von Impulsen. Das selbe hast du, wenn auch etwas weniger, beim loslassen der Taste. Deine Logik-ICs sind so schnell, dass sie das prellen als einzelne Impulse verarbeiten.

MfG Peter(TOO)

Hallo Peter,
erst einmal vielen Dank für deine ausführliche Antwort!!!

ich fürchte ich würde ein solches Programm nicht hinbekommen, ich habe zwar schon einige kleinere Programme mit visual basic 6.0 programmiert, auch mit schon mit Interface, aber mit was microporzessoren betrifft stehe ich völlig bei 0.

Vielleicht hilft es ja, wenn ich mal dazusage das ich eine Alarmanlage bauen möchte. Die Schaltung für das eigentliche Codeschloss habe ich. Als kleinen Bonus würde ich nur gerne die eingegebenen Zahlen darstellen.

Als Tastenfeld habe ich ein Drucktastenfeld mit 12 einzelnen Anschlüssen, also KEIN Matrix (Conrad Artikel-Nr.: 195561 – 62).

Die Sache mit dem BCD erzeugen habe ich nicht verstanden, ich dachte das übernimmt ein IC?

Als Zähler dachte ich das man das mit einem IC 4017 realisieren kann, sodass jedesmal wenn man eine taste drückt diese erscheint, es eine paar wenige Millisekunden geht und er 4017 das zur nächsten anzeige „wechselt“.

Zu den Problemen bei einer Fehlermeldung:

  1. Sollte man sich verdrücken sollte gar nichts passieren, sodass man nicht merkt dass der Code falsch ist, denn die Schaltung für das codeschloss schaltet ja sowieso nicht durch.
  2. Wenn 2 Tasten gleichzeitig gedrückt werden, sollte denke ich entweder einfach keine taste „übernommen“ werden, oder beide zahlen, oder „es wird eine ausgesucht“.
  3. ein einfacher Taster wäre sicher das Beste, der parallel zu einem optokoppler oder relai überbrückt wird wenn der Code richtig ist.

Das mit dem entprellen habe ich schon einmal gehört, ich glaube mich aber zu erinnern dass man dieses Problem ganz einfach mit einem Kondensator beheben kann?!

MFG
Moritz Klein

Hallo,

Das es mit einem Mikroprozessor „einfacher“ wäre ist mir
bekannt, aber ich habe absolut keine möglichkeit einen zu
programmieren bzw. ein passendes programm zu schreiben.

Das sollte kein so großes Problem sein.
Zugegeben, wenn man in die innneren Strukturen des Controllers
eintauchen müßte, dann ist es für Laien wirklich schwierig.

Aber es gibt fertige kleine Controller-Module mit einem ganz
einfachen Basicdialekt drauf. Sowas kann eigentlich jeder
Programmieren (zumindest so einfache Problemchen).

Das problem besteht darin das ich einfach kein ahnung habe wie
ich diese schaltung aufbauen soll :frowning:

Mit einem solchen Controller braucht du nicht so viel zu wissen.
Da klemmst du einfach die Taster an und kannst sofort jeden
Tastendruck abfragen und zwischen speichern.
Für die Ausgabe gibt es dann auch einfache Möglichkeiten.

100% wissen tue ich leider nichts (trotz googeln), aber ich
vermute man braucht einen IC der die signale des tastenfeldes
verarbeitet, einen der die signale dann für die
7-segment-anzeigen umwandelt und einen als kleinen speicher,
so dass die angezeigten zahlen stehen bleiben…
Und wie das funktioniert das die schaltung automatisch für die
nächste zahl die nächste anzeige nimmt ist mir völlig fremd :frowning:

Ein Grund mehr, die vorgefertigten Funktionen eines uC-Moduls
zu nutzen.

Schau mal bei Conrad nach C-Control-Basic bze. C-Control M-Unit.
Da gibts auch eine recht gute Beschreibung mit dazu.
Gruß Uwi

Hallo Moritz

… aber mit was microporzessoren betrifft stehe ich völlig bei 0.

Ich glaube, für Dich, der Du noch keine Kenntnisse der Mikroprozessortechnik hast, wäre eine Schaltung aus der „Steinzeit“ der IC-Logik am besten geeignet.

Ich beschreibe Dir nur mal einen möglichen Weg

Als Tastenfeld habe ich ein Drucktastenfeld mit 12 einzelnen Anschlüssen, also KEIN Matrix (Conrad Artikel-Nr.: 195561 – 62).

Die Sache mit dem BCD erzeugen habe ich nicht verstanden, ich dachte das übernimmt ein IC?

Es ist für die weitere Verarbeitung am einfachsten, wenn man die Einzelsignale der Tasten in binäre Signale wandelt, diese in ein Schieberegister (4 Bit parallel, 4 Stufen) einspeist und mit jedem Tastendruck um eine Stufe weiter schiebst.

Dazu baust Du Dir hinter dem Tastenfeld eine Diodenmatrix auf, die Dir auf 4 Leitungen den Binärwert der betätigten Taste sowie auf einer Leitung das Signal, dass eine Taste gedrückt ist, ausgibt.

Mit den Binärsignalen gehst Du auf ein Schieberegister, welches Du z.B. aus 2 ICs 4015 aufbaust. Mit der 5. Leitung (Taste betätigt) gehst Du auf ein Monoflop (kann man aus zwei NAND-Gates, einem Widerstand und einem Kondensator bauen. Das Ausgangssignal des Monoflops ist das Clock-Signal für das Schieberegister.

Des Weiteren benötigst Du eine Schaltung, welche erkennt, wenn nach dem Reset die 4. Tastenbetätigung erfolgte, um weitere Eingaben zu sperren. Ich würde das mit einem weiteren Baustein 4015 bauen.

Die an den parallelen Ausgängen der Schieberegister anstehenden Binärsignale würde ich dann mit 4 Bausteinen 4558 in die Ansteuersignale für die 7-Segment-Anzeigen umsetzen.

Das mit dem Entprellen habe ich schon einmal gehört, ich glaube mich aber zu erinnern dass man dieses Problem ganz einfach mit einem Kondensator beheben kann?!

Stimmt!

Ich hoffe, ich habe Dir genügend Stoff zum Nachdenken gegeben
merimies

Hallo Moritz,

Vielleicht hilft es ja, wenn ich mal dazusage das ich eine
Alarmanlage bauen möchte. Die Schaltung für das eigentliche
Codeschloss habe ich. Als kleinen Bonus würde ich nur gerne
die eingegebenen Zahlen darstellen.

So etwas habe ich vor über 30 Jahren mal konstruiert. War mit einem 3-stelligen Code, welcher mit einem Schlüsselschalter „eingemorst“ wurde. Bestand damals aus etwa 30 TTL ICs. Wurde im Gebäudeschutz verbaut.

Dann gib uns mal an, was du hast.

MfG Peter(TOO)

Hallo merimies,
kurze zwischenfrage!

Du hast geschrieben „Dazu baust Du Dir hinter dem Tastenfeld eine Diodenmatrix auf, die Dir auf 4 Leitungen den Binärwert der betätigten Taste sowie auf einer Leitung das Signal, dass eine Taste gedrückt ist, ausgibt.“
Ich weiß zwar was eine Diodenmatrix ist (glaube ich), mir ist aber nicht klar wie ich 12 unterschiedliche signale von 12 tastern in 4 leitungen unterbringen soll

Außerdem bust du sicher das du 4558 meinst? Ich habe gelsen der sei für LCD, und für 7 segment azeigen kämen nur 4511, 4513 oder 4543 in frage?!?!

Moritz

Hallo merimies,
kurze Zwischenfrage!

Guten Morgen, Moritz!

Du hast geschrieben „Dazu baust Du Dir hinter dem Tastenfeld eine Diodenmatrix auf, die Dir auf 4 Leitungen den Binärwert der betätigten Taste sowie auf einer Leitung das Signal, dass eine Taste gedrückt ist, ausgibt.“
Ich weiß zwar was eine Diodenmatrix ist (glaube ich), mir ist aber nicht klar wie ich 12 unterschiedliche Signale von 12 Tastern in 4 Leitungen unterbringen soll

Zum Beispiel so?
http://images3.bilder-speicher.de/show-image_org-080…

Außerdem bist du sicher, dass du 4558 meinst? Ich habe gelesen, der sei für LCD, und für 7 Segment Anzeigen kämen nur 4511, 4513 oder 4543 in Frage?!?!

Ich habe das noch mal nachgeprüft. 4558 ist schon möglich, allerdings kann der nur einen Strom von 10mA pro Segment treiben. Besser ist wahrscheinlich der 4511. Der 4513 ist mir unbekannt, der 4543 ist für LCD.

Moritz

Gruß
merimies

Hallo merimies,

Zum Beispiel so?
http://images3.bilder-speicher.de/show-image_org-080…

Wobei man sich dann eigentlich den 7-Seg-Decoder sparen kann, indem man mit 7 Dioden gleich die einzelnen Segmente ansteuert.

Jetzt stellt sich aber die Frage ob er 7-SegAnzeigen mit Common Anode oder Common Cathode verwendet…

MfG Peter(TOO)

Hallo merimies,

Hallo

Zum Beispiel so?
http://images3.bilder-speicher.de/show-image_org-080…

Wobei man sich dann eigentlich den 7-Seg-Decoder sparen kann,
indem man mit 7 Dioden gleich die einzelnen Segmente
ansteuert.

Ist durchaus eine Überlegung wert, aber dann müsste er, da er ja 4 Anzeigen ansteuern will, ein 7+1 Bit breites 4-stufiges Schieberegister aufbauen. Und da die Ausgänge der Standard-CMOS-Bausteine nicht den nötigen Segmentstrom treiben können, benötigt er pro Segment noch einen Treibertransistor (= 28 Transistoren). Ich sehe da keinen Vorteil , selbst wenn er Transistorarrays oder Buffer 4050 verwendet.

In meiner Schaltung - im Morgengrauen zusammengehauen - ist noch eine Unkorrektheit enthalten: Natürlich benötigen die Leitungen „A“; „B“; „C“; „D“ und „Taste betätigt“ noch je einen Pull Down Widerstand (~10k), damit die CMOS-Bausteine damit korrekt angesteuert werden können.

Jetzt stellt sich aber die Frage ob er 7-SegAnzeigen mit
Common Anode oder Common Cathode verwendet…

Das spielt aber erst eine Rolle bei der Auswahl des Dekoders.

MfG Peter(TOO)

MfG Merimies

Hallo merimies,

Wobei man sich dann eigentlich den 7-Seg-Decoder sparen kann,
indem man mit 7 Dioden gleich die einzelnen Segmente
ansteuert.

Ist durchaus eine Überlegung wert, aber dann müsste er, da er
ja 4 Anzeigen ansteuern will, ein 7+1 Bit breites 4-stufiges
Schieberegister aufbauen. Und da die Ausgänge der
Standard-CMOS-Bausteine nicht den nötigen Segmentstrom treiben
können, benötigt er pro Segment noch einen Treibertransistor
(= 28 Transistoren). Ich sehe da keinen Vorteil , selbst wenn
er Transistorarrays oder Buffer 4050 verwendet.

Es steht in den Vorgaben, dass die Ziffern durch das Display geschoben werden müssen.

Also 4 x 74AC573 oder 74AC374 8-Bit-Latch mit Bustreibern als Ausgänge. Damit kann man die Segmente, über einen Widerstand, direkt treiben.

Dann noch ein Counter als Sequenzer welcher die Latchs nacheinander ansteuert.

MfG Peter(TOO)

Hallo merimies,
Ich habe nun einen schaltplan mit den von dir angegebenen IC´s gezeichnet, habe jedoch erst noch ein parr kleine fragen:

  1. Wo kommt der 10Kohm Pull-p Wiederstand genau hin. Zwischen den leitungen A B C D und TASTE BESTÄTIGT und dem IC 4015?

  2. Wie groß sollte der entprell-Kondenstaor sein und wo kommt er genau hin?

  3. Welcher Pol kommt an das Tastenfeld, Plus oder?
    Gäbe es auch eine möglichkeit das GND an das Tastenfeld kommt?

Jo das wars dann auch schon…
Gruß Moritz

Hallo merimies,

Hallo.

Ich habe nun einen Schaltplan mit den von dir angegebenen IC´s gezeichnet, habe jedoch erst noch ein paar kleine Fragen:

  1. Wo kommt der 10Kohm Pull-up Wiederstand genau hin. Zwischen den Leitungen A B C D und TASTE BESTÄTIGT und dem IC 4015?

Die „Pull-up Wiederstände“ sind Pull-Down-Widerstände, da sie die ungeschaltete (offene) Leitung nach 0V ziehen. Ich habe meine Skizze der Matrix entsprechend ergänzt.
http://images3.bilder-speicher.de/show-image_org-080…

  1. Wie groß sollte der entprell-Kondensator sein und wo kommt er genau hin?

Die Leitungen A, B, C und D brauchen gar nicht entprellt zu werden. Das Entprellen für diese Leitung erledigt die Erzeugung des Clock-Signals (aus dem „Taste betätigt“ Signal). Ich habe mal eine Schaltung für das Clock-Signal eingezeichnet.

Das Signal „4. Taster betätigt“ (vom Schieberegister) steht nicht an, so dass der obere Eingang von D1.A auf L liegt.
Das RC-Glied R31/C31 verzögert das „Taste-betätigt“ Signal von der Matrix um ca. 100ms. Bis dahin ist das Prellen der Taste vorbei. Der Ausgang von D1.A schaltet also nach 100ms von L nach 0. Damit wird auch der untere Eingang von D1.B = 0. Damit wird das Clock-Signal = L. Jetzt lädt sich der Kondensator C32 über R32 auf, so dass nach ca. 50ms die Schaltschwelle am unteren Eingang von D1.B überschritten wird und der Ausgang von D1.B (das Clock-Signal) wieder nach 0 geht.

Mit der positiven Flanke des Clock-Signals wird die an den Ausgängen der Matrix anstehende Binärinformation in die erste Stufe des Schieberegisters übernommen und etwaige schon im Register befindlichen Informationen um eine Stufe weitergeschoben.

Ist dieser Vorgang 4 mal abgelaufen, erscheint in der letzten Stufe des Registers für das „Taste betätigt“ Signal der Zustand L. Dieser wird auf die Eingänge des Gatters D1.C zurückgeführt und sperrt dort über den oberen Eingang von D1.A die Erzeugung weiterer Clock-Signale. Weitere Tastenbetätigungen bleiben also wirkungslos, bis das Schieberegister über die Reset-Funktion gelöscht wird.

Du musst übrigens bei der Anordnung der 7.Segment-Anzeigen darauf achten, dass der Inhalt der 1. Stufe des Schieberegisters in der niedrigsten Dezimalstelle angezeigt wird und der Inhalt der 4. Stufe in der höchsten Dezimalstelle.

  1. Welcher Pol kommt an das Tastenfeld, Plus oder?

Siehe Zeichnung

Gäbe es auch eine Möglichkeit, das GND an das Tastenfeld kommt?

Im Prinzip ja, aber das würde eine andere Schaltung bedeuten und ich sehe keinen Sinn darin. Du brauchst für die Decoder in jedem Fall ein BCD-Signal in positiver Logik.

Jo das wars dann auch schon…

Jo, bei mir für einige Zeit auch. In Frankfurt ist Museumsuferfest, da bin ich für die nächste Zeit voll geerdet.

Gruß Moritz

Gruß merimies

So Leute,
ich habe nun einen Schaltplan für die steuerung der 7-segment-anzeigen durch ein Tastenfled gezeichnet. Nur irgendwie kommt er mir um die IC´s herum etwas „kahl“ vor. Wäre supernett von euch wenn ihr ihn mal kontrolliren könntet, sodass nachher nichts an- bzw. durchbrennt.
Außerdem hat man mir gesagt das man die beiden IC´s 4015 nach der 4. Eingabe resetten muss. Es wäre toll wenn ihr mit auch bei diesem problem helfen könnt, denn sie müssen laut datenblatt immer an masse liegen das der IC funktioniert, und würde ich da dann mit + drangehen um sie zu resetten würde das ja einen Kurzschluss geben!!

Da ich nicht weiß wie ich den Schaltplan hier rein stellen kann, würde ich ihn euch nach hinterlass eurer eMail-adresse zuschicken.

Danke im vorraus
Gruß Moritz

So Leute,
ich habe nun einen Schaltplan für die steuerung der 7-segment-anzeigen durch ein Tastenfled gezeichnet. Es wäre toll wenn ihr mir auch bei diesem problem helfen könnt, denn sie müssen laut datenblatt immer an masse liegen, damit der IC funktioniert, und würde ich da dann mit + drangehen um sie zu resetten würde das ja einen Kurzschluss geben!!

Da ich nicht weiß wie ich den Schaltplan hier rein stellen kann, würde ich ihn euch nach hinterlass eurer eMail-adresse zuschicken.

Danke im Voraus
Gruß Moritz

Hallo Moritz

genau so, wie Deine E.Mail.Adresse
[email protected]
direkt unter der Kopfzeile jedes Deiner Postings steht, steht sie dort auch bei jedem Anderen.

Schau mal genau hin, da steht bei mir
[email protected]

MfG derselbe.