PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 9 Duo-LED's am AT90S4433 / Taster



Florian
02.02.2004, 21:17
Hallo!
Ich möchte an meinen AT90S4433 9 Duo-LED's (rot/grün) mit gemeinsamer
Kathode (3 Beine) anschließen.
Das wären ja im Grunde genommen 18 einzelne LED's.
Diese könnte man natürlich einzeln an die I/O's schließen.
Leider brauche ich auch noch Platz für 2 zusätzliche LED's , einen
Piezo-Signalgeber und 12 Taster.
Das wären insgesamt 33 I/O's bzw. 20 LED's + 1 Piezo, 12 Taster.
Wie kann ich alle Komponenten an den AVR anschließen?
Geht das mit diesem Multiplex?
Wenn ja, wie geht das mit dem Multiplex?

Danke für Eure Hilfe!

Hallo-
02.02.2004, 21:46
Hi,

das geht ganz einfach.nim und gatter.

warum wisst ihr sowas nicht?

Florian
02.02.2004, 21:52
Hi Hallo!
Das verstehe ich irgendwie nicht!
Kannst Du mir vielleicht einen Schaltplan oder eine URL geben, wo ich was dazu finde?

Hallo-
02.02.2004, 21:57
ok. hier hab ich einen schaltplan der ist wenn du ihn mit einen ausgang erweiterst noch um einiges größer.

http://mitglied.lycos.de/triac/Zwischenablage02.jpg

Tux
02.02.2004, 22:46
Nur kann man jetzt nicht mehr alle Ausgänge unabhängig voneinander ein bzw. ausschalten.

Flite
03.02.2004, 09:13
Wie wärs mit seriellen Schieberegistern. Dann brauchst du für die LEDs sagen wir 3 Ports. Verwende welche mit Latches, dann flimmern die LEDs noch nicht mal ...

Kommt natürlich auf die Anwendung an, aber ich denke, die LED Wechsel müssen nicht so super schnell gehen, oder ?!?

Grüße
Flite

Florian
03.02.2004, 09:44
Guten Morgen!
Danke für Eure schnellen Antworten!
Am besten gefällt mir bisher der Vorschlag von Flite!
Leider ist das noch nicht ganz das was ich möchte!
Wenn ich das richtig verstehe, brauche ich für Multiplex keine weitere riesige Hardware! :idea:

Ich habe nochmal ein bischen im Internet recherchiert.
Ich würde gerne mehr wissen wie das mit dem Multiplex geht!
Also mit den LED's, wie man die Hardwaremäßig anschließt weiß ich jetzt! :idea:
Aber wie steuere ich das Softwaremäßig mit dem AT90S4433? :?:

:?: Wie ist das mit den Tastern?
:?: Wie kann ich die anschließen und ansteuern?
:?: Geht das auch mit diesem Multiplex?

Danke für Eure Hilfe!

Flite
03.02.2004, 09:56
Die Taster kannst du in einer Matrix abfragen. Wenn du nicht willst, dass man mehrere Taster gleichzeitig drücken kann (dass der uC das erkennt), dann kommst du sogar ohne Diode aus. Sonst musst du in die Tastenmatix auch Dioden reinbringen.

Multiplexing geht imho so:
Du teilst die LEDs in Spalten und Zeilen auf. (Also z.B. LED1 ist Spalte 1 und Zeile 1, LED2 ist Spalte 2 und Zeile 1, etc.). Die Zeilen musst du mit Transistoren 'verstärken'. Dann kannst du Zeile 1 aktivieren und die Spalten anschalten, die in Zeile 1 leuchten sollen. Dann machst du das selbe mit den restlichen Zeilen und wiederholst das (mit ca. 100 Hz oder schneller). Dann leuchten alle LEDs ohne, dass man das Flimmern sieht. Nachteil: Durch die Tatsache, dass die LEDS den Großteil der Zeit aus sind, sind sie auch relativ dunkel. Man muss also den Strom hochsetzen, damit die selbe Helligkeit erreicht wird.

Wird imho bei den 7 Segmentanzeigen so gemacht.

Viele Grüße
Flite

Flite
03.02.2004, 10:11
Zur Tastenmatrix hier noch ein Link zu einer APP Note von Atmel
http://www.atmel.com/dyn/resources/prod_documents/doc1232.pdf

Auf der ersten Seite ist ein Schaltplan der Matrix.

http://www.mikrocontroller.net/attachment.php/709/matrix.txt
hier nochmal eine kurze Skizze
ohne Dioden kann es passieren, dass fälschlicherweise eine Taste als gedrückt erkannt wird, wenn mehrere gleichzeitig gedrückt werden.

Viele Grüße
Flite

Florian
03.02.2004, 10:18
Dankeschön für die Links!

tobimc
04.09.2004, 10:16
Hi Florian!

