LED-Display-Dig-2R 74HC164 Reichelt ATmega8 Assembler 810568

OP #7445684
Lesenswert?

Geschätztes Forum,

ein 1MHz getakteter ATmega8 steuert ein LED-Modul mit 2x 74HC164 seriell an.

Die 2 x 4 stellige LED-Anzeige erfolgt im Multiplexverfahren.

Dazu werden jeweils für ein Digit zwei Bytes gesendet. Das Balken-Bytes, gefolgt vom Digit-Byte.

Um beide Zeilen mit 8 Zeichen darzustellen sind demnach 8 x 2 Bytes = 16 Bytes (Frame) nötig.

Was mich wundert, das Schieberegister ist bei meinem provisorischen Versuchsaufbau nicht aus dem Takt geraten.

Frage:

Wie erkennt die Schieberegister-Schaltung den Start eines Frames?

Denn Würde das Schieberegister aus dem Takt geraden, enstünde nur wirre Zeichen.

Der Beispiel-Assemblercode ist ganz einfach gehalten, es werden nur 4x springende "A" angezeigt.

Anmerkung:

Bei Bedarf können diverse Wartezeiten gekürzt werden, dienen nur zu Versuchszwecken :-)

Bernhard

Angehängte Dateien:
#7445702
Lesenswert?

Bernhard S. schrieb:

Dazu werden jeweils für ein Digit zwei Bytes gesendet. Das Balken-Bytes, gefolgt vom Digit-Byte.

Nennt man Digit und Segmente

Um beide Zeilen mit 8 Zeichen darzustellen sind demnach 8 x 2 Bytes = 16 Bytes (Frame) nötig.

16 Bit.

Was mich wundert, das Schieberegister ist bei meinem provisorischen Versuchsaufbau nicht aus dem Takt geraten.

Wie auch?

Wie erkennt die Schieberegister-Schaltung den Start eines Frames?

Gar nicht. Das sind die "dümmsten" Schieberegister die es gibt. Die takten einfach nur die Daten durch und geben sie direkt aus. Fertig. Der Trick ist hier, daß das Nachladen der neuen Daten so schnell geht, daß man das sehr kurze Datenchaos nicht sieht. Bestenfalls als leichtes Nachleuchten. Für einfache Anzeigen ausreichend.

Bei Bedarf können diverse Wartezeiten gekürzt werden, dienen nur zu Versuchszwecken :-)

Naja, typischer Anfänger-Assemblercode. Schon mal was von Funktionsparametern gehört? Die gibt es auch in Assembler. Und Datenblöcken bzw. Tabellen?

#7445705
Lesenswert?

Bernhard S. schrieb:

Wie erkennt die Schieberegister-Schaltung den Start eines Frames?

Gar nicht.

So bald du kein weiteres bit mehr durch CLK sendest, werden die Daten der letzten 16 bits lange genug angezeigt um sichtbar zu werden.

Berechnet man 2V für rote LED über 1k an 5V macht das 3mA, davon 8 auf einen Ausgang macht 24mA, an der Grenze eines 74HC164, aber eine Stelle leuchtet nur 1/8 der Zeit, also effektiv so hell wie mit 0.375mA. Also 1/300 der Nennhelligkeit.

OP #7445727
Lesenswert?

Eine kleine und nicht optimierte Multiplex-Variante "30.06.2023".

Leider klimmen bei dieser primitiven Hardwarevariante die dunkelgetasteten Balken, Ursache: zu niedrige Clock-Frequenz am Schieberegister.

Falk B. schrieb:

Um beide Zeilen mit 8 Zeichen darzustellen sind demnach 8 x 2 Bytes = 16 Bytes (Frame) nötig.

16 Bit.

Korrektur: 8 x 16 Bytes = 128 Bit , jedes Digit benötigt 2 Bytes, das Modul besitzt 8 Digits im Auslieferungszustand ^^

Falk B. schrieb:

Was mich wundert, das Schieberegister ist bei meinem provisorischen Versuchsaufbau nicht aus dem Takt geraten.

Wie auch?

Habe den Schieberegister-Takt, durch trennen der Schieberegister-Taktleitung (Steckverbinder), mehrfach im laufendem Betrieb unterbrochen. Ergebis: immer korrekte Anzeige

Angehängte Dateien:
#7445771
Lesenswert?

Bernhard S. schrieb:

Eine kleine und nicht optimierte Multiplex-Variante "30.06.2023".

Leider klimmen bei dieser primitiven Hardwarevariante die

glimmen

dunkelgetasteten Balken, Ursache: zu niedrige Clock-Frequenz am Schieberegister.

In Teutonien heißt das Taktfrequenz.

Falk B. schrieb:

Um beide Zeilen mit 8 Zeichen darzustellen sind demnach 8 x 2 Bytes = 16 Bytes (Frame) nötig.

16 Bit.

Korrektur: 8 x 16 Bytes = 128 Bit , jedes Digit benötigt 2 Bytes, das Modul besitzt 8 Digits im Auslieferungszustand ^^

Bist du besoffen? Schau mal in deinen eigenen Schaltplan! Da gibt es nur 2 8 Bit Schieberegister!

2 x 1 Byte = 2 x 8 Bit = 16 Bit

Das Ganze läuft per Multiplex, siehe LED-Matrix. Und man darf deinen Miktrocontroller erstens mit 8 MHz oder ggf. mehr laufen lassen und 2. kann man die Schieberegister sehr schnell takten, 10MHz und mehr. D.h. man muss beim Takten per SOFTWARE keinerlei Pausen lassen.

Habe den Schieberegister-Takt, durch trennen der Schieberegister-Taktleitung (Steckverbinder), mehrfach im laufendem Betrieb unterbrochen. Ergebis: immer korrekte Anzeige

Super! Unkaputtbar!

#7446015
Lesenswert?

Falls noch jemand das Display bei Reichelt vergeblich sucht, das gibt es bei Pollin. Ist aber typischer Pollin-Ramsch. Mit zwei HC595 statt der HC165 hätte man das genau so billig, aber viel universeller aufbauen können und dabei noch etwas mehr LED-Strom rauskitzeln können. Dazu zwei RC-Glieder und zwei Jumper und man könnte es wahlweise in Ein-, Zwei- oder Dreileitertechnik ansteuern, ohne dass die Segmente beim Shift mitleuchten.
https://www.pollin.de/p/daypower-digitalanzeige-modul-led-display-dig-2r-810568

#7446021
Lesenswert?

Mario M. schrieb:

das gibt es bei Pollin. Ist aber typischer Pollin-Ramsch.

Auch bei Ali, also China-Ramsch für die Generation wer billig kauft, kauft 2 mal.

https://de.aliexpress.com/item/33042618372.html

Mit zwei HC595

wäre es genau so ein Ramsch. Wenigstens Module mit MAX7219 oder zwei TM1650.

https://embedded-lab.com/blog/dual-4-digit-seven-segment-led-display-with-spi-interface/

https://m.de.aliexpress.com/item/1005005686510193.html

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren