void initDisplay() { timerInit(); //Schritt 1: //Hoechstwartezeit auf DisplayReset (2.7V -> 40ms) timerPause(45); //Port Richtung initialisieren //alle Ports auf Ausgang gestellt. DDRB |= 0xFF; //Schritt 1 Initialisierug //Hoechstwartezeit auf DisplayReset (2.7V -> 40ms) timerPause(45); PORTB &=~0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB &=~ _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB |= _BV(LCD_D0); toggle_e1(500); toggle_e2(500); //wait 100 µs timerPause(1); PORTB &=~0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB &=~ _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB |= _BV(LCD_D0); toggle_e1(500); toggle_e2(500); //wait 4.1 ms timerPause(10); PORTB &=~0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB &=~ _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB |= _BV(LCD_D0); toggle_e1(500); toggle_e2(500); //wait 100 µs timerPause(1); PORTB &=~0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB &=~ _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB |= _BV(LCD_D0); toggle_e1(500); toggle_e2(500); //Schritt 2 //RS = 0; RW = 0; DB7 = 0; DB6=0; DB5= 1; DB4 = 0; PORTB &=~ 0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB &=~ _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB &=~ _BV(LCD_D0); //E1 und E2 setzten um Wert zu übertragen (fuer beide Controler) toggle_e1(500); toggle_e2(500); //Schritt 3 //RS = 0; RW = 0; DB7 = 0; DB6=0; DB5= 1; DB4 = 0; PORTB &=~0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB &=~ _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB &=~ _BV(LCD_D0); toggle_e1(500); toggle_e2(500); PORTB &=~0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB &=~ _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB &=~ _BV(LCD_D0); toggle_e1(500); toggle_e2(500); //Schritt 4 PORTB &=~0xFF; toggle_e1(500); toggle_e2(500); PORTB &=~0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB |= _BV(LCD_D3); PORTB |= _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB &=~ _BV(LCD_D0); toggle_e1(500); toggle_e2(500); //Schritt 5 PORTB &=~0xFF; toggle_e1(500); toggle_e2(500); PORTB &=~0xFF; PORTB &=~ _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB |= _BV(LCD_D2); PORTB |= _BV(LCD_D1); PORTB &=~ _BV(LCD_D0); toggle_e1(500); toggle_e2(500); //Schritt6 PORTB &=~0xFF; PORTB |= _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB &=~ _BV(LCD_D3); PORTB |= _BV(LCD_D2); PORTB &=~ _BV(LCD_D1); PORTB &=~ _BV(LCD_D0); toggle_e1(500); toggle_e2(500); PORTB &=~0xFF; PORTB |= _BV(LCD_RS); PORTB &=~ _BV(LCD_RW); PORTB |= _BV(LCD_D3); PORTB &=~ _BV(LCD_D2); PORTB &=~ _BV(LCD_D1); PORTB &=~ _BV(LCD_D0); toggle_e1(500); toggle_e2(500); } void toggle_e1 (int wait) { PORTB |= _BV(LCD_E1); delay(5000); PORTB &=~ _BV(LCD_E1); timerPause(1000); } void toggle_e2 (int wait) { PORTB |= _BV(LCD_E2); delay(5000); PORTB &=~ _BV(LCD_E2); timerPause(1000); }