LCD 4x20 Zeile 8Bit Initialisierung HD44780.

Gast #935009
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;
Gast #935020
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)
Gast #935028
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

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