www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik at mega32 LCD-Problem HD 44780


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
erst mal ein Danke vorweg für alle, die sich mit meinem Post 
beschäftigen.

Folgende Hardware habe ich hier:
- ein at mega32, 1 MHz Takt
- ein LCD-Modul 2x16 mit HD 44780 Kontroller (EA DIP162-D)

Angeschlossen ist das Display an PortB.

PB0  RS
PB1  R/W
PB2  E

PB4  D4(D0 für 4 Bit Modus)
PB5  D5(D1 für 4 Bit Modus)
PB6  D6(D2 für 4 Bit Modus)
PB7  D7(D3 für 4 Bit Modus)


Die Hardware ist ausgiebig getestet und zu 100% funktionsfähig.

Jetzt zu meinem Problem. Ich sitze schon seit 5 Tagen dran und hab es 
noch nicht geschafft
kontrolliert ein Zeichen auf dem Display darzustellen.
Irgendwas mache ich wohl falsch aber ich komm nicht drauf.
Das Tutorial habe ich auch von oben bis unten durch gearbeitet,
hat mich aber nicht weiter gebracht.

Ich poste hier mal 3 Versuche von mir, vielleicht kann mir irgendwer 
weiterhelfen.

Danke
anemby

Autor: kschwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal so ganz auf die schnelle:
Du scheinst WinAVR zu nutzen. Warum nimmst du nicht einfach das Beispiel 
stdiodemo aus der WinAVR installation? Dort gibt es sehr gut 
struturiertes 4-Bit LCD Programm, dass auch schon funktioniert und 
dokumentiert ist.

Bei div. LCD gibt es trotz gleichen Controllers unterschiedliches 
Verhalten, wenn man in der SW mit dem Timing "pfuscht". Das ist in dem 
Beispiel schon bereinigt und geht auch mit "langsamen" Displays.

Nichts und niemand nimmt dir die Möglichkeit, dann noch deine weitere SW 
zu entwickeln, aber LCDs sind schon soooooooo oft der Stein des 
Anstosses gewesen, dass die eigene SW-Entwicklung nicht mehr lohnt.

Autor: anemby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke aber die Demo scheint mir auch nicht weiter zu helfen, da dort das 
BUSYFLAG genutzt wird, ich das aber nicht zur Verfügung habe bei meinem 
Display.

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bezweifle, dass jemand hier die Geduld hat, alle 3 von dir 
hochgeladenen Versionen durchzuackern. Tipp fürs nächste Mal: beschränke 
dich auf eine C-Datei, und lade sie auch in .c hoch, dann wird es auch 
vom Forum angezeigt und man muss nicht runterladen und entpacken.

Was mir beim 1. Blick so auffällt: Du hast die Datenleitungen des LCDs 
auf die oberen 4 bit des Ports gehängt. Die meisten LCD-Funktionen 
inklusive das Tutorium hier auf der Seite verwenden dazu aber die 
unteren Portbits. Falls du trotzdem die oberen Bits verwenden willst, 
musst du die Daten bei der entsprechenden Funktion 4 bit nach links 
schieben.

Aus deiner "LCDsteuerung.c":
void lcd_data(unsigned char temp1)
{
  unsigned char temp2=temp1;

  LCD_PORT |= (1<<LCD_RS);

  temp1=temp1 >> 4;
  temp1=temp1 & 0x0F;
  LCD_PORT &= 0xF0;
  LCD_PORT |= temp1;
  lcd_enable();

  temp2=temp2 & 0x0F;
  LCD_PORT &= 0xF0;
  LCD_PORT |= temp2;
  lcd_enable();

  _delay_us(42);
}

Korrekt für deine Belegung wäre sowas:
void lcd_data(unsigned char temp1)
{
  unsigned char temp2=temp1;

  LCD_PORT |= (1<<LCD_RS);

  temp1=temp1 & 0xF0;
  LCD_PORT &= 0x0F;
  LCD_PORT |= temp1;
  lcd_enable();

  temp2=temp2 << 4;
  LCD_PORT &= 0x0F;
  LCD_PORT |= temp2;
  lcd_enable();

  _delay_us(42);
}

Oder du machst dir das Leben einfach und hängst die Datenbits auf die 
Portbits 0-3.

Gruß,
David

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.