www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HD44780 unter CodeVision


Autor: VollNoob (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal Hallo,

Ich weis das hier jeden Tag mindestens 10 Leute über LCD's fragen, aber 
ich bin echt am Ende meines Lateins, ich haben die Codesammlung 
durchforstet und auch das Tutotial probiert und nichts klappt.

Wie im Betreff genannt habe ich ein 4x20 LCD mit HD44780 und Programiere 
unter C mit Codevision Compiler.

Im Anhang befindet sich die Initialisierung und der Versuch ein H auf 
dem LCD auszugeben, leider funktioniert es aus irgendeinem Grund nicht, 
hoffe mir kann jemand helfen.

Es geht bei init irgendwas schief, der nur die 1er Zeilen( 1&3 ) 
initialisiert werden und sonst gar nix passiert.

danke im voraus.

Autor: VollNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Edit: Jetzt habe ich glatt vergessen zu erwähnen das ich einen ATMEGA 
128 auf STK501 benutze , das LCD läuft im 4Bit Modus und hängt an PORTB.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist Deine main()?
Abgesehen davon ist es ein ziemlicher Krampf, jedes Bit einzeln zu 
setzen.

Außerdem übernimmt der Controller des Displays die Daten mit der 
fallenden Flanke an LCD_E. Du musst schon erst die Daten auf den 
Datenbus legen und dann erst einen kurzen Low-Impuls an LCD_E geben. 
Wenn Du LCD_E vor der Datenausgabe auf "0" schaltest, dann werden in dem 
Moment die Daten, die von vorher noch an den Datenpins waren, 
übernommen.

Zu Deiner void WriteLCDData4() z.B. (ohne Gewähr!):
//...
LCD_E = 1;
PORTD &= 0x0F; //D7..4 löschen
PORTD |= data & 0xF0; //High-Nibble ausgeben
LCD_E = 0; //Enable auf Low
#asm("nop") //Kurz warten
#asm("nop")
LCD_E = 1;
PORTD &= 0x0F;
PORTD |= data << 4; //Low-Nibble ausgeben
LCD_E = 0; //Enable auf Low
//...

Autor: VollNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal danke für Antwort.

Ich setzt LCD_E deshalb erst auf null weil meine MCU Low-Active, also 
wenn null ist Ein, wenn eins ist aus.

die Main ist ja jetzt nicht wichtig, da steht nur

void main( void )
{
 InitLCD();
}

Gut, das mit den Ports setzten ist ansichtssache, aber ja kein Fehler.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich setzt LCD_E deshalb erst auf null weil meine MCU Low-Active, also
> wenn null ist Ein, wenn eins ist aus.

Hä?

Autor: VollNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich z.B. PORTD.1 = 1 setzte, hab ich 0V anliegen,
wenn ich PORTD.1 = 0 setzt, habe ich 5V anliegen.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, beim STK500 leuchten die LEDs bei L-Pegel. Das kann einen 
"besoffenen Neuling" (voll noob) schon mal zu falschen Schlüssen 
verleiten...

Prost... ;-)

...

Autor: VollNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin ja echt der Mega VollNoob, oh mein gott, ich nachhinein kommt 
einem immer alles so logisch vor^^, werd das gleich mal testen.

btw. man hätte das aber auch netter sagen können xD, jetzt am Nachmittag 
bin ich schon fast wieder nüchtern^^.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du das Display an den Controller-Port direkt anschließt, dann hast 
Du bei einer 0 im Portregister auch eine 0 am Ausgangspin...

Autor: VollNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es haut jetzt mit Init soweit hin das alle Zeilen angezeigt werden, der 
Cursor wir ist zwar auf der Falschen stelle, aber das Krieg ich schon 
hin, danke euch.

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.