LCD 164A an ATMega16

OP #733701
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
Angehängte Dateien:
#733987
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:
1
void lcd_data(char byte)
2
{
3
  char sich_byte;
4
  sich_byte = byte;
5
  byte &= ~0x0f;  //Bit 0-3 auf 0 setzen
6
  byte |= (1<<lcd_rs);      //RS setzen
7
  PORT = byte;      //oberes Nibbel Ausgeben
8
  lcd_enable();
9
...

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.
Gast #734176
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
OP #734199
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

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.