-
So, jetzt läuft alles. Vielen Dank Hubert.
Die Daten kommen Hardwaremäßig alle richtig am LCD an. Habe alle Initialisierungsbefehle nachgemessen! Es passt.
Bleibt nur noch das Problem bestehen, dass ich immer noch keinen blinkenden cursor nach der abgearbeiteten Initialisierung sehe :(
Vll hilft hier nochmal mein Code weiter.. Ist ja wirklich nicht viel.
Wär super wenn sich den wer anschaut :^o
Code:
#include <avr/io.h>
#include <util/delay.h>
#define lcd_data PORTC
void lcd_enable(void) {
PORTD |= (1<<PD7); //bit setzen
_delay_us(1);
PORTD &= ~(1<<PD7); //bit löschen
}
void lcd_init(void) {
PORTD &= ~ (1<<PD5) | (1<<PD6) | (1<<PD7);//RS 0, RW 0, EN 0
lcd_enable();
_delay_ms(4);
lcd_enable();
_delay_ms(1);
lcd_enable();
_delay_ms(1);
//lt. datenblatt bsp.
lcd_data = 0x34; //function set 8Bit, extension bit re = 1
lcd_enable();
_delay_us(39);
lcd_data = 0x09; //ext.0x09 function set 4zeilen modus
lcd_enable();
_delay_us(39);
lcd_data = 0x0f; //display on, cursor ein, cursor blinken
lcd_enable();
_delay_us(39);
lcd_data = 0x01; //clear display
lcd_enable();
_delay_us(1530);
lcd_data = 0x06; //entry mode set
lcd_enable();
_delay_us(39);
}
int main (void) {
_delay_ms(20); //warten bis versorgungsspannung anliegt
DDRC = 0xff; //LCD-data als Ausgang
DDRD = 0xff; //Port D als Ausgang für RS EN RW
lcd_init();
lcd_init();
lcd_init();
while(1){}
}
-
Im Datenblatt steht ein Initialisierungbeispiel für den 8bit Modus, nach dem fehlt dir eine Zeile.
-
Und ich dachte immer das wär entweder oder, da die zeile zwischen den function sets etwas dicker war. Vll hilft da weniger denken oder doch etwas mehr :-b
Aber es geeeeht :) \:D/ \:D/
Jetzt kann ich endlich schlafen gehen.
many many thanks \:D/