Forum: Mikrocontroller und Digitale Elektronik LCD und AVR Board


von Roland (Gast)


Lesenswert?

Hallo liebe Gemeinde!

Ich habe ( wie schon 1000 Andere vor mir ) ein Problem mit meinem LCD.

Display          : von Display Elektronik GmbH
                   DEM 20485 SYH-LY
                   LCD-Controller KS0066 (4x20)
Microcontroller  : ATMega32
Programmiergerät : AVR Evaluations-Board (Version2.0.1)

Programmiert in  : C  (AVR Studio / PonyProg)

Ich sitze seit ca. 14 Tagen an diesem LCD und bekomme es nicht zum 
Laufen.
Habe diverse Tutorials, Beiträge gelesen... (nix hilft)


Hat Jemand Erfahrungen mit der Hardware???
Kann mir Jemand mit einem Tip weiterhelfen?

Bei Interesse schicke ich alle Codes etc.. Bin für alle Tips dankbar!

Vielen Dank im Voraus.

von Pete K. (pete77)


Lesenswert?

Schaltplan wäre nett. Was geht denn nicht ?

Versuchs mal mit einer 44870 Lib. Der Kontroller ist kompatibel.

von Roland (Gast)


Lesenswert?

Hallo Pete K.
Das geht ja schnell hier...

Schaltplan : Genau so ist mein LCD mit dem ATMega32 verdrahtet...

http://www.s-jordan.de/index.php?page=display

Beim einschalten zeigen sich in 1 und 3 Zeile schwarze Balken...
(Initialisierung klappt)
Meine Vermutung ist, dass etwas mit der Frequenz des Microcontrollers
nicht stimmt???
Ich habe keine Ideen mehr...

von holger (Gast)


Lesenswert?

Hier wirst du geholfen:

Beitrag "Wettaufruf "Probleme mit LCD""

von spess53 (Gast)


Lesenswert?

Hi

>Beim einschalten zeigen sich in 1 und 3 Zeile schwarze Balken...
>(Initialisierung klappt)

Nö. Zeigt nur an, das das LCD (wahrscheinlich) noch funktioniert. Nach 
erfolgreicher Initialisierung sind die Balken weg.
Ohne, daß du etwas mehr bekanntgibst, wirst du wahrscheinlich kaum Hilfe 
erwarten können.

MfG Spess

von Roland (Gast)


Angehängte Dateien:

Lesenswert?

Hallo. OK spess53!
Bloß wo soll ich anfangen. Ich werde alles bekannt geben, was Du 
möchtest.

Ich fange am Besten bei den Fuses an. ( ATmega32 )

- So habe ich meine Fuses gesetzt. (Dateianhang)

Hoffe ich habe den Beitrag richtig verstanden...
http://www.mikrocontroller.net/articles/AVR_Fuses


Falls weitere Informationen benötigt werden, ich gebe alles Preis, bloß 
ich möchte erstmal nicht unnötig das Forum zumüllen...


Danke euch

von Roland (Gast)


Lesenswert?

Kann niemand helfen?

Schade.

Liebe Grüsse

von Holger K. (krulli) Benutzerseite


Lesenswert?

Hängt das LCD an Port C? JTAG deaktivieren!

>Beim einschalten zeigen sich in 1 und 3 Zeile schwarze Balken...
>(Initialisierung klappt)
Eher ein Zeichen, das die Initialisierung nicht klappt.

von spess53 (Gast)


Lesenswert?

Hi

>Genau so ist mein LCD mit dem ATMega32 verdrahtet...

Dort steht aber z.B. nur Px... Wo hast du das an deinem Controller 
konkret angeschlossen?
Von welchem Programm stammen die Fuses-Einstellungen?

MfG Spess

von Roland (Gast)


Lesenswert?

Ich habe das LCD am PORTB.

Ich bin schon alles mehrmals durchgegangen (Aschluss etc)

Am portC (eher unwichtig) ist eine lichtschranke angeschlossen. Wenn die
Lichtschranke verdeckt ist, geht eine LED für 5s an (auch port C).
Parallel dazu geht die LCD Beleuchtung an... das klappt (hat ja auch 
nichts mit der Initialisierung zu tun)

Gruss

von Roland (Gast)


Lesenswert?

