www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Initialisierung KS0073 / HD44780


Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich betreibe an einem Atmega16 ein DIP204-4 (4x20 von Reichelt) 
Display mit mit dieser lcd_init. Das DIP204-4 funktioniert auch hiermit. 
Nun will ich aber das EA T204B-BNLW (4x20 von reichelt) beide sind 
HD44780 kompatibel. Aber das EA T204B-BNLW bekomme ich nicht zum laufen. 
Was ist hier an der Initialisierung falsch?

void lcd_init(void)
{
   LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN);   // Port auf 
Ausgang schalten

   // muss 3mal hintereinander gesendet werden zur Initialisierung

   _delay_ms(15);
   LCD_PORT &= 0xF0;
   LCD_PORT |= 0x03;
   LCD_PORT &= ~(1<<LCD_RS);      // RS auf 0
   lcd_enable();

   _delay_ms(5);
   lcd_enable();

   _delay_ms(1);
   lcd_enable();
   _delay_ms(1);

   // 4 Bit Modus aktivieren
   LCD_PORT &= 0xF0;
   LCD_PORT |= 0x02;
   lcd_enable();
   _delay_ms(1);

   lcd_command(0x24);
   lcd_command(0x09);
   lcd_command(0x20);
   lcd_command(0x0C);
   lcd_command(0x01);
   lcd_command(0x06);

   lcd_clear();
}

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber das EA T204B-BNLW bekomme ich nicht zum laufen.

Was geht denn nicht? Siehst du überhaupt irgendwas?

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

vielleicht solltest Du nach dem LCD-Löschen "lcd_command(0x01);"
einfach ein bischen Wartezeit spendieren.

Ansonsten ist es bis auf 8/4-Bit mode wie im Beispiel von EA:

http://www.lcd-module.de/deu/disk/development%20se...

http://www.lcd-module.de/download.html

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es sein das das Teil eine negative Kontrastspannung
braucht? Ich hatte da gerade was gelesen zu den Typen
mit einem W im Namen. W = Wide Temperature.

Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also im Moment sehe ich nur die Zeile 2 und 4.
Ich sende einen Text an das LCD. Es erscheinen aber nur wahrlos zeichen 
und der couser blinkt.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es erscheinen aber nur wahrlos zeichen
>und der couser blinkt.

Dann würde ich an deiner Stelle die Verdrahtung noch so
10-20 mal kontrollieren.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage:
wie ist denn der Port-Pin an die ENABLE-Leitung des LCD initialisiert.
(vor dem ersten Init-Kommando???)

Autor: Pascal Schmidt (pascal-schmidt)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier der Quelltext. Den teil habe ich schon für das andere LCD 
angepasst.

// setzt den Cursor in Zeile y (1..4) Spalte x (0..15)

void set_cursor(uint8_t x, uint8_t y)
{
  uint8_t tmp;

  switch (y) {
    case 1: tmp=0x80+0x00+x; break;    // 1. Zeile
    case 2: tmp=0x80+0x40+x; break;    // 2. Zeile
    case 3: tmp=0x80+0x14+x; break;    // 3. Zeile
    case 4: tmp=0x80+0x54+x; break;    // 4. Zeile
    default: return;                   // für den Fall einer falschen 
Zeile
  }
  lcd_command(tmp);
}

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hier der Quelltext. Den teil habe ich schon für das andere LCD
>angepasst.

Wen interessiert das? Bekommst du irgendwo auf dem
Display irgendwie zusammenhängende Texte oder nur Schrott?

Komm endlich mal zur Sache.

Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich doch schon oben geschrieben!

"Also im Moment sehe ich nur die Zeile 2 und 4.
Ich sende einen Text an das LCD. Es erscheinen aber nur wahrlos zeichen
und der couser blinkt."

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Habe ich doch schon oben geschrieben!

>"Also im Moment sehe ich nur die Zeile 2 und 4.
>Ich sende einen Text an das LCD. Es erscheinen aber nur wahrlos zeichen
>und der couser blinkt."

Und warum denkst du das das an der Routine
zur Positionierung des Cursors liegt?
DA liegt das Problem mit Sicherheit nicht.

Gute Nacht.

Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist mir auch klar. Aber das LCD was vorher dran war (DIP204-4), 
hatte halt andere Adressen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das ist mir auch klar. Aber das LCD was vorher dran war (DIP204-4),
>hatte halt andere Adressen.

Oh Mann! Gib drei Buchstaben auf dem Display aus:

ABC

Was siehst du?

Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mache nichts anderes und ich sehe nur schrott!!!!!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich mache nichts anderes und ich sehe nur schrott!!!!!

Tja, und wir alle hier sehen nicht was du siehst.
Könntest du vieleicht die Güte haben zu erzählen
was du siehst? Ist es dir irgendwie möglich
eine Beschreibung des Inhaltes des Displays zu
liefern? Falls nicht, frage doch mal dir bekannte
Personen ob sie für dich vieleicht mal eine
Beschreibung der Dinge die sich da auf dem
Display tun machen könnten.


