Hallo!
Ich mache dertzeit gerade das AVR-Tutorial auf der Website durch und
habe Probleme mit dem LCD-Teil. Ich habe das LCD wie beschrieben
(http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD)
angeschlossen und das dazugehörige Programm per AVR-Studio compiliert
und mit meinem USB-ISP-Kabel in den Kontroller (ATMEGA8) erfolgreich
eingefügt. Leider passiert dann aber überhaupt nichts. Das einzige was
ich sehe sind die 2 schwarzen Balken, die ich aber sehe sobald ich
Spannung über das Board (Olimex P28) anlege.
MfG
AP
Dann funktioniert die Initialisierung des LCDs nicht korrekt.
Wie hast du es denn genau angeschlossen?
Hast du auch alle Teile des Quelltextes übernommen und auch - ich sag
mal - verstanden?
Ich hab's schon mehrmals überprüft. Das einzige was ich geändert habe
ist, dass ich für den 3. Pin des LCD kein Poti benutzt habe. Den
Quelltext konnte ich eins zu eins übernehmen. Verstanden habe ich ihn
denke ich schon. Zwischen dem 15. Pin (Bildschirmbeleuchtung)und VCC
habe ich noch einen 220 Ohm Widerstand eingefügt. Das sind die einzigen
Änderungen die ich vorgenommen habe.
Danke Peter...ich werde mir die Seite mal anschauen. An sich bin ich ja
gerade dran das ganze auf Assembler zu lernen. Allerdings kann ich C
schon besser. Vielleicht sollte ich also damit anfangen.
AP schrieb:> Das einzige was ich geändert habe> ist, dass ich für den 3. Pin des LCD kein Poti benutzt habe.
Schonmal an eine fehlerhafte Kontrastspannung gedacht?
Ist die Spannung zu hoch/niedrig, kann man nicht mehr zwischen ein- und
ausgeschalteten Segemente unterscheiden - entweder erscheint alles
"schwarz" (eingeschaltet) oder "grün" (ausgeschaltet) - ja nach dem,
welche Farbgebung das Display hat.
Auf welchem Potential liegt VEE denn bei dir?
AP schrieb:> Das einzige was ich geändert habe> ist, dass ich für den 3. Pin des LCD kein Poti benutzt habe.
Was hast du denn sonst gemacht?
Was hat der Pin für eine Funktion?
Welche Spannung sollte denn da anliegen?
Das ist, wie wenn du ein Autorennen fährst, das dann verlierst und
hinterher sagst: ich habe alles gleich gemacht, nur den Zündschlüssel
habe ich nicht rumgedreht... :-/
Der 3. Pin auf dem LCD ist für die Kontrastspannung zuständig. Bei mir
liegt er auf GND. Man kann den Kontrast anscheinend über ein Poti
erhöhen, das man zwischen GND und +5V schaltet. Über diese Poti soll man
dann eine negative Spannung legen. Ich weiß leider nicht wie ich so eine
negative Spannung ohne zusätzliche Stromquelle erzeugen kann.
Ich glaube eigentlich nicht, dass es sich um einen Fehler beim Kontrast
handelt. Wenn ich Strom an das Board lege sehe ich die einzelnen Felder,
sowie die Zwischenräume sehr deutlich.
Eine Frage noch:
Im Tutorial steht, dass man den VCC-Pin des LCD mit +5V verbinden soll.
Liege ich Recht in der Annahme, dass damit der VCC-Pin des Controllers
gemeint ist?
MfG
AP
Kann es etwas mit der Taktfrequenz zu tun haben?
Der ATMEGA8 hat ja eien Taktfrequenz von 4MHz. Mein Board verfügt aber
über ein externes Quarz mit 8MHz. Ich weiß aber leider nicht ob es
aktiviert ist. Wie könnte ich das denn herausfinden?
Hi
>Über diese Poti soll man>dann eine negative Spannung legen. Ich weiß leider nicht wie ich so eine>negative Spannung ohne zusätzliche Stromquelle erzeugen kann.
Eine negative Spannung gegenüber VCC .
MfG Spess
Hallo!
Ich habe im AVR-Studio bei "Fuses" auf "Read" gedrückt und es erscheint:
Int. RC Osc. 1MHz
Wenn der AVR intern getaktet wird, sollte doch hier eigentlich 4MHz
stehen, oder?
Könnt ihr mir sagen wie ich das mit "negativ gegen VCC" anstelle?
AP schrieb:> Hallo!>> Ich habe im AVR-Studio bei "Fuses" auf "Read" gedrückt und es erscheint:>> Int. RC Osc. 1MHz
Dann läuft der Controller nur mit 1MHz - Es sind aber bis zu 4MHz intern
möglich . (Plenken wegen der Formatierung.)
"The device is shipped with CKSEL = “0001” and SUT = “10” (1 MHz
Internal
RC Oscillator, slowly rising power)."
Und:
"The calibrated internal RC Oscillator provides a fixed 1.0, 2.0, 4.0,
or 8.0 MHz clock. All frequencies
are nominal values at 5V and 25°C. This clock may be selected as the
system clock by
programming the CKSEL Fuses as shown in Table 9."
>Eine negative Spannung gegenüber VCC .
Wozu? Siehe unten.
>Das einzige was ich sehe sind die 2 schwarzen Balken,
Auf was für einem Display? Zwei Zeilen?
Dann ist der Kontrast evtl. zu weit aufgedreht.
>Der 3. Pin auf dem LCD ist für die Kontrastspannung zuständig. Bei mir>liegt er auf GND.
Dann schliess da ein Poti an. Oder
Vcc-10k-Vee-1k-Gnd.
So...
Ich habe jetzt die Schaltvariante mit VCC-10K-VEE-1k-GND ausprobiert.
Dabei konnte ich beobachten, dass bei dieser Schaltung der untere Balken
des LCD verschwindet. Der obere bleibt.
Selbst wenn ich überhaupt keine Verbindung zu GND habe, bleibt der obere
Balken erhalten.
Weiß jemand wie das möglich ist? Lötdefekte oder ähnliches???
Bei meinem 16x2-LCD ist es so:
Spannung ein:
Zeile 1 schwarz, Zeile 2 blau.
µC (Tiny2313) initialisiert das Display (wie im Tutorial) im 4bit-Modus.
Konfiguration auf 2 Zeilen.
Zeile 1 und Zeile 2 sind danach schwarz.
Display-Clear-Befehl wird gesendet.
Beide Zeilen des Display werden blau.
Danach folgt noch ein Cursor-Reset nach oben links, und danach wandern
meine Texte lustig in das Display, wie sie sollen.
Ich habe jetzt wirklich alles nochmal überprüft.
- die Lötstellen
- die Taktfrequenz
- den Codev (darauf geachtet, dass es ein 2x16 LCD mit 5x8 Matrizen ist)
Ich weiß jetzt echt nicht mehr weiter...
AP schrieb:> Ich habe jetzt wirklich alles nochmal überprüft.> - die Lötstellen> - die Taktfrequenz> - den Codev (darauf geachtet, dass es ein 2x16 LCD mit 5x8 Matrizen ist)>> Ich weiß jetzt echt nicht mehr weiter...
Logikanalysator anschliessen oder einfacher:
uC in EInzelschrittbetrieb laufen lassen une bei jedem Schritt den Pegel
an den LCD-Pins messen.
Gruss
Michael
AP schrieb:> Dabei konnte ich beobachten, dass bei dieser Schaltung der untere Balken> des LCD verschwindet. Der obere bleibt.
Nun ist zumindest der Kontrast korrekt!
Bei einem uninitialisierten Display wird nämlich nur die erste Zeile
angesteuert.
Mach doch mal ein Foto von Deinem Aufbau und stell dies hier ein. Besser
2: Eins von oben, eins von unten. Aber bitte die Bildgrößen beachten!
Gruß
Jobst
Hallo!
Ich habe leider gerade keine Möglichkeit meinen Aufbau zu fotografieren
(Kamera nicht funktionstüchtig).
Allerdings habe ich im Internet das Datenblatt meines LCD gefunden.
http://www.lcd-module.de/pdf/doma/2_16.pdf
Darin ist ein Initialisierungsbeispiel für den 4-bit Modus gegeben, dass
deutlich anders aussieht als das im Tutorial. Ich wäre sehr dankbar wenn
das jemand der sich auskennt mal etwas anschauen könnte.
Den Link zum Tutorial habe ich bereits oben angegeben.
Was mich noch wundert ist, dass im Datenblatt (bei der Initialisierung)
angegeben ist, dass es sich um 7x5 Matrizen und nicht um 8x5 Matrizen
handelt. Auf zweiteres komme ich aber wenn ich beim LCD nachzähle. Wie
kann man das verstehen?
Fotos kommen in Bälde.
MfG
AP
Hast du vielleicht den gesamten Code zur Verfügung (mit Unterfunktionen
und Co.)?
Dann könnte ich es mal mit meinem vergleichen und schauen was genau
anders ist.
Was genau ist zum Beispiel LCD_command
Um den 4-bit Modus zu initialisieren, muss man ja zuerst sicher im 8-bit
Modus sein. Deshalb die drei Wiederholungen.
Im Datenblatt habe ich nun gelesen, dass man dazu
folgendes setzten muss:
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 1 1 0 0 0
Im Tutorial steht nun, dass man DB3 überhaupt nicht anschließen muss.
Wie soll ich das verstehen?
MfG
AP
AP schrieb:> Im Tutorial steht nun, dass man DB3 überhaupt nicht anschließen muss.> Wie soll ich das verstehen?
Das Display muss doch trotzdem seine 8-Bit an Daten bekommen.
Es werden 2 4-Bit Pakete gesendet.
Gruß
Jobst
Wenn im Datenblatt bei der Initialisierung für den 4-bit Modus pro
"Befehl" 2 Zeilen stehen, meint man damit in der ersten das obere Nibble
und in der unteren das untere Nibble?
AP schrieb:> Wenn im Datenblatt bei der Initialisierung für den 4-bit Modus pro> "Befehl" 2 Zeilen stehen, meint man damit in der ersten das obere Nibble> und in der unteren das untere Nibble?
Jopp
Sobald das Display initialisiert ist, sollten beide Balken sichtbar
sein, oder?
Obwohl, sobald ich die Spannung am Kontrast-Pin ändere sehe ich ja auch
beide Balken. Den Code habe ich jetzt einmal vollkommen durchgearbeitet
und zum Teil auch verändert...nichts.
Der Code den du (jobst) mir gegeben hast geht auch nicht. Die
Beschaltung stimmt 100%-ig.
Das alles richtig läuft und ich es wegen dem Kontrast nicht sehe glaube
ich eigentlich nicht. Entweder das Board ist kaputt (den Controller habe
ich bereits ausgetauscht), oder das LCD.
Mein letzter Versuch wird sein, alles einmal auf den B-Pins
durchzuziehen.
Sollte das nicht gehen kaufe ich mir ein neues LCD. Ich will das
hinbekommen.
Ich glaube nicht, daß das Display kaputt ist.
RW liegt an GND ?
Bilder wären hilfreich ...
Welche Spannungen liegen, nachdem mein Programm durchgelaufen ist, an
den Pins des Displays? Angefangen bei Pin1
Nachtrag: Das Programm braucht keine Sekunde.
Gruß
Jobst
Ja...es funktioniert!!!!!
Ich habe jetzt alles mit den B-Pins gemacht und es funktioniert
hervorragend.
Offensichtlich haben meine D-Pins irgend einen Schaden genommen (Was
natürlich sehr schlecht ist.) Allerdings ist es Controller unabhängig.
Daher kann ich wohl ausgehen dass mit den Lötstellen etwas nicht stimmt
(Obwohl ich eigentlich mehrmals die Stellen überprüft habe, und auch die
Spannungen gemessen habe). Was sonst könnte dazu führen, dass die D-Pins
versagen?
Bis hier her auf jeden Fall schon einmal vielen Dank an alle. Vor allem
jobst. Schön dass ihr die Nerven auf bringt solchen Anfängern wie mir zu
helfen.
MfG
AP
Um diese Frage von dir noch zu beantworten:
>Was mich noch wundert ist, dass im Datenblatt (bei der Initialisierung)>angegeben ist, dass es sich um 7x5 Matrizen und nicht um 8x5 Matrizen>handelt. Auf zweiteres komme ich aber wenn ich beim LCD nachzähle.
Die 7x5 gelten für die Buchstaben, die unterste Reihe Pixel in jeder
Zelle ist für den Cursor. Du kannst aber bei selbst definierten Zeichen
auch die 8. Pixelzeile nutzen
Von hier:
http://www.mikrocontroller.net/articles/Pseudo-Graphische_LCD-Ansteuerung
fast ganz oben, "Um der Verwirrung zu vorzubeugen:" (Schreibfehler fällt
mir gerade auf^^)
Gruß
-schumi-