LCD Laufschrift

Gast #2135013
Lesenswert?

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;
}

?
Gast #2135033
Lesenswert?

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
Gast #2135987
Lesenswert?

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.

?
#2136010
Lesenswert?

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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren