www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega32: Problem mit zweiter Zeile vom HD44780 LCD Display


Autor: Joscha Ihl (joscha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bei den Kalten Tagen hab ich mal wieder endlich ein bisschen Zeit gehabt 
mich mit dem AVR zu beschäftigen.
Ich hab mal den Code 
http://www.mikrocontroller.net/articles/AVR-GCC-Tu... 
1:1 für die LCD-Ansteuerung meiner zwei verschiedenen 2x16 Zeichen 
Displays verwendet. Funktioniert eigentlich alles ganz toll, bis auf 
dass die zweite Zeile nicht geht. Habe set_cursor(0,2) verwendet um in 
die zweite Zeile zu kommen, leider werden da allerdings ein paar Zeichen 
(jedoch nicht alle) von der ersten Zeile überschrieben und in der 
zweiten ist gar nichts. Mich wundert zudem auch, dass wenn ich den 
Kontrast aufdrehe die erste Zeile immer leicht schwarz wird, die zweite 
jedoch nicht, was ja bedeuten könnte, dass die untere Zeile nicht 
aktiviert ist. Im Forum hab ich hier auch was von irgendeinem Bug in der 
lcd_command() Funktion gelesen, der in der Display-Ansteuerung sein 
soll, hab auch die Zeilen ausgebessert, hat allerdings keinen Effekt 
gehabt, bis auf dass nichts mehr in der ersten Zeile überschrieben 
worden ist, allerdings wurde wieder nichts in der zweiten Zeile 
angezeigt.

Das Problem hab ich übrigens mit zwei verschiedenen 2x16 Zeichen 
Displays, ich vermute also dass das Problem irgendwo im Quellcode liegt.

Hat jemand ne Idee?

Vielen Dank im Voraus

Joscha

Autor: 6643 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Adressposition fuer die Daten der 2. Zeile ist ueblicherweise 0x40 
++

Autor: Joscha Ihl (joscha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, danke für den Hinweis, ich hab jetzt mal Spaßeshalber alle 
Adresspositionen durchprobiert:
for(i=0x80;i<0xff;i++) {
  lcd_clear();
  lcd_command(i);
  lcd_data('x');
  _delay_ms(1000);
}

das 'x' wandert zwar super über die erste Zeile, ist dann nicht mehr zu 
sehen und irgendwann erscheint es wieder in der ersten Zeile und der 
ersten Spalte, ist wieder weg und bleibt dann stehen. Jedoch ist es nie 
in der zweiten Zeile zu sehen.

Stimmt vielleicht irgendwas mit der Initialisierung von dem Display 
nicht?

Viele Grüße

Joscha

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

... ja du musst dem Display beim Init sagen ob's ein oder mehrzeilig 
arbeiten soll.

Sascha

Autor: Joscha Ihl (joscha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habs endlich geschafft, musste nochmals lcd_command(0x28) aufrufen, dann 
gings plötzlich (warum auch immer). Also hab ich an die Funktion 
lcd_init() das noch angehängt:
void lcd_init(void)
{
 /* Programmzeilen aus dem Tutorial */
 ...
  // 4Bit / 2 Zeilen / 5x7
 lcd_command(0x28);
 ...

 /* Angehängter Aufruf: */
 lcd_clear();
 lcd_command(0x28);
}

Viele Grüße

Joscha

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.