Forum: Mikrocontroller und Digitale Elektronik HD44780 Bits steuern


von Mr. AVR (Gast)


Lesenswert?

Hallo,

ich habe mal eine Frage zum HD44780.

Ich habe eine fertige Hardware, Bits des HD44780 sind alle zwar an einem 
Port, aber kreuz und quer.

static void lcd_out( uint8_t data )
{
  LCD_PORT &= ~((1<<LCD_DB4)|(1<<LCD_DB5)|(1<<LCD_DB6)|(1<<LCD_DB7)); 
//Maske löschen

  if (data & (1<<0))  LCD_PORT |= (1<<LCD_DB4);
  if (data & (1<<1))  LCD_PORT |= (1<<LCD_DB5);
  if (data & (1<<2))  LCD_PORT |= (1<<LCD_DB6);
  if (data & (1<<3))  LCD_PORT |= (1<<LCD_DB7);

    lcd_enable();
}



Das ist meine lcd_out. Die Grundlib ist hier aus dem Forum. Kann man das 
so machen? Oder ist das zu langsam das in mehreren Takten zu setzen? 
Muss das in einem Takt gesetzt werden?

Ich bekomme nämlich aktuell gerade nur quatsch am Display.

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

das kannst Du so machen, da VOR dem Enable alles beliebig langsam sein 
kann.

Erst wenn das Enable kommt, muß alles stimmen.

MfG

von Rätsel Rater (Gast)


Lesenswert?

Mr. AVR schrieb im Beitrag #5408254:
> Ich bekomme nämlich aktuell gerade nur quatsch am Display.

Vielleicht soll es das obere Nibble statt dem unteren sein?

data & (1<<0)   versus   data & (1<<4)    etc.

von Mr. AVR (Gast)


Lesenswert?

Rätsel Rater schrieb:
> Mr. AVR schrieb im Beitrag #5408254:
>> Ich bekomme nämlich aktuell gerade nur quatsch am Display.
>
> Vielleicht soll es das obere Nibble statt dem unteren sein?
>
> data & (1<<0)   versus   data & (1<<4)    etc.

Ja natürlich, danke. Das war der Fehler. Dumm....

von S. R. (svenska)


Lesenswert?

An sich kannst du die verquere Verkabelung auch durch eine Tabelle 
rückgängig machen. Bei 4 Bits brauchst du 16 Bytes im Flash.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.