- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: LCD-Display: Cursor springt an falsche Stelle

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656

    LCD-Display: Cursor springt an falsche Stelle

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich habe ein Problem:
    Ich hatte bisher nie Schwierichkeiten beim ansteuern eines normalen LCD-Display im 4-Bit Modus. Jetzt funktioniert aber das Versetzen des Cursors nicht mehr richtig. Wenn ich ihn (mit der Funktion "lcd_goto()") an eine Stelle in der ersten Zeile des Displays setzen will, klappt das auch, aber wenn ich ihn an eine Stelle in der zweiten Zeile setze erscheint er immer an der ersten Position der zweiten Zeile.
    Hier ist mal mein Code:
    Code:
    void lcd_send(char data)
    {
    	char rs = LCD_PORT;
    	rs &= 4;
    	char tmp = data;
    	tmp &= 0xf0;
    	tmp |= rs;
    	LCD_PORT = tmp;
    	sbi(LCD_PORT, 3);
    	cbi(LCD_PORT, 3);
    	tmp = data;
    	tmp &= 0x0f;
    	tmp *= 16;
    	tmp |= rs;
    	LCD_PORT = tmp;
    	sbi(LCD_PORT, 3);
    	cbi(LCD_PORT, 3);
    	_delay_ms(5);
    }
    
    void lcd_cmd(char cmd)
    {
    	cbi(LCD_PORT, 2);
    	lcd_send(cmd);
    }
    
    void lcd_goto(int row, int col)
    {
    	row--;
    	row &= 0x01;
    	row *= 40;
    	col--;
    	col &= 0x0f;
    	char tmp = row | col;
    	tmp |= 0x80;
    	lcd_cmd(tmp);
    }
    Dieser Code hat eigentlich immer funktioniert. Ich habe nichts daran geändert, aber jetzt funktioniert er nicht mehr (an dem LCD-Display und der Hardware kann es nicht liegen, da ich ihn mit zwei verschiedenen Displays mit zwei verschiedenen Schaltungen getestet habe).

    Hat jemand vielleicht eine Idee, woran es liegen könnte?

    Wäre für schnelle Hilfe sehr dankbar,
    mfg
    _R2D2

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    Der Fehler muss in der Funktion lcd_goto() sein, da es zb. mit lcd_cmd(43) um zu dem 4. Zeichen in der 2. Zeile zu gelangen funktioniert.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad