Hallo!
Ich hatte vor kurzem schon einmal auf der Seite
Beitrag "LCD-Display Ansteuern mit ATmega2561 funktioniert nicht" berichtet, dass ich versuche
ein LCD-Display anzusteuern. Da dies nicht funktionierte, (auch nachdem
ich das Tutorial durchging) hatte ich mir gedacht, dass das Display
defekt ist. Somti habe ich dieses Ausgebaut und mit einem Display Namens
"CP5 94V-0 KW" ersetzt. Nun funktioniert das Display allerdings
immernoch nicht und ich weiß nicht woran es liegen kann. Wenn ich das
Poti (das ich zuum Kontrast einstellen eingebaut habe) drehe, ändert
sich nur der Kontrast von der ersten und der zweiten Spalte. Beim
Vorhergehenden Display (welches nur ein zweireihiges war) änderte sich
überhaupt nur die erste Zeile. Wisst ihr woran das liegen könnte?
danke Cyberfoxx
PS: im Anhang noch meine Header-Datei
Ich habe auch gelesen dass die Display-Pins 7-10 mit den Pins 11-14
verbunden weden müssen. Ist das wahr?
Hi!
also weiß keine eine Begründung? Wie bereits im anderen Beitrag
beschrieben, wird ein ATmega2561 verwendet und die Pins für das Display
für den 4-bit Betrieb sind PE4-PE7. Und die Pind R/S und Enable sind auf
PG0 und PG2. Dies habe ich alles in der lcd_routines.h umgestellt. Was
mich allerdings verwundert ist, wo wird der R/W-Pin (PG1) definiert?
oder kann dieser Pin einfach auf low gesetzt werden (0... Write)
lg Cyberfoxx
> oder kann dieser Pin einfach auf low gesetzt werden (0... Write)> lg Cyberfoxx
es ist klar dass du nichts siehst weil das display im undef. zustand ist
bzw ich denke mal default. mäßig vll sogar auf lesen(also high) gestellt
ist du musst ihn explizit auf low ziehen um drauf schreieben zu können
stand aber meine ich auch im tut
Hallo,
Pin 7 - 10 bleiben frei 11 - 14 sind die Datenleitungen und werden mit
dem
Atmega verbunden. R/W auf Masse.
Gilt aber nur bei einer Standardbelegung des Display.
Habe mit dem Oszi nachgemessen. Die Pins 2(Vdd),4(RS),7-10 und 13 waren
bei mir dauerhaft auf High, der Rest auf Low (abgesehen von Pin 3-->
Spannung von Poti für Kontrast).
Habe nun die Leitung zu den Pins 7-10 abgezwickt, hat aber auch nichts
genützt.
Sollte sich der Pegel auf den Pins 11-14 und der Pin 4 sich nicht
durchgehend wechseln?
In meiner main-Schleife steht:
Hallo,
wie schon gesagt, Pin 7 - 10 am Display bleiben frei. Du willst ja nur
eine
4 Bit - Ansteuerung machen.
Überprüfe deine Änderungen in der LCD-Routines.h. Du hast zwar deine
vermeintlichen Anpassungen vorgenommen, aber die Kommentare nicht
geändert.
Ist dadurch unübersichtlich für jemanden der sich ansonsten mit PICs
beschäftigt. Ich meine damit mich.
So wie der Code jetzt ist, müssen RS und EN mit am gleichen PORT wie die
Datenports hängen, also bei Dir PORTE. Sonst müsstest du die PORTx und
DDRx Angaben in lcd-routines.c an den entsprechenden Stellen ändern!
Gruß,
Markus
Danke! Werde diese Anpassungen gleich mals machen.
Noch eine Frage für mein Verständniss:
Bedeutet das, dass für den µC egal ist ob PA0, PB0, PC0 etc. im Code
steht und für ihn das alles 0x00 bedeutet (und PA1, PB1 usw. 0x01)???
-->
Px0: 0x00
Px1: 0x01
Px2: 0x02
Px3: 0x04
Px4: 0x08
usw.?
Cyberfoxx schrieb
> Bedeutet das, dass für den µC egal ist ob PA0, PB0, PC0 etc. im Code> steht und für ihn das alles 0x00 bedeutet (und PA1, PB1 usw. 0x01)???
Jep, für den Compiler ist das nur 'ne Zahl, genauso wie du das schon
erkannt hast. Das soll den Code eigentlich übersichtlicher machen, aber
impliziert halt möglicherweise wie in Deinem Fall etwas Anderes.
PORTE = (1<<PA0)
ist technisch das Gleiche wie
PORTE = (1<<PE0)
da PE0 = PA0 = 0