Forum: Mikrocontroller und Digitale Elektronik [[C] LCD die 10000ste


von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Grüß Gott an alle da draußen,


ich habe ein kleines Problem.


Ich versuche gerade ein LCD mit HD44780 Chip zum laufen zu bringen, 
leider bisher ohne Erfolg.

Ich habe mich an Tutorial hier im Forum orientiert

http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte

Die lcd-routines.h habe ich angepasst, ist auch mit angehängt.

Alles andere habe ich 1:1 so gelassen. Leider passiert auf meinem LCD 
genau garnichts.

Wenn ich am Kontrastpoti drehe, dann werden die Kästchen schwächer oder 
stärker, mehr passiert aber nicht. Laut Internet soll man es so 
einstellen, dass man die Kästchen noch grade so sieht --> erledigt.

Das ganze läuft auf einem Mega32, das LCD hängt an PortC und JTAG ist 
aus.
Am Mega hängt ein 16Mhz Quarz, der auch fehlerfrei werkelt. LED blinken 
geht.

Angeschlossen ist es wie folgt:


PORT C 0 (22) =  RS
PORT C 1 (23) =
PORT C 2 (24) =  E
PORT C 3 (25) = DB4
PORT C 4 (26) = DB5
PORT C 5 (27) = DB6
PORT C 6 (28) = DB7
PORT C 7 (29) =

Ich hänge euch mal alles an was ich habe, eventuell sieht ja jemand das, 
was, mir verborgen bleibt.

Vielen Dank für die Aufmerksamkeit
Stefan

von Peter D. (peda)


Lesenswert?


von O. (Gast)


Lesenswert?

// WinAVR hat eine itoa()-Funktion, das erfordert obiges #include 
<stdlib.h>

Hab ich nicht gefunden

von O. (Gast)


Lesenswert?

Und die Belegung, die du hier beschrieben und im Code hast unterscheidet 
sich.

von holger (Gast)


Lesenswert?

>Und die Belegung, die du hier beschrieben und im Code hast unterscheidet
>sich.

Nein, nur die Kommentare sind falsch.

Sowas hier ist Schrott:
1
// Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
2
 
3
#ifndef F_CPU
4
#define F_CPU 16000000
5
#endif

Du denkst jetzt du hast F_CPU auf 16MHz gestellt.
Wenn aber bereits F_CPU definiert ist z.B. auf 8MHz
dann bleibt es auf 8MHz. Das könnte z.B. in den
Projekteinstellungen stehen und per Compileroption reinkommen.
Wenn der Takt jetzt aber 16MHz ist sind alle delays zu kurz.

Wenn schon dann knallhart:

#define F_CPU 16000000

ohne #ifndef Geraffel.

Dann bekommst du sowas wenn F_CPU schon definiert ist
und einen anderen Wert hat:

lcd.h:15:1: warning: "F_CPU" redefined
<command-line>: warning: this is the location of the previous definition

Da weiss man dann wenigstens was Sache ist.

von Stefan (Gast)


Lesenswert?

Nach über 3 Tagen Kopfzerbrechen endlich die Lösung:

Das Jumper Kabel welches Atmega32 und DB5 verband, war defekt.


Ich danke allen fürs helfen und vor allem Danke für den Link. Der Code 
ist Klasse!

Viele Grüße

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.