Forum: Mikrocontroller und Digitale Elektronik LCD 4x20 Zeile 8Bit Initialisierung HD44780.


von triplepower (Gast)


Lesenswert?

Hallo,

ich versuche erfolglos mein 4x20 Display zu initialisieren.
Ich sehe immer nur die schwarzen Balken in der 1. und dritten Zeile.
Angeklemmt ist es korrekt da 2x geprüft. Timing ist auch i.o.
Dieser Ablauf sollte doch prinzipiell funktionieren, oder? Sehe den Wald 
vor Bäumen nicht mehr :-)


void LCDinit(void)//Initializes LCD
{
  _delay_ms(20);
  LCD_DATA    =0x0;
  LCD_CTRL    =0x0;
  LCD_DATA_DDR  =0xFF;
  LCD_CTRL_DDR  =0x08; // ENABLE = OUTPUT

  LCD_DATA    =0x30;
  LCD_CTRL    =0x8;  // ENABLE setzen
  _delay_ms(1);
  LCD_CTRL    =0x0;  //jetzt wird ENABLE übernommen

  _delay_ms(10);



  LCD_DATA    =0x30;
  LCD_CTRL    =0x8;
  _delay_ms(1);
  LCD_CTRL    =0x0;

  _delay_ms(10);


  LCD_DATA    =0x30;
  LCD_CTRL    =0x8;
  _delay_ms(1);
  LCD_CTRL    =0x0;

  _delay_ms(10);

  LCD_DATA    =0x38;
  LCD_CTRL    =0x8;
  _delay_ms(1);
  LCD_CTRL    =0x0;



  _delay_ms(5);

  LCD_DATA    =0xE;
  LCD_CTRL    =0x8;
  _delay_ms(1);
  LCD_CTRL    =0x0;

von holger (Gast)


Lesenswert?

>Sehe den Wald vor Bäumen nicht mehr :-)

Und ich sehe keinen Schaltplan und nur einen
fast nichts sagenden, unvollständigen Codeschnipsel.
Controller unbekannt, Taktfrequenz unbekannt.

von Peter D. (peda)


Lesenswert?

Mal auch RS und RW anschließen.

Wenn RW in der Luft hängt, geht garnichts.

Deine Delays sind viel zu lang, für E reicht 1µs völlig.


Peter

von triplepower (Gast)


Lesenswert?

- Controller siehe Betreff
- Codeschnipsel in meinen Augen sehr eindeutig, was ist da unklar?
- LCD korrekt beschaltet, Schaltplan nicht notwendig
- Taktfrequenz 16MHz (was spielt das für eine Rolle? ich habe doch 
geschrieben dass das Timing stimmt)

von triplepower (Gast)


Lesenswert?

OK Danke Peter, werde ich mal gleich testen...

von holger (Gast)


Lesenswert?

>- LCD korrekt beschaltet, Schaltplan nicht notwendig

Oh doch. Keiner weiss wo LCD_DATA oder LCD_CTRL
angeschlossen sind. Vieleicht an den JTAG Leitungen
und JTAG Fuse aktiviert. Nur mal so als Beispiel.

von triplepower (Gast)


Lesenswert?

Fuse für JTAG ist nicht gesetzt, ich habe nur die Fuse für den externen 
Quarz geändert. Verdammt, dat Ding will nicht.

Wie dem auch sei, hier die Beschaltung: (ATMEGA 162)

//PortD:
#define LCD_RS  2
#define LCD_RW  4
#define LCD_E  3

//PortC:
#define LCD_D0  0
#define LCD_D1  1
#define LCD_D2  2
#define LCD_D3  3
#define LCD_D4  4
#define LCD_D5  5
#define LCD_D6  6
#define LCD_D7  7

#define LCD_DATA  PORTC
#define LCD_CTRL  PORTD

#define LCD_DATA_DDR  DDRC
#define LCD_CTRL_DDR  DDRD

von Johannes M. (johnny-m)


Lesenswert?

triplepower wrote:
> Fuse für JTAG ist nicht gesetzt, ich habe nur die Fuse für den externen
> Quarz geändert.
Wenn du die Fuse nicht geändert hast, dann ist sie programmiert! JTAG 
ist im Auslieferungszustand aktiv und muss erst vom Anwender 
abgeschaltet werden.

von triplepower (Gast)


Lesenswert?

Was soll ich sagen, ihr seid super!!!

Danke Johannes & Holger!

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.