Forum: Mikrocontroller und Digitale Elektronik AVR Multiplexing 7 Segment-Anzeigen


von Flo D. (floflovaldo)


Lesenswert?

Hallo zusammen,

ich habe vor eine 4 stellige 7 Segment-Anzeige mit einem ATmega328 
anzusteuern. Leider konnte ich nicht wie oft empfohlen den kompletten 
PORTD nehmen, da ich beispielsweise die Serielle Schnittstelle brauche. 
Zuerdt nun mal die Frage. Ist es so trotzdem (aufgeteilt auf PORTC und 
PORTD) relativ gut machbar, oder sollte ich auf einen anderen uC 
umsteigen Beispielsweise der 40-Pin ATmega32 bei dem es dann mit einem 
Port wahrscheinlich klappen würde.

Würde mich sehr über eure Hilfe freuen.

Viele Grüße
Florian

von Michael B. (laberkopp)


Lesenswert?

Florian D. schrieb:
> Ist es so trotzdem (aufgeteilt auf PORTC und PORTD) relativ gut machbar

Ja.

Man kann die Bits einzeln setzen, siehe Arduino digitalWrite

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1

von Frank S. (_frank_s_)


Lesenswert?

Florian D. schrieb:
> 4 stellige 7 Segment-Anzeige

Hallo Florian,

4 Stellen mit 7(8=dp?) Segmenten macht 11 Pins. Dass passt so noch nicht 
auf einen Port. BCD-Codierung der Segmente wäre möglich, dann reicht der 
Port gerade so.
Ich nutze für Anoden einen Port und für Kathoden einen Port, das reicht 
mir meist. Da ist es egal, welchen Port man nimmt, wenn nicht spezielle 
Pins für andere Spielereien verwendet werden ( Interrupts, RX/TX, ... ).

Ansonsten bin ich Cheffe von's de Pins. Was ich plane, setze ich dann 
um.

Wenn nicht zwingend vorgeschrieben ist, welchen Port du nehmen sollst, 
ist es deine freie Entscheidung. ( Manchmal ist für das Layout 
empfehlenswert)

MfG von der Spree
Frank

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Florian D. schrieb:
> Ist es so trotzdem (aufgeteilt auf PORTC und
> PORTD) relativ gut machbar,

Es ist gut machbar. Lege die Ansteuerung der beiden Segmente von PD0+PD1 
auf PC0+PC1. Die Digits werden dann mit PC2 - PC5 angesteuert.

von Uwe (de0508)


Angehängte Dateien:

Lesenswert?

Hallo Florian,

ich nutze für die Ansteuerung einer 4x 7/8 Segment LED-Anzeige einen 
attiny2313.

Man kann jedes Bit eines Atmel AVR einzeln ansteuern.
Die in meiner Schaltung verwendeten LED-Anzeigen LTC6553HR sind sehr 
hell, so dass ich hier keine Transistor in den Anoden benötige/ 
verwende.

von Max D. (max_d)


Lesenswert?

Mit Charlieplexing kann man mit 8/9 (ja nachdem ob dp muss) Leitungen 
bis zu 7/8 Displays steuern.

von Michael B. (laberkopp)


Lesenswert?

Max D. schrieb:
> Mit Charlieplexing kann man mit 8/9 (ja nachdem ob dp muss)
> Leitungen bis zu 7/8 Displays steuern.

Kann man. Aber du hast mal wieder nur halb nachgedacht, bevor du den 
allesbesserwissenden Streber raushängen lassen wolltest.

Denn es gehen keine 7-Segment-Displays die man auch sehen können soll.

Denn Charliplexing kann keine externen Transistoren zur Stromverstärkung 
steuern.

Der Aufwand der Doppelbelegung der Pins ist zu hoch:
1
 +5V -+----+----+-----+
2
      |    |    |     |
3
     10k  10k   |     |
4
      |    +---|+\    |S
5
      |    |   |  >--|I LogicLevel PMOSFET wie IRF7307
