Gast
#1369170
Hallo, ich betreibe ein Displaytech 162 mit KS0070B controller an einem
Atmega8 im 4bit modus. Meine init sieht so aus:
void lcd_init(void)
{
DDRB = 0xD7;//((1 << LCD_E_PIN) | (1 << LCD_RS_PIN) | (1 <<
LCD_DATA_PIN_D4) | (1 << LCD_DATA_PIN_D5) | (1 << LCD_DATA_PIN_D6) | (1
<< LCD_DATA_PIN_D7) );
PORTB=0;
_delay_ms(200);
PORTB = 0x03;
lcd_e_toggle();
_delay_ms(5);
lcd_e_toggle();
_delay_ms(1);
lcd_e_toggle();
_delay_ms(5);
PORTB=0x20;
lcd_e_toggle();
_delay_ms(5);
// ab hier im 4-Bit-Modus
lcd_command(0x28); // Funktions-Set: 2 Zeilen, 5x7 Matrix, 4
Bit
_delay_ms(5); // Zeit zum Umschalten lassen
lcd_command(0x08); //Display off
_delay_ms(5);
lcd_command(0x01); //Clear
_delay_ms(5);
lcd_command(0x06); //Entrymode
_delay_ms(5);
lcd_command(0x0C);
_delay_ms(15);
}
Soweit funktioniert auch alles, nur wenn ich in zeile 2, also ab Adresse
0x40 schreiben will erscheint nix in Zeile 2.
Beim start wird nur Zeile 1 mit schwarzen kästchen gefüllt.
void lcd_gotoxy(u08 x, u08 y)
{
if(y==0){
lcd_command((1 << LCD_DDRAM) + 0x00 + x);
}else{
lcd_command((1 << LCD_DDRAM) + 0x40 + x);
}
}
Diese Funktion benutze ich zum Zeilenwechseln.
HILFE! :)