1,2,3,4 ich dreh gleich durch!

Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn es denn hilfreich ist.....

Zeile 1: steht nix
Zeile 2: L=Ö?/%§///)))===%TGB
Zeile 3: steht nix
Zeile 4: '*_:;;)YSEV?`*===R_-

...ich glaube nicht... wie ich schon sagte nur schrott.

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sagtest Du siehst nur was auf Zeile 2 und 4.
Das sieht irgendwie nach Initialisierung aus. Als 2 zeilges 
inititalisieren.
Ist das Diplay als 2 zeiliges initialisiert ?
Schau ins Datenblatt wo die Adressen der Zeilen sind.
Die unterscheiden sich !!
Kann auch ein Problem mit der Zeilenumschaltung sein !!
Wenn das alles stimmt kommt nur noch eine Datenleitung in Frage.

www.sprut.de hilft ungemein beim Verständnis von LCD Displays.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wenn es denn hilfreich ist.....

>Zeile 1: steht nix
>Zeile 2: L=Ö?/%§///)))===%TGB
>Zeile 3: steht nix
>Zeile 4: '*_:;;)YSEV?`*===R_-

Das siehst du wenn du nur ABC ausgiebst?
Ich denke wir reden hier nicht von derselben Sache.
Mach was du willst und nerv hier nicht weiter rum.

Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
>>wenn es denn hilfreich ist.....
>
>>Zeile 1: steht nix
>>Zeile 2: L=Ö?/%§///)))===%TGB
>>Zeile 3: steht nix
>>Zeile 4: '*_:;;)YSEV?`*===R_-
>
> Das siehst du wenn du nur ABC ausgiebst?
> Ich denke wir reden hier nicht von derselben Sache.
> Mach was du willst und nerv hier nicht weiter rum.

@holger
wenn es dich nervt, dann antworte hier doch nicht. Bei deinen Antworten 
kommt eh nix bei rum. Falls du es nicht wissen solltes, dies hier ist 
ein Forum, wo Meinungen untereinander ausgetauscht werden können, Fragen 
gestellt und beantwortet werden können. Deine schon fast beleidigenden 
Antworten sind hier wohl nicht angebracht.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pascal, die Idee ist du gibst ABC aus und es steht z.B. %&$ dort, daraus 
läßt sich unter Umständen etwas ableiten.

Hier will man dir helfen, wo ist das Problem mal ABC auszugeben und zu 
posten was du siehst ?

Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du den gesamten Beitrag gelesen hättes, wäre es die bestimmt 
aufgefallen, das es dem LCD egal ist was ich schicke. ABC habe ich auch 
gemacht. Es sieht immer so aus, oder ähnlich. Selbst wenn ich die 
Spannung wegnehme, wieder einschalte und auch erneut ABC sende steht 
wieder was anderes im LCD. Das Durcheinader aus Zeichen und Buchstaben 
ist also eher zufällig.


>>Zeile 1: steht nix
>>Zeile 2: L=Ö?/%§///)))===%TGB
>>Zeile 3: steht nix
>>Zeile 4: '*_:;;)YSEV?`*===R_-

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn du den gesamten Beitrag gelesen hättes, wäre es die bestimmt
>aufgefallen, das es dem LCD egal ist was ich schicke. ABC habe ich auch
>gemacht. Es sieht immer so aus, oder ähnlich. Selbst wenn ich die
>Spannung wegnehme, wieder einschalte und auch erneut ABC sende steht
>wieder was anderes im LCD. Das Durcheinader aus Zeichen und Buchstaben
>ist also eher zufällig.

Das wäre doch z.B. mal eine wichtige Information gewesen.
Warum hast du das nicht gleich gesagt?
Irgendwas stimmt da doch mit deinem Anschluss nicht.
Floatet der Enable Pin vieleicht?

Oder das Teil ist bereits defekt.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglicherweise habe ich noch mehr überlesen, ich habe den Beispielcode 
gesehen und ein wenig von dir aber nicht das Ganze originale Program. 
Wenn du nur ABC ausgibst dann kann nicht mehr erscheinen... nicht mehr 
als 3 Zeichen.

Was kommt nach deiner Ausgabe ? ich hoffe nen endless loop, poste mal 
was du hast.

Autor: Pascal Schmidt (pascal-schmidt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <avr/io.h>
#include "lcd-routines.h"

int main(void)
{
    lcd_init();

    set_cursor(0,2);

    lcd_string("Test");

    while(1)
    {
    }

    return 0;
}

Mehr mache ich nicht. Ob das LCD defekt ist, schließe ich mal aus, da es 
neu ist. Hat ja auch alles mit dem DIP204-4 (KS0073) funktioniert. Habe 
ja nur das LCD getauscht (KS0076 laut Reichelt Katalog). Im Datenblatt 
steht was von HD44780. Und beide LCDs sind ja HD44780 kompatibel.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wenn du nir ein LCD_clear machst ?
int main(void)
{
    lcd_init();
    lcd_clear ();

    while (1);

    set_cursor(0,2);

    lcd_string("Test");

    while(1)
    {
    }

    return 0;
}

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.