PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Text in SRAM schreiben



kowolfgang
07.01.2006, 23:10
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.

repi64
07.01.2006, 23:28
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 ; " "

chr-mt
07.01.2006, 23:29
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.

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

Dann steht bei einem Wert von "1" im Display "0001"
Geht aber auch mit Leerzeichen vornedran:

Lcd_anzeige = Format(lcd_anzeige , " ")

Oder mit einer If-Then Abfrage je nach Wert Leerzeichen davorsetzen:


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


Der Format Befehl gefällt mir aber am besten ;)

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

kowolfgang
20.01.2006, 19:36
Vielen Dank für die echt schnelle Hilfe, ich hab leider nicht früher anworten können.

aber nochmal vielen vielen dank