Hallo,
ich habe ein 2x16-LCD-Lmodul bei Pollin gekauft und einen Stecker dran
gelötet. Auf einer Platine habe ich einen Mikrocontroller mit diesem
Stecker verbunden. Die Pin-Belegungen für den HD44780-Controller habe
ich in der Header-Datei angepasst.
Als ich das Ding in Betrieb nehmen wollte, hat das Display allerdings
nicht richtig funktioniert. Die Display-Beleuchtung ist ungleichmäßig
(an der Beschaltung kann das ja wohl nicht liegen oder?) und die erste
Zeile ist komplett mit schwarzen Zeichen ausgefüllt. Nachdem ich einige
Minuten rumprobiert habe, ist mir aufgefallen, dass das Display verdammt
heiß war. Ich habe aber dann auch festgestellt, dass auf der kleinen
Display-Platine (auf der der HD44780 drauf sitzt) 7 Kondensatoren
fehlen!
Alle "C1-7)-Pads sind nicht bestückt, die R-Pads sind alle bestückt.
Meint ihr, dass das der Fehler ist?
Wenn ja, kann ich dieses Display bei Pollin noch umtauschen (Bestellung
ist 3 Wochen her), auch wenn ich das Flachbandkabel abgeschnitten habe,
weil es mich immer gestört hat?
Danke schonmal
Flea
Dass die Cs fehlen, ist normal. Die sind für die Displayspannung
zuständig und werden meist vorgesehen aber nur in den seltensten Fällen
bestückt.
Wenn das Display heiß wird, hast du was falsch angeschlossen.
Hallo,
da die schwarze Zeile angezeigt wird, scheint der Controller ja zu
leben.
Kann noch die Displaybeleucgtung heiß werden, dann ist aber der
LED-Strom zu groß nzw. der Vorwiderstand zu klein.
Gruß aus Berlin
Michael
Hab das schon oft kontrolliert, aber muss ich halt nochmal gründlich
machen.
Wenn man den HD44780 mit 4 Bit ansteuert (also nicht memory mapped
Mode), müssen die Datenleitungen vom ATmega 16 dann mit D0-D3 oder mit
D4-D7 des HD44780 verbunden werden?
Ne andere Frage:
Ist der Kondensator zwischen dem Reset- und Vcc-Pin wichtig? Mir fällt
nämlich gerade auf, dass ich den vergessen habe.
Du mußt D4-D7 statt D0-D3 anschließen. Außerdem scheint die
Hintergrundbeleuchtung ohne Vorwiderstand herausgeführt zu sein.
Die kannst Du dann nicht direkt an den "Saft" anschließen, da macht es
"Bumm"!
MfG Paul
Hallo,
naja, Datenblatt...
Du hast Dich davon überzeugt, daß die LEDs der Hintergrundbeleuchtung
einen Vorwiderstand auf dem Display haben? Ich sehe in Deiner Schaltung
keinen. Wenn man keine Angaben dazu hat, muß man eben den vermutlich
passenden Wert vorsichtig ausprobieren. Bei einer roten LED und 20mA
wären es 5V-1,6V = 3,4V/0,02A = 170 Ohm. Also mit z.B. 150 Ohm beginnen,
Helligkeit und Strom begutachten und verringern, bis beides glaubwürdig
ist. Besser ist natürlich, man hat genaue Daten über die
Hintergrundbeleuchtung.
Bei Displays dieser Größe würde ich schätzen, daß man bei 47...4,7 Ohm
landen wird.
Gruß aus Berlin
Michael
Mein Vermutung: Display wird warm wegen dem fehlenden Vorwiederstand der
Hintergrundbeleuchtung. Blendet es nicht? ;-)
Die schwarzen Zeichen sind wahrschienlich Zufall, da der
Display-Controller nicht initialisiert ist.
Laß doch erstmal die Hintergrundbeleuchtng weg, dann dürfte die
"heizung" auch aus sein. Dann weißt Du dass es an einem fehlenden
Widerstand liegt.
Wie Du den auslegst, ist ja oben beschrieben worden.
Hajo
Ein oft gemachter Fehler.
Das Display ist nach dem Power-On-Reset immer im 8bit-Modus. Zur
Umschaltung vom 8bit- in den 4bit-Modus müssen D5 und D4 auf "high"
liegen. Somit muß man zwingend die obere Hälfte des Datenbusses
anschließen und nicht die untere. Bei manchen Displays müssen D0 bis D3
dabei mit Masse verbunden werden, andere haben entsprechende
Pull-Down-Widerstände eingebaut.
Das heißt auch, daß man die unteren vier Bit erst einmal nicht erreichen
kann, bevor das Display umgeschaltet ist. Im Datenblatt ist die genaue
Prozedur für die Initialisierung in den 4bit-Modus dargestellt. Einfach
dran halten oder - einfacher - eine der zahlreichen getesteten Libs
verwenden.
Der Controller treibt bei zweizeiligen Displays erst einmal nur die
obere Zeile. Bei vierzeiligen ist es meist die erste und dritte Zeile,
die dunkler erscheint. Das hängt mit der Konfiguration und dem Anschluß
der Maxtrix an den Controller zusammen. Die Konstrasteinstellung
beeinflusst das ganze - ist sie korrekt für den zweizeiligen Modus,
erscheint im einzeiligen Modus die ganze Zeile dunkel.
Also mach dir keine Sorgen, dein Display ist wahrscheinlich noch in
Ordnung!
Also ich habe jetzt gerade kurz die Verbindung zur Display-Beleuchtung
durchgetrennt, und es wird nicht mehr warm!!!
Schon mal was!
Die D0-D3 - Leitungen habe ich schon länger mal mit den D4-D7 -
Leitungen verbunden, d.h. dass D0 mit D4, D1 mit D5 usw. verbunden ist.
Damit habe ich beide Möglichkeiten abgefangen, da ich ja nicht wusste,
ob D0-D3 oder D4-D7 angesteuert werden muss. Und da tut sich eben noch
nichts!!!
Ich verwende übrigens die LCD-Include-File von Peter Fleury.
An was kann das denn liegen?
achja, lcd_inti() führe ich natürlich am Anfang des Programms durch!
Kann es vielleicht sein, dass in der lcd.c von Peter Fleury andere Pins
zum Initialisieren gesetzt werden, als mein Display benötigt?
nochmal eine Frage:
Wenn ich das Display im 4Bit-Mode betreiben will, werden die Daten ja
über D4-D7 übermittelt. Müssen dabei die Datenleitungen D0-D3 in der
Luft hängen? Ich bin nämlich vom MC-Pin immer auf zwei (d.h. PD1 ->
D0+D4, PD2 -> D1+D5), weil ich anfangs nicht wusste, welche 4 Bits zum
Ansteuern verwendet werden müssen.
Falk Brunner wrote:
> @ flea (Gast)>>>Also ist das zwingend notwendig, damit das Teil funktioniert???>> Nein. Im 4-Bit Modus kann dort AFAIK anliegen was will.
Auch eine Kopie der anderen 4 Bit?
Ich habe es zwar nie probiert, bin aber immer davon ausgegangen, dass
man die unteren 4 Dateneingänge offen lässt oder (bei einigen LCDs) auf
L legt, also dass dort keine Pegelbewegung stattfindet.
Ist aber egal, meine LCDs funktionieren.
>> MfG> Falk
...
Hallo,
hier bin ich wieder, weil ich die Lösung zu meinem Problem gefunden
habe:
Bei den Fuse-Bits meines Controllers war JTAG aktiviert! Nachdem ich das
ausgeschaltet habe, funktioniert das Display jetzt wunderbar!!!