Sany
25.10.2007, 10:15
Hallo Zusammen,
Bin relativ neu hier, hab aber gleich mal vorweg ein Problem :-b
Ich hab ein Samsung 2318A Display (8x24 zeichen) mit einem M50530 Kontroller.
Das Display möchte ich mit 4 Bit ansprechen, dazu habe ich:
PC0-3 an DB4-DB7 angeschlossen.
PC4 -> EN
PC5 -> OC2
PC6 -> OC1
Nun soweit so gut, mein Problem, ich hab schon massig an Datenblätter vom Kontroller studiert, aber ich krieg das Display nicht Initialisiert.
Und zwar ich vermute stark das es an meinen 4 Bit Nibbels liegt.
Meine Nibbelumsetzung sieht wie folgt aus:
void lcd_command(unsigned char temp1)
{
unsigned char temp2 = temp1;
LCD_DDR &= ~(1<<LCD_OC1) | (1 <<LCD_OC2);
temp1 = temp1 >> 4; // oberes Nibble holen
temp1 = temp1 & 0xF0; // maskieren
LCD_PORT &= 0x0F;
LCD_PORT |= temp1; // setzen
lcd_enable();
temp2 = temp2 & 0xF0; // unteres Nibble holen und maskieren
LCD_PORT &= 0x0F;
LCD_PORT |= temp2; // setzen
lcd_enable();
_delay_us(20);
}
Also die umsetzung muss ja erfolgen, da die letzten Datenports vom LCD am Anfang meines Atmels sitzen richtig?
Oder hab ich da generell einen denkfehler drin?
Grüße
Sany.
Bin relativ neu hier, hab aber gleich mal vorweg ein Problem :-b
Ich hab ein Samsung 2318A Display (8x24 zeichen) mit einem M50530 Kontroller.
Das Display möchte ich mit 4 Bit ansprechen, dazu habe ich:
PC0-3 an DB4-DB7 angeschlossen.
PC4 -> EN
PC5 -> OC2
PC6 -> OC1
Nun soweit so gut, mein Problem, ich hab schon massig an Datenblätter vom Kontroller studiert, aber ich krieg das Display nicht Initialisiert.
Und zwar ich vermute stark das es an meinen 4 Bit Nibbels liegt.
Meine Nibbelumsetzung sieht wie folgt aus:
void lcd_command(unsigned char temp1)
{
unsigned char temp2 = temp1;
LCD_DDR &= ~(1<<LCD_OC1) | (1 <<LCD_OC2);
temp1 = temp1 >> 4; // oberes Nibble holen
temp1 = temp1 & 0xF0; // maskieren
LCD_PORT &= 0x0F;
LCD_PORT |= temp1; // setzen
lcd_enable();
temp2 = temp2 & 0xF0; // unteres Nibble holen und maskieren
LCD_PORT &= 0x0F;
LCD_PORT |= temp2; // setzen
lcd_enable();
_delay_us(20);
}
Also die umsetzung muss ja erfolgen, da die letzten Datenports vom LCD am Anfang meines Atmels sitzen richtig?
Oder hab ich da generell einen denkfehler drin?
Grüße
Sany.