www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4x20 lcd HD44780 Cursorproblem in C


Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann den Cursor nicht dahin setzen, wohin ich will.
Wenn ich ihn z.B. in die 4.Zeile setzen will springt er an den
Anfang der 2. Zeile.
Ich weiß, daß die 4.Zeile eigentlich die 2.Zeile ist.

Ich benutze diese Funktion dazu.:
   #define  lcd_cursor(x)  lcd_write(((x)&0x7F)|0x80)

lcd_write() schaut so aus:
 void lcd_write(unsigned char c)
 {
 PORTB = (PORTB & 0xF0) |  (c >> 4);
 LCD_STROBE; //#define LCD_STROBE LCD_EN=1;              // 
DelayMs(2);LCD_EN=0;
 PORTB = (PORTB & 0xF0) |  (c & 0x0F);
 LCD_STROBE;
 DelayUs(40);
 }

Wenn ich aber den Viel Text schreibe wird auch die 4.Zeile benuzt.

Weiß jemand woran das liegen könnte.

Das LCD hab ich so initialisiert:
void lcd_init(void)
{
  LCD_RS = 0;  // write control bytes
  DelayMs(15);  // power on delay
  PORTB = 0x3;  // attention!
  LCD_STROBE;
  DelayMs(5);
  LCD_STROBE;
  DelayUs(50);
  LCD_STROBE;
  DelayMs(5);
  PORTB = 0x2;  // set 4 bit mode
  LCD_STROBE;
  DelayUs(40);
  lcd_write(0x28);   // 4 bit mode, 1/16 duty, 5x8 font
  //lcd_write(0x08); // display off
  lcd_write(0x0F);   // display on, blink curson on
  lcd_write(0x04);   // entry mode
  lcd_write(0x01);   // Display Löschen
}

MFG Holger

Autor: Phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab ein 4x20 von Reichelt und da ist das komischerweise
So:

L1=0x80
L2=0xC0
L3=0x94
L4=0xD4

Kannste ja mal ausprobieren

MfG P

Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip. Jetzt funktionierts!!!

Schaut jetzt so aus:

#define lcd_cursor1(x) lcd_write(0x80+x-1)  // L1 pos. x
#define lcd_cursor2(x) lcd_write(0xC0+x-1)  // L2 pos. x
#define lcd_cursor3(x) lcd_write(0x94+x-1)  // L3 pos. x
#define lcd_cursor4(x) lcd_write(0xD4+x-1)  // L4 pos. x

MFG Holger

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.