Schieberegister o.ä. in `C’ für µC?

Gast #272780
Problem: es sollen Messwerte als Kurve auf einem LCD dargestellt werden.
Das LCD hat z B. 240 Punkte auf der x-Achse. Wenn die Kurve bei x= 240
angekommen ist, dann soll der neueste  Messwert bei x=240 eingetragen
werden und die gesamte Kurve soll um eine Stelle nach links rücken.
Meine Vorstellung: Messwerte als [Feld] im RAM ablegen. Dann alle Werte
nach links schieben. Etwa so: Tabelle [240] --> Tabelle [239]; Tabelle
[239]--> Tabelle [238]....... Tabelle [1] --> Tabelle [0] , Tabelle [0]
-->  geht verloren. Gibt es eine Möglichkeit, analog einem
Schieberegister, programmtechnisch alle Werte um eine Stelle nach
"links" zu verschieben?
Oder löst man das Problem auf eine andere Art und Weise?
MfG
Wolfgang
Gast
Als FIFO.

Init      inIndex = 0;
          outIndex = 1;
Einfügen: feld[inIndex} = messwert;
          inIndex = outIndex;
          outIndex += 1;
          if(outIndex >= FeldGroesse){
              outIndex = 0;
          }
          reDisplay(outIndex);

redisplay(startIndex)
 ...

oder so..
Gast
das geht einfacher, und wurde schon mal diskuttiert...
Mein Vorschlag war, ein Feld (240 Einträge) zu benutzen, das
entsprechend der eingehenden Messwerte gefüllt wird. Sobald ein neuer
Wert eintrifft, werden die Werte an das LCD weitergeleitet (sofern es
einen Speicher besitzt; ich kenne mich mit Grafik-LCDs nicht aus.).
Wenn das Feld voll ist, wird es von vorne wieder vollgeschrieben.
Man braucht also 2 Zeiger: einen der sich die aktuelle Schreibposition
merkt und einen, der sich die akutelle Leseposition merkt. Der
Lesezeiger ist dann der Startpunkt für die Datenausgabe.

Das spart eine Menge Byte-Geschubse...
Gast
Einige LCD Controller bieten die Möglichtkeit das LCD horizontal zu
Scrollen. Alle Pixel per Software einzeln zu verschieben ist ziemlich
aufwendig.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 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.