Best Practice zum Aktualisieren von Daten auf dem LCD

Ich lese gerade den Wert vom ADC und zeige ihn auf dem LCD-Bildschirm an. Der ADC wird von DMA unterstützt. Jetzt hat mein System 5 Menüs auf dem LCD (Spannung, Strom, Widerstand, Einstellungen). 3 davon sollten den ADC-Wert mit ~ 1fps anzeigen.

Was sind die Best Practices zum Auffrischen der LCD-Rahmen?

Soll ich einen Timer implementieren und den gesamten LCD-Bildschirm bei jedem Überlauf aktualisieren? Oder soll ich die Nummer einfach aktualisieren?

Oder wie sonst?

Was sind die besten Methoden zum Erstellen von Menüs?

Antworten (2)

Der beste Ansatz zum Aktualisieren eines LCD hängt von einer Vielzahl von Faktoren ab, darunter wie viel RAM verfügbar ist, die Geschwindigkeit der Kommunikation mit dem LCD-Controller, welche Arten von Updates der Controller verarbeiten kann und inwieweit der Bildschirm logisch unterteilt werden kann nicht überlappende rechteckige Bereiche, die separat gehandhabt werden können. Kein einziger Ansatz wird für alle Situationen optimal sein.

Der wichtigste Aspekt bei dem Versuch, sauber aussehende Updates zu erhalten, besteht wahrscheinlich darin, sicherzustellen, dass jede Region, die bestimmte Inhalte vor einem Update enthält und denselben Inhalt nach dem Update enthalten sollte, denselben Inhalt während des gesamten Updates enthält. Wenn Sie einen Bereich des Bildschirms löschen und dann das Material einzeichnen, das bereits dort war, ist dies wahrscheinlich wahrnehmbar. Es ist viel besser, die Teile des Bildschirms, die sich nicht ändern, entweder in Ruhe zu lassen oder sicherzustellen, dass sie nie mit etwas anderem als ihrem endgültigen Inhalt gezeichnet werden.

Ein Ansatz, den ich manchmal als hilfreich empfunden habe, besteht darin, den Bildschirm in Streifen zu unterteilen und einen RAM-Puffer zu haben, der groß genug ist, um zwei Streifen zu verarbeiten. Dinge können in Stücken gezeichnet werden, die einen Streifen hoch sind und die beiden Puffer überlappen. Senden Sie dann einen Puffer, kopieren Sie den unteren in den oberen und löschen Sie den unteren und wiederholen Sie den Vorgang. Die gesamte "Bildschirm zeichnen"-Routine wird für jeden Streifen wiederholt, aber Funktionen, deren Effekte vollständig außerhalb des aktuellen Streifens liegen, kehren schnell zurück.

Dies hängt von der Anwendung und dem LCD ab.

Wenn sich der größte Teil des Bildschirms regelmäßig ändert (z. B. Wellenformen oder Bilder), ist das Schreiben auf einmal x-mal pro Sekunde der "übliche" Weg. Sie können den Puffer verdoppeln und den nächsten Frame einrichten, während der aktuelle schreibt - Ihr DMA kann möglicherweise automatisch zwischen den Puffern wechseln. Wenn es nur 1 FPS ist und Sie ein paar Dinge ändern müssen, dann würde ich es meiner Meinung nach einfach halten und alles jede Sekunde aktualisieren.

Wenn Sie nur einen kleinen Teil aktualisieren (z. B. ein paar Ziffern auf einem statischen Hintergrund), kann es wirtschaftlicher sein, nur diesen Bereich zu aktualisieren und den Rest zu belassen. Sie können sogar eine Differenzprüfung zwischen den beiden Frames durchführen und nur die Pixel ändern, die geändert werden müssen, wenn Sie mit den Schreibvorgängen so sparsam wie möglich sein möchten.
Unterschiedliche Displays haben unterschiedliche Merkmale zum Auswählen von Bits des Displays und Speicheroptionen zum Puffern. Einige können ziemlich komplexe und nützliche Funktionen haben, andere sind sehr einfach und nicht so flexibel.

Je nachdem, wie oft sie neue Daten haben und ob Ihre Anwendung einen "Nur-Menü"-Teil enthält, möchten Sie möglicherweise die obige Option für Ihre Menüs verwenden und diese einfach nach Bedarf aktualisieren, wenn sich etwas ändert. Es könnte also eine Kombination beider Optionen verwendet werden (vorausgesetzt, Sie haben Wellenformen und Menüs).