Multiplex? Logische Kanäle zusammenfassen!

Im Unterforum Grundlagen - Beschreibung: Grundlagen und Fragen für Einsteiger in der Elektronik

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 22 5 2025  06:50:01      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Grundlagen        Grundlagen : Grundlagen und Fragen für Einsteiger in der Elektronik


Autor
Multiplex? Logische Kanäle zusammenfassen!

    







BID = 436170

x-plosiv

Gelegenheitsposter



Beiträge: 54
 

  


Hi,

erst mal Kurzes Vorwort. Ich habe vor mir eine Uhr zu bauen die mit Hilfe von 21 LEDs die Zeit im Binärcode anzeigen soll. Ich will das ganze mit einem Atmega 8 und einem Quarz steuern. Soweit so gut.

Nun hätte ich, wenn ich pro LED einen Ausgang verwende 21 Kabel von der Platine zur Anzeige (wenn ich die Masse auf das Gehäuse Lege, was wohl gehen dürfte da es nur 5V sind nur von mir benutzt wird und auch nicht mit in die Dusche kommt).
Das würde ich Dezimieren wenn möglich.

Wäre ich da mit Multiplexverfahren auf dem richtigen Weg? Wenn ja wie Funktioniert das?

Oder findet das vielleicht DeMorgan und Boolesche Algebra anwendung, denn sowas hab ich auch dunkel im Hinterkopf.

Kann mir da jemand helfen, da ich doch ein bisschen ratlos bin.



[ Diese Nachricht wurde geändert von: x-plosiv am 12 Jun 2007 17:27 ]

BID = 436190

Ltof

Inventar



Beiträge: 9369
Wohnort: Hommingberg

 

  

https://forum.electronicwerkstatt.d.....66281

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 436203

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Moin,

Wie von LTof verlinkt, würde ich hier 4 Schieberegister verwenden. Ein Standardschieberegister hat 8 Bits, demnach kommt man auf 24 Ausgänge.

Die SR des Types CD4094 kann man kaskadieren, also den Überlauf des n-ten Schieberegisters mit dem Dateneingang des n+1ten verbinden.

Die Taktleitung und die Latch-Leitung werden parallel geschaltet und kommen jeweils an einen IO-Pin des µCs.

Der taktet beim Initialisieren des Controllers erstmal 24 Nullen raus (oder Einsen, jenachdem, wie die LEDn angeschlossen sind).

Somit sind die Register in einem definierten Zustand.

Anschließend werden dann die Daten seriell eingetaktet, während Latch so konfiguriert ist, dass die Daten nicht am Ausgang erscheinen. Damit ist es möglich, die Daten erst reinzuschieben und dann synchron am Ausgang sichtbar zu machen. Kommen dann die nächsten Daten, stehen diese solange an, bis die neueingetakteten Bits ins Latch geschrieben werden.


Multiplex ist noch was anderes: da werden die LEDn in einer Matrix verschaltet, also in Zeilen und Spalten angeordnet. Der µC selektiert dann eine Spalte und gibt ein Bitmuster für die Zeilen aus. Dann knippst er die Spalte wieder ab, macht die nächste an und gibt wieder ein Bitmuster aus.

Das ganze wird pro Sekunde so schnell wiederholt, dass das träge Auge irgendwann nicht mehr erkennt, dass es sich um kein statisches Bild handelt.

_________________

BID = 436215

x-plosiv

Gelegenheitsposter



Beiträge: 54

Danke, das ging ja echt fix

Also das mit den Schieberegistern hört sich gut an. Und vom Programieraufwand ist das auch schön machbar, also steht der Uhr wohl nichts mehr im Weg. außer der Farbauswahl für die LEDs

BID = 436218

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

In welcher Sprache hattest du vor zu programmieren?

_________________

BID = 436221

x-plosiv

Gelegenheitsposter



Beiträge: 54

Hatte vor in Assembler zu schreiben. Ein Freund hat mir zwar geraten das in C zu machen weils wohl einfacher sein soll, aber ich kann kein C somit werd ich bei Assembler bleiben

BID = 436230

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Ja, das finde ich gut

Habe das auch mal in Assembler gemacht. Die Routine zum Datenrausschieben ist recht einfach.

Du kannst vier Register als Puffer benutzen, und dann mit rol austakten:

r20-24 enthalten Daten; LSB in r20,0.
Das kann man so machen, da rol und ror über das Carrybit quasi mehr als 8-Bit-Schieberegister sein können.

dann kannst du mit bst und bld das Bit 0 an eine bestimmte Stelle in einem temporären Register packen und dann die Daten ausgeben:

in r16, PORTD ;Port-Werte einlesen
bst r20,0 ;Bit nach T kopieren
bld r16, DATENBITPOSITION (z.b. PortD.4)
out PORTD, r16 ;und Daten bis auf Bit4 unverändert wieder ausgeben.

Das ganze dann in einer Schleife von 0 bis zur gewünschten Bitanzahl wiederholen.

Edit_ Natürlich noch Takt erzeugen.

_________________


[ Diese Nachricht wurde geändert von: DonComi am 12 Jun 2007 21:59 ]

BID = 436241

x-plosiv

Gelegenheitsposter



Beiträge: 54

So in der Art hatte ich mir das vorgestellt.
Hab mir bloß noch nichts geschrieben, weil ich erst schauen muss dass ich das in mein Gehäuse reibring. Aber der Ansatz bringt mich glaub ich schon mal n Stück weiter, denn das Datenrausschieben is ja eh das einzige was da wirklich zu machen ist. Denn das weiterzählen und das Stellen per Taster is ja schnell gemacht


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 12 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 184156414   Heute : 2018    Gestern : 7235    Online : 231        22.5.2025    6:50
7 Besucher in den letzten 60 Sekunden        alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0705080032349