Forum: Mikrocontroller und Digitale Elektronik 7-Segment Display mit ATmega ansteuern


von Ralf J. (hennes008)


Lesenswert?

Hallo,

ich möchte ein 8-Bit Signal sowohl über acht LEDs anzeigen, als auch 
hexadezimal über zwei 7-Segment Displays. Zur Bewältigung letzteres habe 
ich mich für einen ATmega8 im DIL-Gehäuse entschieden, klein genug, aber 
ausreichend Ports.

Laut Datenblatt darf dieser Chip maximal 200mA nach Grund ziehen, 
maximal 100mA im Port A, maximal 100mA in den restlichen Ports und 
maximal 40mA je Pin. Wenn ich nun an Port A und an einen der anderen 
Ports über Widerstände die beiden Displays mit gemeinsamer Anode 
anschließe, gehe ich dann Recht in der Annahme, dass ich je Segment 
maximal 14mA schalten kann und keine Treiber-Chips benötige, oder 
übersehe ich hier was und der Mikrocontroller kokelt mir weg?

Viele Grüße
Hennes

von MaWin (Gast)


Lesenswert?

Geht schon, zumal die meisten 7-Segment mit 10mA pro Segment zufrieden 
sind, also 140mA über GND ausreichen. Die 8 Einzel-LEDS kannst du ja 
nach GND schalten so dass deren Strom über VCC des ATmeg8 fliesst.

von Ralf J. (hennes008)


Lesenswert?

Hallo MaWin,

die 8 einzelnen LEDs haben mit dem Mikrocontroller nichts zu tun. Ich 
greife an denen (vor dem Widerstand) nur das Signal für den ATmega ab.

Viele Grüße
Hennes

von DJShadowman (Gast)


Lesenswert?

Signale vor den Widerständen abgreifen ?
ich denke Du willst die Anzeigen mit dem AVR ansteuern und nicht 
Abfragen.
Wenn das ganze über Zeitmultiplex machst kannst Du entweder alle 
Segmente an einen Port anschließen und die Anoden der Anzeigen jeweils 
über nen Transistor und 3 I/O-Leitungen steuern.
Oder man schließt sogar die Anoden direkt an drei I/O-Leitungen an und 
programmiert das Zeitmultiplex so, daß z.b. nur eine LED zur Zeit 
leuchtet. So wirds gerne bei minimalistischen Projekten gemacht bei 
denen zb. ein 2313 eine 8x8 Matrix steuert ohne externe Beschaltung.

von Steve (Gast)


Lesenswert?

CD4511
verringert die anzahl der ausgabepins und liefert zusätzlich eigenen 
treiberstrom

von Ralf J. (hennes008)


Lesenswert?

Hi,

es scheint, ich habe mich in meinem ursprünglichen Posting nicht 
deutlich genug ausgedrückt:
Ich möchte acht binäre Signale über LEDs anzeigen. Dafür brauche ich 
tatsächlich keinen Mikrocontroller, sondern lediglich acht Widerstände.
Vor den Widerständen werden die acht Signale im TTL-Pegel abgegriffen 
und dem Mikrocontroller zugeführt. Der soll das binäre Datenwort 
hexadezimal auf zwei 7-Segment Displays darstellen. Acht Eingänge, 14 
Ausgänge.

Viele Grüße
Hennes

von Karl H. (kbuchegg)


Lesenswert?

Ralf Jonas schrieb:
> Hi,
>
> es scheint, ich habe mich in meinem ursprünglichen Posting nicht
> deutlich genug ausgedrückt:

Ganz im Gegenteil. Du hast zu viele INformationen gegeben, die zur Sache 
nichts beitragen.

> Ich möchte acht binäre Signale über LEDs anzeigen.

Schön. Diese LED interessieren aber niemanden, wenn sie nicht am µC 
hängen und vom µC angesteuert werden.

> Vor den Widerständen werden die acht Signale im TTL-Pegel abgegriffen
> und dem Mikrocontroller zugeführt. Der soll das binäre Datenwort
> hexadezimal auf zwei 7-Segment Displays darstellen. Acht Eingänge, 14
> Ausgänge.

Kann man machen.
Man kann auch mutiplexen, was die Anzahl an benötigten Pins etwas 
drückt, allerdings nicht den Strom.

von Ralf J. (hennes008)


Lesenswert?

Hi,

CD4511, super Idee!!
Wer findet den Fehler?

Viele Grüße
Hennes

