Gast
#1123269
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; }