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
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?
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.
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
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!
Mal als Beispiel, wie man das mit Funktionen macht, nicht nur beim Warten. Beitrag "Re: AVR ATtiny13 DS18B20/DS18S20 I2C PCF8574 LCD Temperaturanzeige"
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
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
Die 8 MHz Version 2. Vorteil: die dunkelgetasteten Balken sind nun endlich ziemlich dunkel und kaum noch zu sehen, da die Daten ziemlich flott in das Schieberegister geschoben werden. Das Display arbeitet im Multiplexverfahren. Bernhard
Bernhard S. schrieb: > die dunkelgetasteten Balken sind nun endlich ziemlich dunkel und kaum noch zu sehen Von einem toten Pferd sollte man absteigen. Das Ghosting liegt an der Schaltung (kein Latch) und läßt sich daher nicht umgehen. Mich würde es stören.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.