mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD 164A an ATMega16


Autor: Florian M. (skywalker79)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe ein Problem beim Ansteuern eines 16x4 Displays.
Angeschlossen ist das Display an den PortA vom ATMega16.
Die Pinbelegung ist: PA0=RS PA1=E PA2=DB4 PA3=DB5 PA4=DB6 PA5=DB7 R/W 
ist an Masse angeschlossen.
Beim Einschalten wird in der ersten und dritten Zeile ein schwarzer 
Balken angezeigt, die anderen beiden Zeilen sind leer.
Die Schaltung wurde in der Form schon erfolgreich an einem 16x2 Display 
ausprobiert.
Die Firmware hab ich ebenfalls von der 16x2 Display Version übernommen 
und angepasst.

Den Quellcode habe ich als ZIP Datei angehängt.
Ich hoffe es kann mir einer von euch bei meinem Problem helfen.

mfg Florian

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian M. wrote:

> Die Pinbelegung ist: PA0=RS PA1=E PA2=DB4 PA3=DB5 PA4=DB6 PA5=DB7 R/W

Die Pinbelegung scheint mit dem Code nicht übereinzustimmen.

Beispielsweise:
void lcd_data(char byte)
{
  char sich_byte;
  sich_byte = byte;
  byte &= ~0x0f;  //Bit 0-3 auf 0 setzen
  byte |= (1<<lcd_rs);      //RS setzen
  PORT = byte;      //oberes Nibbel Ausgeben
  lcd_enable();
...

Der Code erwartet offentlich, daß das Datennibble auf die portbits 4-7 
ausgegeben wird und nicht 2-5...

Ich empfehle, die Datenleitungen auf PA4-7 umzulöten.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nicht zu vergessen, das DDRA in der main() anzupassen (0b11110011).

Übrigens Glückwunsch noch zu der Fehlerbeschreibung. Sowas detailiertes 
trifft man hier nicht jeden Tag...

Autor: He Ro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Schaltung wurde in der Form schon erfolgreich an einem 16x2 Display
> ausprobiert.
> Die Firmware hab ich ebenfalls von der 16x2 Display Version übernommen
> und angepasst.

Heißt das: Wenn du in genau derselben Schaltung mit genau derselben 
Firmware ein 16x2-Display anschließt, funktioniert es? (bis auf die 
Zeichen, die eigentlich in Zeile drei und vier stehen sollten, aber 
nicht zu sehen sind)?

Dann würde ich auf Fehler bei der Initialisierung tippen. Im 
Zweifelsfall beim Einschalten ein Weilchen warten, damit der uC nicht 
schneller startet als der Display-Controller, und dann dreimal resetten. 
Damit habe ich bisher alle LCDs doch irgendwann halbwegs zuverlässig zur 
Mitarbeit bewegen können...

MfG, Heiko

Autor: Florian M. (skywalker79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

So ich hab jetzt noch einmal Testweise das 4 Zeilen Display an die 
Schaltung für das 2 Zeilen Display gehängt und es funktioniert.
Der Fehler lag also an der Pinbelegung, so wie es Niels richtig erkannt 
hat.
Ich hab nicht beachtet, dass das Display in der alten Schaltung an 
anderen Pins angeschlossen war und dementsprechend der Quellcode nicht 
gepasst hat.

Jetzt hab ich einfach die Datenleitungen an die Pins PA4-PA7 gelegt und 
das Display funktioniert.

Danke an euch und eure Hinweise.

mfg Florian

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.