Ich würde mit seriellen Schieberegistern arbeiten.
74HC595 zum Ausgeben(LEDs) und 74HCT165 zum einlesen(Taster).

Das geht eigentlich ganz einfach, wenn man weis wie's geht... ;)
UND man belegt EGAL wieviele ICs man anschließt für jede Sorte
IC (595 oder 165) nur 3 Pins am µC! Also in deinem Falle
insgesamt 6.
Ein weiteres tolles feature ist, dass du mit vollspeed (auch in asm)
in diese / von diesen Dingern schreiben/lesen kannst.
Die gehen bis zu 100Mhz Frequenz.

Wenn du willst, kann ich dir nen Schaltplan schicken... ;)
(Muss ich aber auch erst malen...)

Wenn du den I²C Bus lieber hast (kann der 4433 ja auch)
gibt's da auch solche Register.

Nur kenn' ich mich da nicht so aus...

Viele liebe Grüße,
Tobi

Rama-k
04.09.2004, 12:26
Ja, poste mal bitte nen Schaltplan bin auch interessiert!

mfG rama-k

Florian
04.09.2004, 13:25
Cool, danke! :o)
Kannst Du den Schaltplan mal posten? ;o)

tobimc
04.09.2004, 14:19
HI

Also wie versprochen der Schaltplan.

Ich habe ihn in Eagle gemacht (Die Target-Pläne sieht man so schlecht...)
Ich hab's einmal geRARt, für die die Eagle haben; ist ein selbstentpackendes Archiv, keine angst... ;)
Es ist eine .exe Datei, die ich in.txt umgenannt habe, weil
man hier keine .exe Dateien posten kann ( :!: IST JA AUCH GUT SO :!: ).
Ihr müsst sie halt nach dem Download wieder in .exe umbenennen.

Wem das mit der .exe zu gefährlich ist, für den gibt's das ganze noch in
.zip.

Und noch einmal in .png als Bild.

*Das war ne umwandlerei...*


Jetzt aber zum Plan:

Also: Ich fang mit den Daten an:

1)"Serielle Daten": Hier wird das Datenbit angelegt, das
in das Register geschrieben werden soll. Merke:
Das LETZTE ZUERST!

2)"Takt2": das ist der Eintakt-takt.;)

Das geht dann so vonstatten:
Datenbit an (1) anlegen, Takt (2) kurz auf HIGH, dann wieder LOW,
Nächstes Datenbit usw.

3)"Takt1" Wenn man nit dem Eintakten der Bits fertig ist,
muss diese Taktleitung kurz auf HIGH und dann wieder auf LOW gelegt werden. Dadurch werden die eingetakteten Bits in das Ausgaberegister überspielt und liegen fortan an den Pins 15 und 1-7 an (QA - QH).

Das Programm muss so aussehen:


Datenbit an (1) anlegen (HIGH / LOW);
Takt2 (2) kurz auf HIGH dann wieder LOW;
Das jetzt die angeschlossene Zahl 595er * 8 wiederholen.;
Wenn fertig, "EnableTakt" [Takt1] (3) kurz auf HIGH dann wieder LOW.;

Alles klar?

Ihr solltet die 3 Datenleitungen (1, 2 und 3) ganz am Anfang des Programms ALLE auf LOW setzen, da es sonst zu Fehlständen an den Ausgängen kommen kann.

Allgemeines:

Es müssen nicht unbedingt 3, 4, 5, oder 100 595er angeschlossen sein.
Wenn es nur einer sein soll:
Dann müsst ihr einfach die Verbindung von Pin9 des 1. und Pin14 des 2.
kappen. Diese Verbindung von Pin9 und 14 des Nächsten ist für die Kaskadierung zuständig.
Wenn das 9. Bit in den 1. 595er geschrieben wird, wird das 1. Bit zu Pin9 wieder herausgeschoben (zum 2., 3. 595er usw.).

Ihr müsst den Aktivierungs-Takt an "Takt1" (3) nur EINMAL senden!
Sprich nur EINMAL von LOW(standard) auf HIGH und wieder auf LOW.

Die Ausgänge QA - QH halten 20mA aus. Hinein, wie hinaus.

Es können UNENDLICH viele dieser Teile kaskadiert werden.

Ihr solltet möglichst nahe am Chip einen 1µF HF-Sperr-Kondensator haben.


Alles soweit klar? Kann man dieses Kauderwelsch verstehen??

Viel Spaß damit!!
Beim 165er funktioniert das genauso. Nur kenne ich den noch nicht so und will erst mal selber testen, bevor IHR eure irgendwie was weis ich...

Vele lebe Grüße,
Tobi

Achso JA:
PS:

Ich möchte hier noch sagen, dass mir dieses ganze Wissen avatar
vermittelt hat und einfach nochmal DANKESCHÖN sagen!!