PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit LCD-Display beim ATMega 16



zappel76
06.09.2010, 19:09
Moin!

Ich als Einsteiger habe ein kleines Problem!

MEin LCD-Display (16x2) schreibt nur komische Hiroglyphen anstatt einfach nur "Hallo" zu schreiben.

Befürchte ja das es an irgendwelchen Einstellungen liegt, die ich noch nicht gefunden/ umgestellt habe.

Gibt es irgendwelche Besonderheiten beim Port Dx des ATMega 16? Irgendwelche Fusebits, die gesetzt werden müssen?

Enable- Port D4 (Pin 18 / OC1B)
RS - Port D7 - (Pin 21 / OC2 )
DB4- Port D0 - (Pin 14 / RXD)
DB5- Port D1 - (Pin 15 / TXD)
DB6- Port D2 - (Pin 16 / INT0)
DB7- Port D3 - (Pin 17 / INT1)

Danke im Voraus.

for_ro
06.09.2010, 19:51
Hallo zappel76,
zeig doch mal dein Programm und die Zeichen, die anstelle von Hallo ausgegeben werden.

zappel76
06.09.2010, 19:58
Also das Display macht Pfeile und o´s und ö´s, III, die sich fortbewegen, habe ich leider nicht hier und auch kein Foto gemacht.

Das Programm:
$regfile = "m16def.dat"
$crystal = 1000000
$baud = 2400

UCR = 0

Do
Cls
LCD "Hallo"
lowerline
LCD " hallo "

waitms 500
Loop

for_ro
06.09.2010, 20:10
Lass mal die $baud Direktive weg.
Die setzt die Pins D0 und D1 zu UART Verwendung.
Und speichere die Config des LCDs lieber im Programm mit ab.

zappel76
06.09.2010, 20:17
Werde ich versuchen, danke.

Brauche ich die denn nicht, wenn ich über ein i2c/twi mit einem anderen Mikrocontroller kommunizieren will?

for_ro
06.09.2010, 20:25
Nein, brauchst du nicht.
Und dann kannst du auch den UCR Befehl weglassen.

rolber
07.09.2010, 11:29
Hallo !

Du müsstest noch dein LCD mit dem Config LCD Befehl konfigurieren.
Dann sollte es eigentlich klappen.
Auf meiner Webseite ist auch ein Bascom Beispielprogramm.
Müsstest Du nur leicht abändern, da es für ein 4X20 LCD ist.
Sollte aber generell helfen.

Roland

zappel76
07.09.2010, 11:43
Das habe ich doch beim LCD-Compiler gemacht, wenn ich die Ports dort eingebe!?
Der wird doch darüber konfiguriert!?

funkheld
07.09.2010, 17:27
RW vom Display an Masse und dann läuft es.

zappel76
08.09.2010, 13:55
So, vielen Dank !
Habe die $baud Direktive weggelassen und es funktioniert !

for_ro
08.09.2010, 14:05
Das habe ich doch beim LCD-Compiler gemacht, wenn ich die Ports dort eingebe!?
Der wird doch darüber konfiguriert!?
Das kannst du natürlich tun, aber ...
Keiner sieht dann, was du angegeben hast und ob da vielleicht ein Problem drin ist.
Außerdem gilt das dann für jedes Programm, wo du LCD Befehle drin hast. Wechselst du irgendwann einmal die Anschlüsse und kompilierst danach ein älteres Programm, wird es nicht mehr funktionieren.
Daher mein Rat, alles in deinem Program anzugeben.
Das gilt für den µC Typ, Frequenz, Baudrate, LCD und und und.
Der Vorteil, diese Dinge nicht immer wieder angeben zu müssen wird bei weitem durch die Nachteile aufgehoben. Und Copy-Paste ist so einfach.

Kampi
08.09.2010, 14:11
Habe die $baud Direktive weggelassen und es funktioniert !

Da musst du auch mit aufpassen. Wenn du die Pins wo Rx und Tx ist woanders benutzt darfst du das $baud nicht ins Programm schreiben, weil die Pins sonst nicht richtig funktionieren (wie du ja an deinem LCD gesehen hast).