www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schieberegister o.ä. in `C’ für µC?


Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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..

Autor: Danmilkasahne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... Dein Leseindex kann doch einfach rotieren... Du willts das Array als
Ringbuffer doch u.U. auch rotierend benutzen....

Ahoi DMS

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich war wohl etwas langsam...

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einige LCD Controller bieten die Möglichtkeit das LCD horizontal zu
Scrollen. Alle Pixel per Software einzeln zu verschieben ist ziemlich
aufwendig.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das LCD wird von einem T6963C gesteuert. Hab ich im Datenblatt diese
Möglichkeit überlesen?
MfG
Wolfgang

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.