5x7-Anzeige umrechnen

Gast
H.Joachim S. schrieb:
> Kann man natürlich Bit für Bit abklappern, aber das müsste doch
> eleganter gehen?

Einfach Spalten multiplexen und Zeile als Byte ausgeben, das steigert 
die Helligkeit auch um 40% bzw. reduziert den nötigen Spitzenstrom, man 
brauchg halt 7 statt 5 Vorwiderstände.

Ansonsten gibt es Bitmatrix-Rotationsalgorithmen die erst 4x4, dann 2x2 
Blöcke drehen, aber die sind nicht 'einfacher' zu formulieren.
Gast
H.Joachim S. schrieb:

> Zeilen (7) werden gemultiplext, Spalten (5) parallel
> ausgegeben. Die Daten kommen aber in 5Byte (also
> spaltenweise) rein. Kann man natürlich Bit für Bit
> abklappern, aber das müsste doch eleganter gehen?

Schuss aus der Hüfte:
Je nach Wortbreite und Maschine mit 100010000100001b
multiplizieren, maskieren, ggf. Schieben und verodern.
Beitrag #6056440 wurde von einem Moderator gelöscht.
(Firma: Vescomp)
H.Joachim S. schrieb:
> Ich brauche mal nen Schubser :-)
> Zeilen (7) werden gemultiplext, Spalten (5) parallel ausgegeben.
> Die Daten kommen aber in 5Byte (also spaltenweise) rein. Kann man
> natürlich Bit für Bit abklappern, aber das müsste doch eleganter gehen?

 Wenn die Spalten alle auf einem Port sind, musst du die 5 Bytes in 5
 Register laden und diese Register dann 7 Mal (beim Multiplexen) in den
 für Ausgabe vorgesehenen Register schieben.
 Sollte aber in Assembler weniger als 20 Takte dauern, etwa 1 us.

Peter D. schrieb:
> Beim Schreiben vom Zeichensatz-Flash in den Bild-RAM drehen.
> Oder gleich richtig rum im Flash ablegen, wenn der Platz reicht.

 Dazu bedarf es dann aber 7 Bytes, nicht 5.
Moderator (Firma: Titel) Persönliche Seite
Harry L. schrieb:
> Look-Up-Table
Eine LUT bringt hier leider nichts, weil die Bits keinerlei Korrelation 
zueinander haben. Sie sind lediglich an der falschen Stelle.

MaWin schrieb:
> Einfach Spalten multiplexen und Zeile als Byte ausgeben
Schlimmstenfalls hängt da sogar ein Binärdecoder an den Zeilen, sodass 
man nur 1 Zeile aktivieren kann.
Ich hätte aber auch prinzipiell eher 1:5 als 1:7 gemultiplext...

H.Joachim S. schrieb:
> das müsste doch eleganter gehen?
Weil/wenn der µC keine "Matritzendrehfunktion" hat, bleibt nichts 
anderes, als die Bits einzeln herauszuklauben. Ob man das effizient oder 
umständlich löst, steht auf dem nächsten Blatt.
OP
Ok, gut, dann bin ich beruhigt, ich dachte ich übersehe was ganz 
einfaches.
Hardware umbauen geht nicht (wieder mal die gute alte alte VQC10 :-) ).

Am Zeichensatz rumbasteln hilft auch nicht, da es bei der gewünschten 
Betriebsart jede LED einzeln  ansteuerbar sein soll.

mask=0x10;
i=0;
for (loop=0;loop<20;loop++)
             {temp=pixel_direct_buffer[loop];  //4x5Byte
              if (temp & 0x01)
                 pixel[i][0]|= mask;
              if (temp & 0x02)
                 pixel[i][1]|= mask;
              if (temp & 0x04)
                 pixel[i][2]|= mask;
              if (temp & 0x08)
                 pixel[i][3]|= mask;
              if (temp & 0x10)
                 pixel[i][4]|= mask;
              if (temp & 0x20)
                 pixel[i][5]|= mask;
              if (temp & 0x40)
                 pixel[i][6]|= mask;
              mask=mask>>1;
              if (!mask)
                 {mask=0x10;
                 i++;
                 }
             }
Gast
H.Joachim S. schrieb:
> Kann man
> natürlich Bit für Bit abklappern, aber das müsste doch eleganter gehen?

Muss man denn das auf der Ebene Segmente bearbeiten? Ich gebe da in der 
Gegel Strings aus und erstelle die notwendige Tabelle Zeichen -> 
Segmente gleich in der passenden Anordnung.

Das ist wohl auch mit Lookup gemeint - irgendwo muss ja eine Zahl in die 
Segmentdarstellung umgesetzt werden. Und für 7 Segmente + DP ist der 
Arbeitsaufwand für die Tabelle ja wohl noch zumutbar.

Georg
Gast
Lothar M. schrieb:

> Harry L. schrieb:
>> Look-Up-Table
> Eine LUT bringt hier leider nichts, weil die Bits
> keinerlei Korrelation zueinander haben. Sie sind
> lediglich an der falschen Stelle.

Tatsächlich?

Man kann also Permutationen NICHT per Tabelle berechnen,
weil die Bits ja nur an der falschen Stelle sind und
keine Korrelationen zueinander haben?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.