Problem mit Display

Gast #1123269
Lesenswert?

hallo,

ich möchte mein Display initialisieren und ein Byte darauf ausgeben.
Halte mich bei der Initialisierung wie im Datenblatt angegeben. Trotzdem 
zeigt es nichts an. Kann mir da jemand evt. weiterhelfen, ob doch was 
falsch mache? Display ist korrekt an den Pins abgeschlossen, das habe 
ich schon überprüft.
Benutze dazu einen atmega48.

habe folgendes Display:
http://display-elektronik.de/DEM24251SYH-PY.pdf



#define F_CPU 8000000L

#include <avr/io.h>
#include <util/delay.h>
#include <defs.h>

/*
PORTB:
PB0..PB7 -> DB0..DB7

PORTC:
PC0 - RS (Register Select)
PC1 - R/W
PC2 - Enable R/W
*/



int main(void)
{
  tUI8 zaehler;

  /* PORTB alles Ausgänge */
  DDRB = 0xFF;

  /* PORTC alles Ausgänge */
  DDRC = 0xFF;

  PORTC = 0x00;
  PORTB = 0x00;



  /*warte 30ms */
  for(zaehler=0;zaehler < 30; zaehler++) {
    _delay_ms(1);
  }

  /* Enable */
  PORTC |= (TRUE << PC2);

  _delay_ms(1);

  /* Funktion Set */
  /* 2 Linien, Display On */
  PORTB = (TRUE<<PB5) | (TRUE<<PB4) | (TRUE<<PB3) | (TRUE<<PB2);

  /*warten */
  _delay_us(100);


  /*Display On, Cursor On, Blinking On */
  PORTB = (TRUE<<PB3) | (TRUE<<PB2) | (TRUE<<PB1) | (TRUE<<PB0);

  /*warten */
  _delay_us(100);

  /* Display Clear */
  PORTB = (TRUE << PB0);

  _delay_ms(2);


  /* Entry mode */
  PORTB = (TRUE<<PB2) | (TRUE<<PB1);

  /* warten */
  _delay_us(100);


  PORTB = 0x00;
  _delay_ms(1);

  /* Datenregister auswählen */
  PORTC |= (TRUE << PC0);



  /* Datenbyte schreiben */
  PORTB = 0b00000011;

  _delay_us(100);

  /* Übertrag aus */
  PORTC = 0x00;
  PORTB = 0x00;

  return 0;
}

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