PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD zeigt wirres Zeug



BenniBiker
08.05.2007, 17:28
Hi

Ich bin Anfänger in Sachen Microcontrollertechnik und habe mir einen ATmega32 wie im Wiki (https://www.roboternetz.de/wissen/index.php/AVR-Einstieg_leicht_gemacht#Grundschaltung_mit_Quarz) beschrieben aufgebaut.
Das hat auch alles soweit funktioniert.
Jetzt möchte ich gerne ein LCD anschliesen und ich habe hier das allgemein bekannte 27*4 Wintek von Pollin.
Ich habe folgendes Programm hier im Forum gefunden und angepasst:

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

Dim ___lcdno As Byte 'Umschaltbyte für Anzeige :
'0 = Chip 1 ; 1 = Chip 2

'LCD initialisieren

Config Lcd = 40 * 4 'Anzeigemodus 40 x 4 Zeichen
Config Lcdpin = Pin , E = Portc.1 , E2 = Portc.2 , Rs = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
___lcdno = 0 'auf Chip 1 schalten
Initlcd 'die beiden oberen Zeilen
'initialisieren
Cls 'die beiden oberen Zeilen löschen
___lcdno = 1 'auf Chip 2 schalten
Initlcd 'die beiden unteren Zeilen
'initialisieren
Cls 'die beiden unteren Zeilen löschen


'Lcd Anzeige Ausgeben

'Die 2 Oberen Zeilen Anzeigen

___lcdno = 0

Locate 1 , 1
Lcd "1. Die erste Zeile" ;

Locate 2 , 1
Lcd "2. Die zweite Zeile"

Cursor Off

'Die 2 Unteren Zeilen Anzeigen

___lcdno = 1

Locate 1 , 1
Lcd "3. Die dritte Zeile" ;

Locate 2 , 1
Lcd "4. So einfach ist das !!!!"

Cursor Off

End 'Programmende
Damit zeigt mein Display aber nicht das was es anzeigen soll.
Ich habe das Display mit einem ca. 40cm langen Flachbandkabel angeschlossen. Das dürfte doch eigentlich kein Problem sein oder?
Ich hab mal ein Bild angehängt

Vielen Dank schonmal,

Benni

Rofo88
08.05.2007, 19:00
Das selbe Problem habe ich auch gerade auf PortC mit dem Display. Auf Port A funzt es! Wenn man da nich noch was an den Fuses oder so umstellen muß

Rofo88
08.05.2007, 19:38
Am PortC hängt noch das JTAG-Interface. Das sollte mann in den Fuses deaktivieren. (was bei mir schon der Fall war aber halt meinen fehler nicht behebt)

EDIT: Nach einer Neuprogrammierung ist alles i.o nach einem Reset stimmen die Zeilen 3 und 4 nicht. Das Programm neu Aufspielen dann passts wieder...bis zum nächsten Reset :-(

Dnerb
08.05.2007, 22:17
Hi Rofo,

ohne Deinen Code wird Dir niemand helfen. (Hilfe ist so nämlich auch nicht möglich!)

Gruß Dnerb

Dani-Bruchflieger
08.05.2007, 22:39
Hi,

wegen der Kabellänge: ich habe bei meiner Temperaturregelung der Tiefkükltruhe ca 10 Meter !!! Kabel zwischen Prozessor und Display -> funzt ohne Probleme. ;)

Rofo88
08.05.2007, 22:49
@Dnerb

Mit dem Code wirds auch nich leichter da der ja Funktioniert nur nach dem Reset was nicht stimmt.


$regfile = "m32def.dat"
$lib "lcd4e2.lib"
$crystal = 16000000
Dim ___lcde As Byte
___lcde = 0


Cls
Lcd " Pollin 27*4 LCD TEST "
Locate 2 , 1
Lcd " Zeile 2 "

___lcde = 1 'write to the 2 last lines
Cls
Lcd " Zeile 3 "
Locate 2 , 1
Lcd " Zeile 4 "
End

In der Lib wurde nur der Port angepasst.

Dnerb
08.05.2007, 22:52
Dir fehlt auf jeden Fall schonmal "initlcd".

BenniBiker
08.05.2007, 22:52
Hi

Vielen Dank schonmal für eure Antworten!!

Ich habe jetzt das LCD an Port A angeschlossen und den Code angepasst, aber da tut sich jetzt garnichts mehr (d.h. es werden halt eben die beiden Balken angezeigt, wie immer wenn man Saft aufs LCD gibt).
Naja, ich kümmer mich morgen mal da drum, hab jetz keine Zeit mehr :(

Benni

Rofo88
09.05.2007, 08:07
@Dnerb

Nö fehlt mir nicht weil man ein INITLCD nicht braucht.

Die Hilfe sagt dazu "The LCD display is initialized automatic at start up when LCD statements are used by your code."

Was sollte ein INITLCD auch helfen wenns an PortA funzt aber nicht an PortC?

helimike0705
09.05.2007, 17:13
ist nur eine vermutung, setzte mal eine wartezeit vor dem cls ein.
so etwa mit waitms 100 anfangen und weiter verkleinern.

Rofo88
09.05.2007, 18:43
Hallo.

Das mit dem Waitms 100 hatte auch nichts gebracht.
Beim versuchen habe ich das Display jetzt versehentlich falsch gepolt angeschlossen und seit dem funktioniert es!?!

BenniBiker
10.05.2007, 12:06
Hmm gestern doch keine Zeit gehabt..
Ich hab jetzt mal nen anderen µC (auch ATmega32) reingesezt und der zeigt wieder nur wirres Zeug, wärend bei dem 1. µC immer noch nur die beiden Zeilen "leuchten". :-k
Is bestimmt wieder nur so ein ganz blöder Fehler von mir..

Benni

BenniBiker
10.05.2007, 13:43
Ich habe grade die einzelnen Pins an Port A (hängt zurzeit das LCD dran) getestet.
Hab dabei rausgefunden, das an Porta.7 immer 5V anliegt. Das ist doch nicht normal!? Habe schon getestet, ist kein Kurzschluss auf dem Board.
Ich habe dann Db7 auf Porta.0 gelegt und habe jetzt wieder das Problem wie vorher; wirres Zeug... :(

Benni

EDIT: Am Computer läuft das Display ohne Probleme (jaLCDs)

BenniBiker
12.05.2007, 10:20
Is bestimmt wieder nur so ein ganz blöder Fehler von mir..
Na das wars auch #-o
Ich habe R/W nur mit GND vom µC verbunden und das LCD über ein eigenes Netzteil versorgt.
Jetzt habe ich R/W auch noch mit GND von diesem Netzteil verbunden und jetzt geht es..... 8-[

Naja, troztdem vielen Dank für eure Hilfe

Benni