PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Komplexe Anzeige auf LCD, Problem mit der Aktualisierung



dreadbrain
02.12.2008, 20:16
Hallo,

für mein derzeitiges Projekt, ein Controllergesteuertes Labornetzteil, will ich eine Bedienoberfläche mit Menüführung realisieren.
Dazu hab ich ein 4x20Zeichen Text LCD.

Da ich auf jeder Menüseite mehrere Variablen und Strings anzeigen muss/will, ist das Display meistens gut gefüllt.
Diese Variablen ändern sich dauernd und müssen somit möglichst rasch auch auf dem Display aktuell erscheinen.

Zur Zeit wird das Display andauernd innerhalb der Programmschleife für die enstprechende Menüseite aktualisiert.
Dabei entstehen im freien Bereichen komische Zeichen oder Teile des normalen Textes, obwohl sie dort nicht sein sollten.
Ich denke das es ander Aktualisierungsrate/Ansteuerung des Displays liegt, obwohl es ja eigentlich nichts ausmachen sollte (evtl. Bug in den Bascomroutinen?) da ich ja immer die enstprechenden Startpositionen der Strings etc. vorgebe und somit in den freien Bereichen nix stehen dürfte.

Meine Idee war auszuwerten, ob sich eine Variable geändert hat und nur die geänderte neu anzuzeigen.
Nur ist das bei 8-10-Variablen pro Displayseite etwas aufwendig und speicherintensiv.

Mal ein Ausschnitt des Displayinhaltes:

Locate 1 , 1 : Lcd "3,3V:" ; I_ist_33 ; "mA/" ; "U:" ; Lcd_string4 ; "V"
Locate 2 , 1 : Lcd "5,0V:" ; I_ist_5 ; "mA/" ; "I:" ; Lcd_string3 ; "mA"
Locate 3 , 1 : Lcd Lcd_string1 ; "V+:" ; I_ist_pos ; "mA"
Locate 4 , 1 : Lcd Lcd_string2 ; "V-:" ; I_ist_neg ; "mA"

Diese Anweisungen werden ca alle 50ms wiederholt an das Display gesendet
Die Strings werden vorher erzeugt und formatiert,
die anderen Variablen sind nomale Words.
Dabei entstehen nun besonders in den unteren beiden Zeilen (hinter dem "mA") komische Zeichenfolgen.

Hat jemand eine Idee wie ich das Problem einfach und codesparend lösen könnte?

mfg Benedikt

chr-mt
02.12.2008, 21:16
Hi,
ich würde schon mal nicht die ganze Zeile neu schreiben, sondern nur die Werte an sich.
Einmalig beim Aufrufen des Menüs
Locate 1 , 1 : Lcd "3,3V: mA/ U: V:"
Dann nur noch die Werte mit festem Format an die entsprechende Stelle setzen.
Anzeige=str(LCD_I_ist_33)
Anzeige = format(anzeige,00000)
Locate 1,6
Lcd Anzeige

Die Aktualisierungsrate ist OK. 50mS sind ja recht lange.
Die Ansteuerung mittels der Bascom Routinen ist eigentlich so ausgelegt, daß auch das langsamste Display mitkommen sollte.

So lange du keine festen Längen für die Werte hast, kann ja immer mal Müll vom vorherigen Menü noch drinstehen, da du dann vielleicht nicht die
ganze Zeile neu schreibst.

Gruß
Christopher