Forum: Mikrocontroller und Digitale Elektronik LCD Teilweise Beschreiben!


von Christian (Gast)


Lesenswert?

Hallo, habe mal eine Frage, und zwar ist es möglich mit Bascom z.b. nur 
einen Wert zu aktualisieren auf einem LCD? So dass die schrift bleib und 
der wert sich ändert, weil die Schrift immer blinkt und das nicht schön 
aussieht.

von Christian (Gast)


Lesenswert?

EIn Beispiel auf dem LCD soll stehen: "Zeit: 12:00 Uhr" dann soll nur 
die 12 weiterlaufen ist doch bei gekauften Sachen genau so.

von KG (Gast)


Lesenswert?

Hallo!

Natürlich ist dies möglich.
Brauchst nur den Text der immer angezeigt werden soll
vor der Mainloop definieren.
Den Wert der sich ändern soll, über ein Flag oder über Variablen-
vergleich ( alter Wert <> neuer Wert )anzeigen lassen.

MfG
KG

von Christian (Gast)


Lesenswert?

Schon aber wenn ich z.b. in der Main Loop eine Abfrage von Ports mache 
das sich der Text ändern soll gibt es das gleiche problem!

von Alex L. (Gast)


Lesenswert?

Christian schrieb:
> Hallo, habe mal eine Frage, und zwar ist es möglich mit Bascom z.b. nur
> einen Wert zu aktualisieren auf einem LCD? So dass die schrift bleib und
> der wert sich ändert, weil die Schrift immer blinkt und das nicht schön
> aussieht.

Hallo!!!
Vielleicht hast du in deinem loop auch ein befehl um das display zu 
löschen? z.b. clear display, weil das kann es auch sein, dass das 
display die ganze zeit gelöscht wird und alles von neuem geschrieben 
wird.

von Christian U. (z0m3ie)


Lesenswert?

Do kannst mit einem gotoXY befehl direkt zu der stelle gehn, die sich 
ändern soll (ka wie der Bascom Befehl dazu heisst) und dann dort 
schreiben ich denke das ist der Part der dir fehlt.

von Christian (Gast)


Lesenswert?

Du meinst Locate Zeile,Spalte  ja das hab ich jetzt geschafft und es 
geht danke.


$regfile = "m644def.dat"
 $crystal = 1600000
   Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , 
Db7 = Porta.7 , E = Portb.0 , Rs = Portb.2
    Config Lcd = 16 * 2
      Cursor Off

    Dim W As Word
       Locate 1 , 1
       Lcd "Zeit:"
 Do
     W = W + 1
     Locate 1 , 7
     Lcd W
   Loop


End

von Tobi W. (todward)


Lesenswert?

Also ich habe mal versucht dein problem mit einem mega16 und einem 
pollin LCD (ich glaube es hat 1,95€ gekostet) nachzustellen.

1) Läuft die Main-loop ohne verzögerung, blinkt das LCD nicht.
2) Wird in der Main-loop das lcd mit dem BAscombefehl CLS gelöscht und 
dann der text erneut drauf geschrieben, kann man ein "blinken" der 
anzeige feststellen.
3) Ist der Cursor nicht ausgeschaltet, und die main-loop läft weiter hin 
ohne verzögerung, kann man wenn man genau hinsieh den cursor sehen.

Der Locate befehl ist bei einer solchen sache eher uneffizient. wieso 
machst du es nciht wie vorgwschalten mit einer ereignis verfolgung?
du kannst den statischen text, in einer constanten (besser da die schon 
vom compiler "berechnet" wird und nicht erst vom avr) und in deinem fall 
die zeit in einer variable. Das ganze pachste in eine if-else-end if 
anweisung und bist fertig. Hat den vorteil du benötigst nicht soviel 
rechen kapazität des µC denn du musst ja nicht bei jedem durch lauf die 
anzeige aktualisieren sondern nur jede sekunde oder so.

Gruß
Tobi

von Christian (Gast)


Lesenswert?

Hi, danke fürs Testen es geht soweit jetzt. Doch wenn ich Reset drücke 
stehen auf einmal immer 2 oder 3 nullen auf dem LCD ist dies normal? 
Wenn ich die Stromzufuhr unterbreche geht es.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.