von Michael_ (Gast)


Lesenswert?

Schau dir doch mal die Applikation AVR242 an.
Was dir zu viel ist, kannst du ja weglassen.

von Ralf J. (hennes008)


Lesenswert?

Hi,

> Ganz im Gegenteil. Du hast zu viele INformationen gegeben, die zur Sache
> nichts beitragen.

Ach so, ich habe euch verwirrt  :-)

>> Ich möchte acht binäre Signale über LEDs anzeigen.
>
> Schön. Diese LED interessieren aber niemanden, wenn sie nicht am µC
> hängen und vom µC angesteuert werden.

Ich wollt halt nur schildern, wo ich die Daten her bekomme.

> Man kann auch mutiplexen, was die Anzahl an benötigten Pins etwas
> drückt, allerdings nicht den Strom.

Siehste wohl: Und DAS wiederum interessiert MICH nicht die Bohne  :-)
Ich wollte nur wissen, ob der ATmega genug Strom für zwei 7-Segment 
Displays aufbringen kann.

Viele Grüße
Hennes

von Ralf J. (hennes008)


Lesenswert?

Hi Michael_ ,

> Schau dir doch mal die Applikation AVR242 an.
> Was dir zu viel ist, kannst du ja weglassen.

dann lass ich doch mal das Multiplexen weg.

Viele Grüße
Hennes

von Sven B. (scummos)


Lesenswert?

Die Dinger leuchten auch mit 8 mA pro Segment schon ziemlich hell, also 
sollte das kein Problem sein.

von Ralf J. (hennes008)


Lesenswert?

Hi Sven B.,

> Die Dinger leuchten auch mit 8 mA pro Segment schon ziemlich hell, also
> sollte das kein Problem sein.

ich habe das Ganze jetzt mal für 10 mA ausgelegt, wie es schon MaWin in 
seinem Posting empfohlen hat. Laut Datenblatt von Kingbright verhält 
sich die Helligkeit nahezu linear mit dem Strom.
Ich denke, ich werde es einfach mal ausprobieren mit 10 mA.

Viele Grüße
Hennes

von DingsDa (Gast)


Lesenswert?

Ralf Jonas schrieb:
> Der soll das binäre Datenwort
> hexadezimal auf zwei 7-Segment Displays darstellen.

Ralf Jonas schrieb:
> CD4511, super Idee!!
> Wer findet den Fehler?

Da ist kein Fehler! Warum willst Du mit einem uC herum experimentieren,
wenn Du schon Deine 8 LEDs binär anzeigen?
Hänge die Eingänge von zwei 4511er an die 8 LEDs und an die Ausgänge 
zwei
7-Segment Anzeigen. Fertig!
Ohne uC Gedönse.

von der alte Hanns (Gast)


Lesenswert?

>mich für einen ATmega8 im DIL-Gehäuse entschieden
>Wenn ich nun an Port A und an einen der anderen Ports

?

von Bernhard F. (bernhard_fr)


Lesenswert?

Ralf Jonas schrieb:
> Hi,
>
> CD4511, super Idee!!
> Wer findet den Fehler?
>
> Viele Grüße
> Hennes

ich ich ich

Datenblatt Seite 4 oben Rechts.

Für die Strom-Geschichte empfehle ich Datenblatt S235 und S236 
insbesondere die Notes 3 und 4:

http://www.atmel.com/Images/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf

Das mit den 14* 10mA solte gut passen.

Eventuell die eine 7 Segment Anzeige an VCC hängen und dann mit den Pins 
auf LOW ziehen aber auch das ist eigentlich nicht notwendig...

von Axel S. (a-za-z0-9)


Lesenswert?

DingsDa schrieb:
> Ralf Jonas schrieb:
...
>>> hexadezimal auf zwei 7-Segment Displays darstellen.
...
>> CD4511, super Idee!!
>> Wer findet den Fehler?
>
> Da ist kein Fehler!

Außer vielleicht die kleine Unschönheit, daß der 4511 die Pseudotetraden 
(0xA .. 0xF) nicht anzeigt? Es müßte schon ein 40511 aus der Tätärä sein 
oder ein 4311.


XL

von Ralf J. (hennes008)


Lesenswert?

Hallo der alte Hanns ,

>>mich für einen ATmega8 im DIL-Gehäuse entschieden
>>Wenn ich nun an Port A und an einen der anderen Ports
>
> ?