P.S. Die Fuses habe ich  mit PonyProg eingestellt.

Ich habe bedenken, ob die Zeiten bei der Initialisierung korrekt sind???

Das kann wiederum auf die Fuses zurückzuführen sein...





.....

void display_init(unsigned char eingangsport)

{

switch(eingangsport)

{

case 'A':  zeiger_auf_port=&PORTA; DDRA=0xFF; break;

case 'B':  zeiger_auf_port=&PORTB; DDRB=0xFF; break;

case 'C':  zeiger_auf_port=&PORTC; DDRC=0xFF; break;

case 'D':  zeiger_auf_port=&PORTD; DDRD=0xFF; break;

}



power=1;

*zeiger_auf_port |= (1<<LCD_PW);

wait_10_millisek();

*zeiger_auf_port = (light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

wait_10_millisek();

*zeiger_auf_port = 
(1<<LCD_D1)|(1<<LCD_D0)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

// 4-bit Mode

*zeiger_auf_port= 
(1<<LCD_D1)|(1<<LCD_D0)|(light<<LCD_BL)|(power<<LCD_PW);

wait_500_mikrosek();

*zeiger_auf_port= 
(1<<LCD_D1)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

// RE=1

*zeiger_auf_port = (1<<LCD_D1)|(light<<LCD_BL)|(power<<LCD_PW);

*zeiger_auf_port= 
(1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

*zeiger_auf_port= 
(1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW);

wait_500_mikrosek();

*zeiger_auf_port= 
(1<<LCD_D1)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

// RE=1

*zeiger_auf_port = (1<<LCD_D1)|(light<<LCD_BL)|(power<<LCD_PW);

*zeiger_auf_port= 
(1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

*zeiger_auf_port= 
(1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW);

wait_500_mikrosek();

*zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

// 4-Zeilen Mode

*zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW);

*zeiger_auf_port= 
(1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

*zeiger_auf_port= 
(1<<LCD_D3)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW);

wait_500_mikrosek();

*zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

// RE=0

*zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW);

*zeiger_auf_port= 
(1<<LCD_D0)|(light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

*zeiger_auf_port= (1<<LCD_D0)|(light<<LCD_BL)|(power<<LCD_PW);

wait_10_millisek();

*zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW)|(1<<LCD_EN);

// Display Ein, Cursor Aus, Cursor Nicht-Blinkend

*zeiger_auf_port= (light<<LCD_BL)|(power<<LCD_PW);

*zeiger_auf_port= 
(0<<LCD_D0)|(1<<LCD_D1)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW)|(1<< 
LCD_EN);

*zeiger_auf_port= 
(0<<LCD_D0)|(1<<LCD_D1)|(1<<LCD_D2)|(light<<LCD_BL)|(power<<LCD_PW);

wait_10_millisek();

clear_display();

}


.....

von spess53 (Gast)


Lesenswert?

Hi

Jetzt muss ich dir leider sagen, das meine Kenntnisse bezüglich PonyProg 
als auch C mehr oder weniger rudimentär sind.
Von PonyProg weiss ich nur, das es da einen 'umgekehrten' Zusammenhang 
zwischen 'Häkchen' und Fuse gibt.

MfG Spess

von Roland (Gast)


Lesenswert?

kein problem. Trotzdem vielen Dank.

ich werde mir doch lieber neues LCD kaufen. Bekomme dieses Ding einfach 
nicht zum Laufen.

Liebe Grüsse

von spess53 (Gast)


Lesenswert?

Hi

Wenn du auf Assembler umsteigst, könnte ich dir sofort helfen.

MfG Spess

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Doktere seit zwei Monaten dran rum.
Mein Ergebnis:
im Anhang
Versuch es doch auch mal.
Gruß gustav...

Da sind noch ein paar bugs drin.
OK.
Aber:
die Sequenz muß lauten:
Hex30
Hex28
Hex28
Hex01
Hex02
Hex06
Hex0E
Ende Initialisierung zweizeilig

von Roland (Gast)


Lesenswert?

Hallo Karl B.

Im Assembler und in Bascom ist es kein Problem.

Was ich bezwecke ist eher  eine LCD Ansteuerung in C.
Initialisierung etc.

Ich danke Dir trotzdem für Deine Mühe.

Liebe Grüsse

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.