Hi,
schreib doch einfach hinter deinen LCD Befehl noch einige Leerzeichen.
Dann wird bei einem enstelligen Ergebnis der Rest von vorhin überschrieben. Ist nicht so schick, geht aber.
Also LCD xxxx ; " "
Hallo,
nachdem ich mich in letzter zeit jetzt endlich mal ein bisschen mit dem Programmieren beschäftigt habe ging bis jetzt alles einwandfrei nur jetzt hab ich ein Problem wo ich einfach nicht mehr weiter weiß.
Ich hab mir das Programm von Claus Kühnels AD-Wandler aus seinem Buch abgeschrieben (BASCOM AVR Seite 264) und ein bisschen modifiziert, so das der Text jetzt vom Display angezeigt wird. Allerdings flackerte das Display sehr stark da der Mega8 das Display immer wieder gelöscht und dann neu beschrieben hat.
Dann hab ich einfach das CLS rausgelassen und siehe da es flackert nicht mehr allerdings bleibt jetzt im Display die Letzte Ziffer immer stehen (wenn man den Poti ganz aufdreht steht dort ja "1023" und wenn man dann auf einen Wert unter 1000 dreht bleibt der 3er immer dort stehen).
Jetzt hab ich irgendwo im Internet gelesten das das Display nicht mehr so stark flackert wenn man den Displaytext erst in den SRAM Schreibt und von dort das Display immer wieder aktualisiert, aber ich hab leider kein Beispiel dafür gefunden wie das gehen soll und wenn ich in Bascom einfach anstatt LCD, Z1( und davor oben noch DIM Z1 as String*16)schreib dann meckert Bascom rum.
Jetzt hab ich einfach keine Idee mehr wie ich den Text sonst in den Sram krieg, könnt ihr mir da helfen?? Ich habs zwar schon mit der Suche probiert aber die hat nix ausgespuckt.
Hi,
schreib doch einfach hinter deinen LCD Befehl noch einige Leerzeichen.
Dann wird bei einem enstelligen Ergebnis der Rest von vorhin überschrieben. Ist nicht so schick, geht aber.
Also LCD xxxx ; " "
Gruß RePi!
*** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
*** (Albert Einstein) ***
Hi,
einfacher geht's wenn du den neuen wert mit dem alten vergleichst und erst dann auf's Display schreibst.
Dann noch die entsprechenden Stellen vorher löschen.
Also zB.
Locate 1,1
Lcd " "
Allerdings flackert es dann auch, wenn der Wert nicht lange genug stehen bleibt.
Einfacher geht das mit dem Format Befehl.
Dann steht bei einem Wert von "1" im Display "0001"Code:Dim Wert As Integer Dim Lcd_anzeige As String * 4 Wert = 1 Lcd_anzeige = Str(wert) Lcd_anzeige = Format(lcd_anzeige , "0000") Locate 1 , 1 Lcd Lcd_anzeige End
Geht aber auch mit Leerzeichen vornedran:
Oder mit einer If-Then Abfrage je nach Wert Leerzeichen davorsetzen:Code:Lcd_anzeige = Format(lcd_anzeige , " ")
Der Format Befehl gefällt mir aber am bestenCode:Lcd_anzeige = Str(wert) If Wert < 10 Then Lcd_anzeige = " " + Lcd_anzeige End If If Wert < 100 And Wert > 9 Then Lcd_anzeige = " " + Lcd_anzeige End If If Wert < 1000 And Wert > 99 Then Lcd_anzeige = " " + Lcd_anzeige End If Locate 1 , 1 Lcd Lcd_anzeige
Hat man positive und negative Zahlen, dann kann man beim Format Befehl Format zB. ein "+0000" schreiben, dann wird das Vorzeichen davorgesetzt.
Allerdings ist "0" dann "+0000" und nicht "0000".
Der String muß dann in der Dimensionierung auch um eins größer sein, eben wegen dem Vorzeichen.
Gruß
Christopher
Vielen Dank für die echt schnelle Hilfe, ich hab leider nicht früher anworten können.
aber nochmal vielen vielen dank
Lesezeichen