Abend, ich hab ein kleines Problem mit meinem LCD Display. Die Ansteuerung funktioniert bestens nur komm ich mit den Befehlen aus der lcd lib. (Die aus dem Tut hier) nicht zurecht. Die Befehle 'LCD_SHIFT_RIGHT' und LEFT sollen ja den String um ein Zeichen verschieben, oder verstehe ich da was falsch? Fakt ist das der Text nur starr herum steht. So sieht das Programm aus: int main (void){ MCUCSR = (1<<JTD); //disable JTAG MCUCSR = (1<<JTD); lcd_init(); lcd_home(); lcd_string("text"); i=1; for(i=1;i<3;i=i+1){ lcd_command(LCD_SHIFT_RIGHT); _delay_ms(500); } for(i=3;i>0;i=i-1){ lcd_command(LCD_SHIFT_LEFT); _delay_ms(500); } while(1){ } return 0; } ?
Schau dir mal in deiner Bibliothek LCD_SHIFT_RIGHT etc genau an. Prüf mal ob da die Bits richtig gesetzt werden. Die Schiebefunktion fordert, daß laut Datenblatt vom 44780 bit zwei und drei entsprechend gesetzt werden müssen, andere bits dürfen z.T. nicht gesetzt sein. So sieht das in meiner PIC18 Bibliothek aus: //xx = don't care /// cursor shift left: 0b000 1 00 xx #define SHIFT_CUR_LEFT 0b00010000 /* Cursor shifts to the left */ /// cursor shift right: 0b000 1 01 xx #define SHIFT_CUR_RIGHT 0b00010100 /* Cursor shifts to the right */ ///disp shift left: 0b000 1 10 xx #define SHIFT_DISP_LEFT 0b00011000 /* Display shifts to the left */ ///disp shift right: 0b000 1 11 xx #define SHIFT_DISP_RIGHT 0b00011100 /* Display shifts to the right */ Joachim
versuchs mal mit:
1 | lcd_command(LCD_SET_SHIFT | LCD_DISPLAY_SHIFT | LCD_SHIFT_RIGHT); |
Ja jetzt gehts, wusste nicht das ich die übergeordneten Befehle noch mitnehmen muss. Big thanks!
Eine Frage hätte ich da noch, wenn ich eine Laufschrift haben möchte die nur in eine Richtung läuft (und am Anfang wieder erscheint) wie kann man das bewerkstelligen ? Ich hab ein 4 Zeilen Display, und die 4 läuft er auch alle durch. Ich will das aber nur in einer Zeile haben alles andere soll still stehen. ?
NBLM schrieb: > Eine Frage hätte ich da noch, wenn ich eine Laufschrift haben möchte die > nur > in eine Richtung läuft (und am Anfang wieder erscheint) wie kann man das > bewerkstelligen ? Ich hab ein 4 Zeilen Display, und die 4 läuft er auch > alle durch. Ich will das aber nur in einer Zeile haben alles andere soll > still stehen. > > ? Dann must Du das selbst programmieren, mit Timer...also Display immer wieder neu beschreben, mit verschobenen Daten...
Einfach mal hier im Forum die Suche benutzen! Dann findet man jede Menge, z.B.: Beitrag "Laufschrift auf dem HD44780"
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.