Forum: Mikrocontroller und Digitale Elektronik LED-Display-Dig-2R 74HC164 Reichelt ATmega8 Assembler 810568


von Bernhard S. (bernhard)


Angehängte Dateien:

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

: Bearbeitet durch User
von Falk B. (falk)


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?

von Michael B. (laberkopp)


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.

von Bernhard S. (bernhard)


Angehängte Dateien:

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

: Bearbeitet durch User
von Falk B. (falk)


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!

von Falk B. (falk)


Lesenswert?

Mal als Beispiel, wie man das mit Funktionen macht, nicht nur beim 
Warten.

Beitrag "Re: AVR ATtiny13 DS18B20/DS18S20 I2C PCF8574 LCD Temperaturanzeige"

von Mario M. (thelonging)


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

von Michael B. (laberkopp)


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

: Bearbeitet durch User
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.