Forum: Compiler & IDEs RE: C-Code zu LCD von Fleury


von Thommy (Gast)


Lesenswert?

Hallo nochmal !!

Ich hatte hier gestern was zu einem Compiler-Problem beim Versuch, ein 
44780-LCD mit Fleurys Code zu betreiben, geschrieben.
Der Code wird inzwischen anstandslos übersetzt (lag am makefile). Nun 
hab ich das hex-file aufm Board, es tut sich aber noch gar nix aufm 
Display.
Ich hab den Code aus test_lcd.c und lcd.c von Fleury benutzt. Die 
Board-Frequenz, den Port und den uC-Typ hab ich im lcd.h bzw. makefile 
angepasst.
ABER das LCD gibt kein einziges Zeichen von sich...
Vielleicht die Verdrahtung ? Hab den 4-bit Mode eingestellt und versorge 
das Display über VTG von meinem STK500 aus (sollte soweit funzen, da das 
LCD laut Datenblatt weniger Strom zieht als eine LED).

Hat da jemand ne Idee ?? Würd mich sehr über Vorschläge freuen!!

Gruß, Thommy

von Karl H. (kbuchegg)


Lesenswert?

Fangen wir doch mal bei den einfachen Tests an:
Versorgungsspannung liegt an?
Kontrastspannung liegt an?
Wenn Versorgungsspannung da ist, Kontrastspannung
stimmt und sonst nichts am LCD angeschlossen ist,
müsstest du bereits auf dem LCD in der ersten Zeile
lauter Balken sehen.
Sind die da?

von Thommy (Gast)


Lesenswert?

Hi Karl !

Ich hab jetzt mal ganz banal die Funktion geprüft, und gemerkt, dass man 
den Poti nur bis ganz auf Endausschlag drehen muss, damit dann die 
Leerzeichen als Balken angezeigt werden.
Nun spinnt aber anscheinend die Datenübertragung zum Display. Es zeigt 
zwar ne Menge Zeichen an, aber vollkommen sinnlos. Egal, was ich 
ausgeben möchte, es kommt der wildeste Salat raus - manchmal kommt auch 
gar nix.
Die Verdrahtung hab ich nochmal geprüft - die is so ok. Ich hab die 
Osc.-Freq. aus meinem STK500 ausgelesen (3,686 Mhz) und lcd.h 
entsprechend geändert. IO-Mode stimmt auch, Port stimmt, und 
Diplay-Controller-Typ hab ich auch richtig eingestellt. Was kann da noch 
fehlen/falsch sein ?!

Ich verzweifel langsam über diesem doofen Teil...

Dank u. Gruß, Thommy

von Karl H. (kbuchegg)


Lesenswert?

Ich hab da so eine Vermutung.
Trag doch mal probehalber in deiner lcd.h eine
Taktfrequenz von 1 Mhz ein.

von Fabian (Gast)


Lesenswert?

checkst du das busyflag nach jedem Sendevorgang ab?
3 Nops haben bei mir nicht gereicht! Bei mir gings nur mit Busyflag!

von Peter Fleury (Gast)


Lesenswert?

Meine LCD Library wertet Busyflag aus, deshalb muss zwingend Busy-Flag 
angeschlossen werden. Auch darf das Flachband-Kabel zwischen LCD und AVR 
nicht zu lang sein. 10-20 cm sollte ok sein.

von Thommy (Gast)


Lesenswert?

Hi Fabian und P. Fleury (?) !!

Ich weiss leider noch nicht, was ein busy-flag ist oder wie es 
angeschlossen wird. Könnt ihr mir da vielleicht weiterhelfen ?
Danke !

von Peter Fleury (Gast)


Lesenswert?

Auf meiner Home page hat es ja unter Projects eine Anleitung mit Schema 
wie ein LCD angeschlossen werden muss

von Thommy (Gast)


Lesenswert?

Hi Peter !

Die Leitungen vom STK500-Port zum LCD sind kaum länger als 10cm (hab ich 
nun extra nochmal umgelötet). Ich hab auch die Verdrahtung geprüft - ist 
ok. Ich nenn hier einfach noch ein paar Fakten zum 
Aufbau/Programmierung:

- STK500 mit atmega8
- Quarz mit 4Mhz auf Board (in lcd.h angepasst)
- LCD mit 44780-Chip, 4x16 Zeichen (Zeilenanzahl und -länge angepasst; 
was ist jedoch mit LCD_LINE_LENGTH und LCD_START_LINEx-Parametern ? muss 
ich die anpassen ?)
- LCD_IO_MODE == 1 und dementsprechend verdrahtet
- Versorgungsspannung für LCD beziehe ich von STK500-Board
- programmiert unter AVR Studio; unter "Source Files" lcd.c und 
test_lcd.c hinzu gefügt, und unter "Header Files" alle in den *.c-Files 
geforderten Header-Dateien hinzu gefügt; dein makefile verwendet und MCU 
name auf atmega8 geändert
- der Code wird ohne Mucken compiliert

Der Fehler äussert sich so, dass nach dem Übertragen des Codes erstmal 
nichts geschieht und nach ein- oder zweimaligem Aus-/Einschalten die 
Anzeige verrückt spielt: mal werden durchgehend Nullen angezeigt, mal 
sind es gemischte Zeichen. Dabei flimmern hier und dort ein paar 
horizontale Linien übers Bild, als ob alles ständig wiederholt würde.

So, jetzt hab ich hier wirklich alles runtergetippt, was mir zum 
Aufbau/Programmierung eingefallen ist.

Ich hoffe, dass Du einen Fehler entdeckt hast, und würd mich freuen, was 
von Dir zu hören...

Gruß, Thommy

von Gregor (Gast)


Angehängte Dateien:

Lesenswert?

Probier doch mal das:

<code>
#include <lcd.h>
int main (void)
{
    lcd_init(LCD_DISP_ON_CURSOR_BLINK);
    lcd_puts("Test");

    for (;;)
    {}
}
</code>

Verdrahtung so wie auf dem Bild (Anlage).

in der LCD.h fürs erste nur Ports und Pins anpassen.

Gruß

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.