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.
Hallo, das kannst Du so machen, da VOR dem Enable alles beliebig langsam sein kann. Erst wenn das Enable kommt, muß alles stimmen. MfG
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.
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....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.