Seit gegrüßt, hilfsbereite Bastler, etc. :)
ich habe mir einen mySmartControl von myAVR.net gekauft um einige
kleinere Steueraufgaben in einem Testaufbau zu übernehmen, nun bekomme
ich das Display nicht zum laufen
LCD: DIP204-4NLW
LCD-Datenblatt: http://www.lcd-module.de/eng/pdf/doma/dip204-4e.pdf
ich weiß nicht ob es an der Schaltung (meine erste in Eagle) oder an dem
Programm liegt, allerdings macht das LCD NICHTS! d.h. die Beleuchtung
funktioniert aber ich kann nichts auf dem LCD sehen (nichtmal einen
curser etc.)
Bin für jede Hilfe dankbar ;)
*Außerdem fände ich es cool, wenn mir einer die richtigen Bauteile
(EAGLE) für eine Stiftleiste+Buchse (20polig) sagen könnte.
Programmteil: (Wartezeiten sind mit Absicht viel zu lang)
#Pins:
PORTC.0 lcd.RS
PORTC.1 lcd.e
PORTC.2 lcd.DB4
PORTC.3 lcd.DB5
PORTC.4 lcd.DB6
PORTC.5 lcd.DB7
Danke für deine schnelle Antwort Florian,
Habe zwischen jedem enable-Sprung 1ms Wartezeit eingebaut und trozdem
kein Erfolg ;(
jedoch zeigt mein LCD überhaupt nichts an, ich denke es müsste zumindest
irgendwelche falschen Zeichen von sich geben. (bitte seht euch mal die
Schaltung an, Kontrast sollte so stimmen - 2,5k poti siehe datenblatt -
komisch dass das keinen Spannungsteiler auf GND geben muss..)
Auch die Pausen beim Init sind vermutlich zu kurz, da Du kein Busy
abfragen kannst. Mal mit 200ms probieren. Siehe Datenblatt. Was machen
denn die Befehle beim Init? Habe keine Lust im Datenblatt nachzusehen.
Schaltest Du in den 4-Bit Modus? Das muß manchmal mehrmals (2-3x) getan
werden.
Danke für eure Antworten :)
das mit GND am Kontrast Poti hat mich auch gewundert aber ich habe im
Datenblatt nichts anderes gesehen.
http://www.lcd-module.de/eng/pdf/doma/dip204-4e.pdf
ich werde euch in kürze die Befehle in der lcd_init() analysieren ;)
den einzigen unterschied, den ich feststellen konnte ist "unsigned char"
anstelle von "char" ... hatte irgendwie immer im Kopf, dass char der
einzige Datentyp ohne Vorzeichen (0..255) sei :S
Naja ... geholfen hat es nicht ;(
Dann solltest Du Dir die C Grundlagen tatsächlich nochmals zu Gemüte
führen.
Aber ein kleiner Hinweis:
Du shiftest die höher wertigen Bits mit >> 2 an Stelle von >> 4.
Du veroderst das ganze dann noch mit irgendwelchen Werten deren Sinn ich
nicht verstehe und auch nicht verstehen will.
Ein Tip gehe beide Routinen mal Zeile für Zeile durch und vergleiche.
Dann kommst Du schon drauf.
Gruß
Frank
@ franklink
>PORTC.2 lcd.DB4>PORTC.3 lcd.DB5>PORTC.4 lcd.DB6>PORTC.5 lcd.DB7>Du shiftest die höher wertigen Bits mit >> 2 an Stelle von >> 4.>Du veroderst das ganze dann noch mit irgendwelchen Werten deren Sinn ich>nicht verstehe und auch nicht verstehen will.
Es gibt auch noch andere Anschlussmöglichkeiten
die du dir scheinbar nicht vorstellen kannst.
Hallo Holger,
sorry, Deine Portbelegung habe ich übersehen!
Trotzdem gibt es einen Unterschied:
Zuerst wird am Port RS gesetzt. Dann werden die Daten übergeben. Das ist
soweit ja auch alles korrekt. Dazwischen das Enable. und zum Schluss dem
Kontroller des LCD Zeit geben dass er seine Aufgabe erledigen kann.
Ich gehe davon aus, dass Du im Enable die Pause eingebaut hast und
Deinen Kontrastregler auf GND gelegt hast, nicht ds Dein Problem am
Kontrast liegt.
Ansonst kann ich Dir nur sagen, dass ich bei den LCDs schon einiges an
Lehrgeld gezahlt habe, nur weil ich das Timing nicht korrekt eingehalten
habe.
Leider fehlt im Datenblatt ein Timing-Diagramm.
Gruß
Frank
danke für eure Antworten,
dass der Kontrast kein Spannungsteiler VDD-VSS hat mich auch
gewundert(siehe Bild im Anhang - Auszug aus dem Datenblatt), sieht aus
als sollte es ein variabler Vorwiderstand sein (vielleicht wegen an der
Farbe: Blau mit weiser schrift).
*enable: ich werde es mit mehr Pausen probieren, übrigens setzte ich
enable zuerst 1 wegen der negativen Flanke ;)
1
Dann solltest Du Dir die C Grundlagen tatsächlich nochmals zu Gemüte
danke docean,
aber das Display sagt immer noch nix -.-
da es nicht mal falsche Zeichen, Flackern etc. von sich gibt vermute ich
dass es an der Schaltung noch was haben muss (Anhang in 1. Post).
Ich habe das mit dem Kontrast als Spg-Teiler zw. +5V und 0V probiert
(haut auch nicht geholfen).
Das Display kann eigentlich auch nicht kaputt sein (habe 2 neue hier und
keines funktioniert in dieser weise)
Hallo Kjartan,
ich habe hier ein kleine selbstgeschriebene LCD Bibliothek die
eigentlich für die Ansteuerung über einen 74HC595 gedacht war. In dieser
kannst Du die Ports unabhängig belegen. Du wirst zwar einiges Umbauen
müssen, aber ich denke das sollte nicht das Problem sein.
Hier findest Du die Beschreibung und etwas weiter unten die Zip-Datei
mit dem Sourcecode.
http://www.mikrocontroller.net/articles/Porterweiterungen#Porterweiterung_.C3.BCber_74HC595_.28LCD.29_2
Gruß
Frank
GELÖST!
Danke an alle die mich hier so fleißig unterstützt habe,
das Problem habe ich mir leider selbst eingebrockt, da ich zuvor ein
Grün-Gelbes LCD für die Schaltung benutzt hatte.
d.H. ich hatte für den Kontrast folgende Schaltung
VDD
|
VDD - 10kOhm - 10kOhm_poti - VSS
VSS habe ich entfernt und den 10kOhm poti auf 2,5kOhm geändert, jedoch
den 10kOhm Widerstand vergessen -.-"
Aufgefallen ist es mir, als ich nach der Tiefe eines Kratzers auf der
Folie gesehen habe und feststellen musste das es funktioniert ... nur
ganz ganz leicht >,<
Also nochmal Danke an docean, Frank, Florian und Holger.
Mit freundlichen Grüßen,
Kjartan Ferstl