HD44780 unter CodeVision

Gast #503995
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.
Angehängte Dateien:
Gast #504041
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!):
1
//...
2
LCD_E = 1;
3
PORTD &= 0x0F; //D7..4 löschen
4
PORTD |= data & 0xF0; //High-Nibble ausgeben
5
LCD_E = 0; //Enable auf Low
6
#asm("nop") //Kurz warten
7
#asm("nop")
8
LCD_E = 1;
9
PORTD &= 0x0F;
10
PORTD |= data << 4; //Low-Nibble ausgeben
11
LCD_E = 0; //Enable auf Low
12
//...
Gast #504047
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.
Gast #504086
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^^.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.