www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Mega8 LED-Matrix


Autor: Christian Planteu (planteu)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Einen schönen guten Tag erstmal an alle,

Ich habe mir in meiner Freizeit eine LED Matrix mit 16x7 LED aufgebaut 
mit einem AVR Mega8-P und als Schieberegister einen 74HCT154N. Die 
Verbindungen zu den LED's gehen über ein Kabel zu einer anderen Platine. 
Das  Projekt ist fertig aufgeaut, nur mein Problem ist jetzt die 
Programmierung.
Ich habe schon zahlreiche Seiten durchgestöbert, nur richtige 
Informationen oder ein Beispielprogramm leider nicht.
Und desshalb meine Frage: Könnte sich bitte jemand diese Schaltung 
ansehen und mir vielleicht ein kleines Beispielprog. schreiben fürs 
BASCOM-AVR Studio mit ein paar Komentaren das ich dies selbstständig 
weiterführen kann.
Oder vielleicht nen Link das ich mich dannach auskenne.

Bitte Danke schon mal im Vorraus.

mfg

Planteu

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein 74HCT154 ist kein Schieberegister, sondern ein 4 zu 16 Dekoder!

Nimm zwei 74xx595 !

Autor: Markus F. (civicbcc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst du

BASCOM AVR
oder
AVR STUDIO

bzw. basic, c oder assembler?

Autor: Christian Planteu (planteu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, Bascom AVR, und ich versuchs mal in C. Ich habe jetzt gerade 
dieSchaltung an Spannung gelegt, die Spannung für den Mega8 beim Sockel 
stimmt 5,25V, nur das einzige Problem, wenn ich die LED's anschließe 
leuchten schon ein paar, ich glaub fast das das Kabel damit zu tun hat, 
den wenn ich am Kabel ziehe oder sonstige Bewegungen mache verändern 
sich die LED's die leuchten.
Und ich habe jezt leider nicht die Möglichkeit den 74HCT154N durch was 
andres auszutauschen.

Ich hoffe Ihr könnt mir weiterhelfen

mfg Planteu

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Und ich habe jezt leider nicht die Möglichkeit den 74HCT154N durch was
>>andres auszutauschen.

Das kann auch über die Ansteuerung (Software) gelöst werden.
Dabei musst du Spalten anstelle von Zeilen multiplexen.

PS: Nimm 5V nicht 5,25V

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das  Projekt ist fertig aufgeaut

Das ist nicht gut...

Denn damit wirst Du sehr unterschiedliche Pixel-Helligkeiten erreichen. 
Das Problem ist Folgendes:

Du hast 7 Zeilentreiber mit Transistoren, die Du gleichzeitig in 
verschiedenen Kombinationen schalten kannst. In den Zeilenleitungen 
sind keine Strombegrenzungswiderstände.

Du hast 16 Spaltenleitungen ohne Treibertransistoren, aber mit 
Strombegrenzungswiderständen, von denen aufgrund des 4-zu-16-Decoders 
immer nur eine Spalte aktiv sein kann.

Erstens kann der Spaltendecoder den Strom für bis zu 7 LEDs nicht 
aufbringen, zweitens bewirkt der Strombegrenzungswiderstand eine 
unterschiedliche Helligkeit, je nachdem, wieviele LEDs per Zeilentreiber 
eingeschaltet sind. Bei unterschiedlichen LEDs (Streuung der 
Flussspannungswerte) kann es sogar passieren, dass man einzelne LEDs 
nicht sieht.

Aufgrund der untauglichen Hardware ist es sinnfrei, Programmvorschläge 
zu machen.

Umbauvorschlag:
Setze in die 7 Zeilenleitungen nur Strombegrenzungswiderstände 
(Transistoren rausnehmen) und statte die Spaltenleitungen mit 16 
Treibertransistoren (z.B. 2 Stück ULN2803) aus. Im Programm machst Du 
dann Multiplexing. Du rufst also in regelmäßigen Zeitabständen (am 
besten per Timer synchronisiert, ist besser als WAIT xyz) eine Routine 
auf, die eine 0 in den Zeilenport schreibt, dann den Spaltenzähler 
erhöht, dann das (zur Spalte gehörende) neue Bitmuster an den Zeilenport 
ausgibt und dann zur Tagesordnung zurückkehrt, um andere triviale 
Aufgaben zu erledigen, wie z.B. das Bereitstellen der Anzeige-Bitmuster 
aus einem ASCII-Text und einem Zeichensatz (auch als Laufschrift 
machbar).

...

Autor: Christian Planteu (planteu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja das mit die 5,25V und den schon leuchtenden LED'S ist schon geklärt. 
Mein Projektpartner hat die Transistoren falschrum reingelötet, jezt hab 
ich nur noch das Problem mit der Programierung.
Kann mir bitte jemand ein winziges Beispielprog. geben oder schreiben, 
nur zum testen, geradesoviel das ein paar LED's leuchten mehr nicht, auf 
den Rest komm ich dann wahrscheinlich von selbst, ich brauch ja nur 
einen Anfangspunkt.

mfg

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mein Projektpartner hat die Transistoren falschrum reingelötet, jezt hab
> ich nur noch das Problem mit der Programierung.

Falsch...

Deine Schaltung ist zwar geeignet, einzelne LEDs leuchten zu lassen, 
aber ein ordentliches Multiplexing der Spalten oder Zeilen ist damit 
nicht möglich. Siehe meinen obigen Beitrag.

...

Autor: Christian Planteu (planteu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, danke auf jeden fall für die schnelle Hilfe, vielleicht bekomm 
ichs ja noch hin, und auch wenn nur einzelne LED's leuchten, ich wills 
nur mal zum Programmieren schaffen.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Planteu wrote:
> naja, danke auf jeden fall für die schnelle Hilfe, vielleicht bekomm
> ichs ja noch hin, und auch wenn nur einzelne LED's leuchten, ich wills
> nur mal zum Programmieren schaffen.

Auch wenn es nicht wirklich Sinn macht, schalte Zeilenport und die 
verwendeten Bits des Spaltenports auf Ausgang (Einsen in die 
DDR-Register), lege die Nummer der Spalte, die ausgewählt werden soll, 
an den Spaltenport (PORT-Register) und das Bitmuster, welche LEDs der 
Spalte leuchten sollen, an den Zeilenport (PORT-Register).

Da ich im Browser den Text (und damit die Pinbezeichnungen) Deines 
Schaltplanes nicht lesen kann, aber keine Lust habe, mir jedes PNG-Bild 
herunterzuladen und mir die Platte zuzumüllen, kann ich jetzt keine 
genaueren Angaben zu den Portregisternamen machen.

Achja, schalte nicht zuviele LEDs einer Spalte auf einmal ein...

Und beginne das nächste Projekt mit einer besseren Planung... ;-)

...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> (z.B. 2 Stück ULN2803)

Das war natürlich Quatsch, ich hatte nicht bedacht, dass der Decoder 
L-aktive Ausgänge hat. Also nehme ich alles zurück und behaupte das 
Gegenteil... (oder auch nicht...)

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.