Wenn ich meinen AVR direkt an den BCD/7Seg. Decoder anschliessen würde
dann bräuchte ich ja für jedes Segment 4 Ports. Wäre es möglich die
Daten einfach seriell aus einem Port an einen Seriell/parallel decoder
und erst dann an BCD/7Seg. Decoder zu schicken?
Einige Unklarheiten im Bezug auf Multiplexen hab ich noch:
Beim obigen Beispiel würde ja auch ein multiplexer keine Port einsparung
bringen, da die Daten immer noch von 4 Port an den Multiplexer gehen und
erst dann werden Leitungen eingespart, stimmt das? Also was bring dann
ein Multiplexer?
Fritz 7
Bei einer vierstelligen Anzeige mit Dezimalpunkt in jeder Stelle sind
zur Ansteuerung ohne zusätzliche Hardware (ausgenommen 8 Widerstände zur
Strombegrenzung) 12 Portleitungen (8 Segmente, 4 Stellen notwendig).
Wenn du Portleitungen sparen willst, kannst du aber für die
Segmentansteuerung ein Schieberegister 74HCT595 einsetzen. Dann reichen
zur Segmentansteuerung 3 Portleitungen.
Bei 4 bis 6 Euro in kleinen Stückzeilen, sind mir die für den Einsatz
mit einem Mikrocontroller zu teuer und widersprechen ja auch dem
Konzept möchlichst wenig Chips auf einem Board. Ein AVR bei Bedarf eine
Nummer grösser gewählt ist allemal billiger.
Hallo Fritz.
Wenn du serielle Daten vom AVR in parallele Daten zu den 7Segement
Anzeigen umwandeln willst hilft ein Multiplexer nicht weiter, weil der
ja eben parallele Daten in Serielle umwandelt. Nun könnte man
entsprechend einen DEmultiplexer verwenden, aber das macht wenig sinn,
weil du für den noch die Adress-Eingänge brauchst. Viel einfacher, wie
schon erwähnt: ein Schieberegister. Seriellen Eingang mit 8 Takten = 8
bit füttern, dann nach 8 Takten den parallelen Ausgang des Registers
auslesen. Der Ausgang darf natürlich nur einmal jeweils nach dem 8ten
Takt gelesen werden.
Mein Vorschlag: 74HC164, Datenblatt dazu gibts bei Google.
Und wenn du mehr als 8 Ausgänge brauchst, einfach beliebig viele
Register in Serie schalten. So kannst du auch 1 Port des uCs verwenden
um z.B. 64 Datenausgänge zu schaffen, in dem du 8x 8bit Schieberegister
verwendest...
Moritz
Das sind noch elementarer ausgedrückt 8 D-FlipFlop. Die Eingänge dieser
sind beim 595 mit den Ausgängen des Schieberegister verknüpft. Dessen
Zustand wird bei
positiver Taktflanke übernommen. Dieses hat den Vorteil, die Daten
können seriell ausgegeben werden und erst nach vollständiger Ausgabe
werden die Daten auf die Ausgänge geschaltet.
Das ist eine Anzeige, wo alle Segmente A..G, DP von jedem Digit schon
intern parallel geschaltet sind. Man kann natürlich auch 5 (oder wieviel
auch immer) einzelne Anzeigen nehmen und die dann entsprechend
verdrahten.
Im Beispiel nehme ich einen Multiplextakt von 1,2kHz (10MHz / 8192),
damit ist kein Flackern mehr warnehmbar.
Peter
Mein Vorschlag:
4 x 7 Segment common Anode ( + Segmentwiderstände )
4 x 74HC4094 kaskadieren(gemeinsame Clockleitung, Data-leitung von einem
Ausgang zum nächsten Eingang
führen,Strobe Leitungen gemeinsam)EO auf Vcc.
3 Portleitungen riskieren (data,clock,strobe)
Programm:
STR auf low.
Data auf low,bzw high (wird bei positiver Clock Flanke ins Register
übernommen)
32 Clocks (4*8) senden
STR Leitung kurz auf high setzen und schon sind die
Segmente an oder aus.
- Man kann mit maximalem AVR speed arbeiten.
- Anzeige ist statisch ( kein flackern)
- Ein HC4094 Ausgang kann fast 40mA treiben
- Applikationsschaltung bei Philips vorhanden (HEF4094 Datenblatt)
- 7 Segmentcodetabelle im AVR (andere Codes möglich)
- 1 74HC4094 kostet weit unter 1 EUR
mfg wolli_r ( http://www.tec-shop.de )
Eigentlich lautete die Frage Port sparen bei Siebsegment-Ansteuerung und
jetzt werden wahre Bauteilegräber mit 4 diskreten ICs und bis zu 32
zusätzlichen Segmentwiderständer konstruiert. Was hat das mit
Mikrocontrollern zu tun.
Hi mikki,
wenn 3 Leitungen zuviel sind, nimmt man am besten die neuen 4 stelligen
7-Segmentanzeigen CAQX104
mit nur 2 Leitungen Vcc/data und GND.
Diese Anzeigen haben eine 1 Drahtschnittstelle (DALLAS kompatibel) über
die man außerdem noch Segmenthöhe und -Farbe frei programmieren kann.
Im Push-Pull Mode betrieben, kann der AVR direkt den Versorgungsstrom
liefern, da die neuen Anzeigen im 4-stelligen Modus nur 0,23µA
Versorgungsstrom ziehen.
Im read-back Modus kann man die Umgebungshelligkeit ermitteln und mit
dem AVR dann die Segmenthelligkeit einstellen.
Bei Google hatte ich die Teile kürzlich gefunden.
Eine Nachfrage beim Hersteller ergab daß das kpl. Teil nur 1,85 EUR
kosten soll. Kostenlose Muster können auf Anfrage geliefert werden (max
10 Stück). Da ich aus versehen meine Bookmarks gelöscht habe, kann ich
den Hersteller nicht mehr finden. Bei Google kann ich auch nichts mehr
finden. Merkwürdig...
mfg wolli_r ;-)
In derartige Anzeige zu dem Preis hört sich an wie ein Märchen. Ich
hatte mich auch schon mal im Bereich 7 Segmentanzeigen mit serieller
Ansteuerung umgeschaut, die Hersteller die ich damals ausfindig mach
konnte, wollte aber so 8 bis 12 Euro für 4 stellig bei 10 mm Höhe und 50
bis 100 Stck Abnahme haben, daher bevorzuge ich nach wie vor die
Simpellösung 8 Portleitungen für die Segmente und 4 für die Stellen.
Ist platzsparend und preiswert.
Hallo Mikki,
bin voll Deiner Meinung.
Ich hatte Fritz so verstanden, daß er erstmal nur wissen wollte, wie
eine Multiplexanzeige prinzipiell verschaltet wird.
Wieviel Pins er verwenden will geht nirgends draus hervor, nur daß es
weniger als 16 sein sollten.
Hallo wolli_r,
da ist Dir wohl das Komma verrutscht:
Der garantierte Betriebsstrom bei allen 74HCxx ist nur max 4mA.
Der Grenzstrom ist 25mA, aber mit der Bemerkung: "IC wird noch nicht
zerstört aber Funktion wird nicht garantiert."
The RATINGS table (Limiting values in accordance with the Absolute
Maximum System - IEC134) lists the
maximum limits to which the device can be subjected
without damage. This doesnt imply that the device will function at
these extreme conditions, only that, when these conditions are removed
and the device operated within the Recommended Operating Conditions, it
will still be functional and its useful life wont have been shortened.
Für mehr Strom muß man die 74ACxx nehmen (max 24mA).
Peter
@peter
ein 74hcxxx mit 40 mA spezifiziert habe ich auch noch nicht gesehen. Mit
den garantierten Strömen wagen sich die unterschiedlichen Hersteller
allerdings unter-
schiedlich weit vor so spezifiziert Philips noch garantierte Werte bei
7,8 mA.
Im Grunde hab ich alle Ports des 8515 frei. Ich möchte aber so wenig wie
möglich verwenden. Ich habe vor 6 Anzeigen anzusteuern. Für sekunden und
stunden will ich je zwei Anzeigen nehmen.
Mir ist immer noch nicht klar wie das Multiplexen funktioniert!
Was für IC gibts dafür? (Nur für Multiplexen!!!)
Die daten für die 7 Seg. anzeigen müssen ja eh parallel also 4 Ports pro
Anzeige an den Multiplexer gegeven werden, ist das richtig?
Danke für das rege Feedback, ich hätte aber gern Antworten auf die
Fragen die ICH gestellt habe!
Wäre nett.
Fritz 7
Also mal zu deiner Frage Anzeigen multiplexen.
Du nimmst z.B.: 6Stück 7 Segmentanzeigen.
Am besten gemeinsame Anode.
Du verbindest alle Segment der verschiedenen Stellen.
z.B.: Segment_a von Digit_0 mit Segment_a von Digit_1 usw.
Über einen Begrenzungswiderstand auf den AVR.
Die gemeinsame Anode Schaltest du über einen Transistor.
Per Software legst du die Zifferninformation für Digit_0 an und
schaltest den dazugehörigen Transistor durch.
Wartest eine kurze Zeit und schaltest wieder ab.
Du legst die Zifferniformation für Digit_1 an und schaltest wieder den
anderen Transitor .....
Naja das ganze Spiel für jede Stelle.
Also im Prinzip leuchtet nur immer eine Stelle (Digit) ... das Auge ist
zu träge dafür es zu erkennen.
Das Problem dabei ist das du dich immer kümmern mußt das die Anzeige
nicht zu flimmern beginnt.
Also nochmals ein Tip von mir ....
ein MAX7221 oder SAA1064 ist sein Geld schon Wert denn der macht das
multiplesen von selbst.
Mal am Wochenende 3 Bier weniger trinken und schon hast du Ihn in deiner
Bastelkiste liegen ;-).
Ich nehme an deine wirkliche Anwendung besteht nicht aus "Zahlen
anzeigen" sondern diese Anzeigen sollen sozusagen "NUR" etwas anzeigen.
Hallo Fritz,
bei einem 8515 würde ich keine weiteren ICs verwenden.
Du brauchst nur 8 Pins für die Segmente und 6 Pins für die Digits.
In die Segmentleitungen kommen die Vorwiderstände zur Strombegrenzung
und die Digitleitungen werden über 6 Transistoren verstärkt.
Meine Schaltung zeigt das Prinzip für 5 Digits.
Das Ansteuern macht der 8515 z.B. im T0 oder T1 Interrupt.
Softwarebeispiele gibt es zuhauf dafür.
Bei Interesse kann ich auch meinen Kode veröffentlichen.
Peter
Die Schaltung von Holger Müller Blech ist quasi das gleiche.
Nur R13..R16 sind überflüssig. In Kollektorschaltung brauchen die
Transistoren keine Basisvorwiderstände.
Peter