Das ist schon richtig so. An Port A und einem beliebigen anderen Port...
Port A kann 100 mA nach Ground schalten. Die restlichen Ports zusammen 
ebenfalls.
Folglich muss ein 7-Segment Display an Port A, das andere an einen 
(beliebigen) anderen Port.

Ich werde mir aber auch mal die anderen beiden genannten ICs anschauen, 
den 4311 und den 40511.

Viele Grüße
Hennes

von der alte Hanns (Gast)


Lesenswert?

Ich finde beim besten Willen keinen Port A beim ATmega8. Ausserdem sind 
Sie mit 8+2*7 Pins (ohne Multiplexen) am Limit, ich hätte gerne etwas 
Reserve.

von Ralf J. (hennes008)


Lesenswert?

Hallo der alte Hanns,

> Ich finde beim besten Willen keinen Port A beim ATmega8. Ausserdem sind
> Sie mit 8+2*7 Pins (ohne Multiplexen) am Limit, ich hätte gerne etwas
> Reserve.

sollte ich ins falsche PDF Dokument geschaut haben? Das muss ich gleich 
noch mal verifizieren, danke für den Hinweis.
Reserve brauche ich nicht: Das Ding soll wirklich nur 8 Bit hexadezimal 
darstellen. Ende.
Gäbe es sowas fertig z.b. bei reichelt und auch noch preiswerter als 
einen ATmel, würde ich sogar noch eher das nehmen, weil kein 
Programmieraufwand.

Viele Grüße
Hennes

von Ralf J. (hennes008)


Lesenswert?

Hallo der alte Hanns ,

> Ich finde beim besten Willen keinen Port A beim ATmega8.

da habe ich doch tatsächlich das Dokument des ATmega 16 gehabt, mea 
culpa.
Beim ATmega 8 sind das die Portpins C0-C5, die zusammen sowohl 100 mA 
sinken als auch sourcen können. Portpin C6 und die restlichen Pins 
zusammen noch einmal 200mA.
Somit ist die Verwendung der Ports nahezu beliebig für diesen Fall.
Danke für den Hinweis!

Viele Grüße
Hennes

von chris (Gast)


Lesenswert?

Ralf Jonas schrieb:
> Portpin C6

das ist allerdings der RESET-Pin.
Den kannst du zwar per Fuse deaktivieren und dann als IO-Pin nutzen, 
aber dann kannst du nicht mehr über ISP programmieren.
ALso vorher lieber nen Bootloader reinflashen.

von der alte Hanns (Gast)


Lesenswert?

>das ist allerdings der RESET-Pin.

C6 wird ja nicht benötigt. 28-6 = 22 = 8+2*7, das reicht.

von Ralf J. (hennes008)


Lesenswert?

Hi chris,

guter Einwand, das mit dem Pin C6. Da ich eh einen Pin übrig habe, 
sollte ich den besser frei lassen.

“Immer ein Pin übrig behalten“  :-)

Viele Grüße
Hennes

von c-hater (Gast)


Lesenswert?

Axel Schwenke schrieb:

> Außer vielleicht die kleine Unschönheit, daß der 4511 die Pseudotetraden
> (0xA .. 0xF) nicht anzeigt?

Ein V4511 tut das.

Tja, von der DDR lernen, heißt Siegen lernen. Die Jungs wußten, was 
wirklich wichtig ist ;o)

von der alte Hanns (Gast)


Lesenswert?

Jaja, den Sozialismus in seinem Lauf halten weder Ochs noch Esel auf.
Muss es also etwas anderes gewesen sein.

von Axel S. (a-za-z0-9)


Lesenswert?

c-hater schrieb:
> Axel Schwenke schrieb:
>
>> Außer vielleicht die kleine Unschönheit, daß der 4511 die Pseudotetraden
>> (0xA .. 0xF) nicht anzeigt?
>
> Ein V4511 tut das.

Der müßte dann V40511 heißen. Oder U40511. Wwobei es den offiziell nicht 
gab. Für die Unwissenden: der Präfix U bzw. V steht für den erlaubten 
Temperaturbereich. U ist normal (0..+70°c) und V erweitert (-25..+85°C). 
Allerdings gab es wohl in der endgültigen Serie nur noch V Typen. Ich 
habe aber auch noch ein paar U40098.

> Tja, von der DDR lernen, heißt Siegen lernen. Die Jungs wußten, was
> wirklich wichtig ist ;o)

Das wissen wir immer noch.


XL

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.