PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD 16*1 zeigt kruses Zeug



128er
27.11.2011, 13:01
Hallo,
ich habe ein 16*1 LCD mit dem HD4478 Treiber. Beim Versuch es anzusteuern ging auch alles mit folgendem Code von www.dieelektronikerseite.de :

20660

Da es mir aber einfacher erscheint das über die Bascom eigenen LCD-Befehle zu machen sah der zweite Versuch so aus:

$regfile "m32def.dat"
$crystal = 16000000

Config Lcdpin = Pin , Port = Portc , E = Portb.7 , Rs = Portb.6
Config Lcd = 16 * 1


Do
Locate 1 , 1
Lcd "Hallo Welt!"
Loop

End


Dort kommt der Text zwar auch. Aber halt etwas durcheinander.
20661

Und wenn ich dazu noch den Locate Befehl entferne, wird aus der ganzen Sache ne wirre Laufschrift.

Hab keine Idee mehr was da noch fehlen könnte.


Gruß 128er

P.s.:
Wie kann ich den Code hier im Thema so einfügen das er in einem eigenen Frame angezeigt wird?

BMS
27.11.2011, 13:26
Hallo,
bei den Displays kann man zwei unterschiedliche Schriftgrößen (5x7 oder 5x10 Pixel) einstellen. Sieht aus, als wäre das Display für die größere gemacht. Mit Bascom kenne ich mich allerdings nicht aus, aber es gibt ja bestimmt eine Hilfe zu den Display-Befehlen.

Code einfügen geht so:
[CODE ]hier Code reinkopieren[ /CODE] natürlich ohne die Leerzeichen. Oder im Schreibfenster auf das # klicken.
Grüße,
Bernhard

Sauerbruch
27.11.2011, 13:51
Und wenn ich dazu noch den Locate Befehl entferne, wird aus der ganzen Sache ne wirre Laufschrift.


Das lässt sich ganz einfach erklären: Der Cursor des Displays bleibt nach jedem "LCD"-Befehl an Ort und Stelle stehen, d.h. nach dem ersten LCD "Hallo Welt!" wird der nächste LCD-Befehl ab Zeichen 12 begonnen. Beim nächsten LCD-Befehl passt dann noch "Hallo" in den verbleibenden Rest der Zeile, und " Welt!" wird von vorne reingeschoben, die nächste Runde startet dann vom 7. Digit - usw.

(Ich hoffe, diese Erklärung war nicht allzu wirr...)

Darin liegt der Sinn des "locate"-Befehls. Alternativ kann man auch mit "CLS" arbeiten; der löscht das gesamte Display und setzt den Cursor auf das erste Digit - nimmt allerdings sehr viel Zeit in Anspruch.

oderlachs
27.11.2011, 15:05
Das funzt bei mir prima, habe zwar nur den Code für den ATM8 aber dürfte ja umzuschreiben sein

'BASCOM Beispiel / BASCOM Example für 16x2 LCD mit Atmega8 o.ä.
$regfile = "m8def.dat"
$crystal = 3686400
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7, E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2 'Zeichen/Zeilen
Config Portd = Output


Do
Waitms 1000
Upperline
Lcd "Zeile oben"
Waitms 1000

Lowerline
Waitms 1000
Lcd "Zeile unten"
Waitms 1000
Cls
Loop
End