6
      +----(---|-/    |
7
      |    |          |
8
 uC --+   10k         +--- three state power Ausgang
9
      |    |          |
10
      +----(---|+}    |
11
      |    |   |  >--|I LogicLevel NMOSFET wie IRF7307
12
      |    +---|-/    |S
13
     10k  10k   |     |
14
      |    |    |     |
15
 GND -+----+----+-----+

von Hubert (Gast)


Lesenswert?

> Kann man. Aber du hast mal wieder nur halb nachgedacht, bevor du den
> allesbesserwissenden Streber raushängen lassen wolltest.

Bei dir ist die Frage nach der Kinderstube überflüssig: du hattest 
einfach keine. Daher wohl auch der Nick laberkopp.

von Michael B. (laberkopp)


Lesenswert?

Uwe S. schrieb:

> Die in meiner Schaltung verwendeten LED-Anzeigen LTC6553HR sind sehr
> hell, so dass ich hier keine Transistor in den Anoden benötige/
> verwende.

Das ist natürlich gelogen.

Du hast 270 Ohm Widerstände verwendet, das zeigt, daß du mit niedrigem 
Strom nicht zufrieden warst.

5V, rotes Display mit 2.1V, macht 10mA pro Segment und 7 Segmente macht 
70mA Belastung für den gemeinsamen Digitanschluss. Doch ein AVR soll nur 
20mA liefern, begrenzt irgendwo bei 40mA und wird die 70mA nicht ohne 
massiven Spannungsabfall bringen, also werden keine70mA fliessen sondern 
je nach Modell so 40mA.

Eine Zoffer 8 hat also deutlich dunklere Segmente als eine Ziffer 1.

So eine Schaltung ist Käse.

Wenn sie wirklich hell genug wäre, hättest du 1k als Vorwiderstand und 
damit nur 20mA Digitstrom und 2.8mA Segmentstrom der ja nur 1/4 der Zeit 
fliesst also Displays effektiv so hell (oder dunkel) als ob sie mit 
700uA Dauerstrom laufen.

Das war dir offenbar nicht hell genug.

Schaltung und Bauteile also unpassend.

Es gab hier im Forum auch mal ein schönes Bild so eine hell/dunkel 
laufenden Anzeige.

von m.n. (Gast)


Lesenswert?

Michael B. schrieb:
> Es gab hier im Forum auch mal ein schönes Bild so eine hell/dunkel
> laufenden Anzeige.

Das war hier: Beitrag "Re: 7-Segment Anzeige 3-3tellig"
Da meinte ein 'laberkopp', die Anzeigen wären unterschiedlich hell.
Was soll man sagen: "Der Mann hat Ahnung!" (von nichts)

von Michael B. (laberkopp)


Lesenswert?

Hubert schrieb:

> Bei dir ist die Frage nach der Kinderstube überflüssig: du hattest
> einfach keine. Daher wohl auch der Nick laberkopp.

Zumindest bin ich im Gegensatz zu dir schon erwachsen
und kann Beiträge erkennen, die nichts mit der Frage "kann ich 
Segmentanschlüsse auf verschiedene Ports verteilen" zu tun haben sondern 
nur präsentieren sollen daß der Beitragsschreiber auch irgendetwas mal 
gelesen (aber nicht verstanden) hat was hier zwar nicht hinpasst er aber 
unbedingt mal loswerden wollte, so dass es nur den noise erhöht und den 
Fragenden verwirrt.

Aber vermutlich gilts du in deiner Schule auch als Besserwisser, mur so 
ist dein Triggern auf Reizwörter zu verstehen.

von Michael B. (laberkopp)


Lesenswert?

m.n. schrieb:
> Da meinte ein 'laberkopp', die Anzeigen wären unterschiedlich hell.
> Was soll man sagen: "Der Mann hat Ahnung!" (von nichts)

Na m.n. , immer noch am knabbern an der Feststellung

Beitrag "Re: 7-Segment Anzeige 3-3tellig"
"Diese von dir ignorierten Grundlagen der Elektronik sind aber
hinlänglich bekannt."

von Peter D. (peda)


Lesenswert?

Michael B. schrieb:
> Es gab hier im Forum auch mal ein schönes Bild so eine hell/dunkel
> laufenden Anzeige.

https://www.mikrocontroller.net/attachment/93262/224-2405_IMG.JPG
Beitrag "Re: Charlieplexing Infos"

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Michael B. schrieb:
> Na m.n. , immer noch am knabbern an der Feststellung

Nein, ich bin nicht "am Knabbern", sondern knabbere Amarettini, trinke 
dazu einen Kaffee und freue mich über den Regen :-)

Zum Multiplexen ohne Treibertransistoren:
Lt. Datenblatt soll der max. I/O-Strom <= 40 mA liegen. Beim 4-fach 
Multiplexen und 8 benutzten Segmenten ergibt sich pro Segment ein 
Spitzenstrom von 5 mA, was effektiv 1,25 mA sind. Rechnet man pro 
Segment mit einer Durchlaßspannung von 1,8 V und 0,5 V Spannungsabfall 
an den Digittreibern bleiben bei Vcc = 5 V rund 2,7 V Spannungsabfall am 
Segmentwiderstand: 2,7 V / 5 mA = 540 Ohm.

Die oben genannten 270 Ohm ergeben einen eff. Segmentstrom von rund 2,5 
mA, womit die Anzeige sicherlich gut lesbar ist. Daß der Digitstrom mit 
80 mA dann außerhalb der Angaben im Datenblatt liegt, ist nicht 'schön'. 
Das soll aber jeder für sich entscheiden, ob er das mag oder nicht.
Ich stehe da eher auf Luxus und gebe noch einen Groschen für 4 x 
Transistoren aus.

von Peter D. (peda)


Lesenswert?

Florian D. schrieb:
> Ist es so trotzdem (aufgeteilt auf PORTC und
> PORTD) relativ gut machbar

Ja, ist kein Problem.
Die Segmente sollte man so aufteilen, daß sie auf unterschiedlichen Bits 
der 2 Ports liegen, dann kommt man mit wenigen AND/OR aus und muß nicht 
schieben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.