LCD und AVR Board

Gast #934255
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.
Gast #934333
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
Gast #934504
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
Angehängte Dateien:
Gast #935260
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
Gast #935278
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
Gast #935287
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();

}


.....
Gast #935306
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren