Hallo zusammen, Ich versuche nun schon seit 3 Tagen das LCD Display mithilfe des PICs anzusteuern jedoch funktioniert einfach nichts und ich weiß nicht warum. Das Display hat immer nur die Hintergrundbeleuchtung eingeschaltet und sonst regt sich nichts egal was ich für Befehle oder Daten auch rausschicke. Das Display soll im 4-Bit Modus angesteuert werden. Ich habe mir auch schon diverse Tutorials hierzu durchgelesen und die Initialisierung genau so gemacht wie es dort beschrieben ist, aber es will einfach nicht. Im Anhang habe ich mein bisheriges Programm. Und hier ist mal das Datenblatt: http://www.lcd-module.de/pdf/doma/dips082.pdf Vielleich weiß ja wer von euch warum das nicht funktioniert. Es würde mir ja schon reichen wenn es überhaupt irgendwas tun würde sodass ich sehe, dass ich was erreiche mit meiner Programmierung. Aber nein, es ist einfach nur die Hintergrundbeleuchtung an. Was ich bis jetzt verstanden habe: Wenn ich das richtig verstanden habe was ich bis jetzt gelesen habe ist der RS PIN dazu da um zu sagen ob es sich um Daten oder Befehle handelt. Der RW PIN ob gelesen oder geschrieben wird und der EN um die Befehle zu übernehmen. Hierzu muss man diesen togglen. Da es im 4 Bit Modus betrieben wird muss das Datenbyte in 2 Nibble aufgeteilt werden wobei zuerst das höhere Nibble übertragen wird. Die Initialisierung selber muss jedoch im 8 Bit Modus erfolgen da dieser standardmäßig eingestellt wird. Jedoch kann man hier die unteren 4 Bits ignorieren da diese für die Umstellung auf 4 Bit nicht benötigt werden weshalb es theoretisch funktionieren sollte. MfG Marcel
Hast du da einen 31KHz Quarz drin ? Vielleicht mal RW auf Masse legen.
Marcel schrieb: > Das Display hat immer nur die Hintergrundbeleuchtung eingeschaltet und > sonst regt sich nichts egal was ich für Befehle oder Daten auch > rausschicke. Kontrast-Pin ist richtig beschaltet? Kontrast richtig eingestellt?
Hallo erstmal danke für eure Antworten. Nein ich habe kein 31KHz Quarz drin. Ich schalte den internen oszillator und dieser ist standardmäßig laut Datenblatt auf 31 Khz. Habe um dies zu testen mit der delayfunktion eine LED eine Sekunde an und wieder ausgeschaltet. Der Kontrastpin ist überhaupt gar nicht angeschlossen. Ich bekam die Platine fertig gelötet mit den Datenblättern. Hab eben mal den Kontrastpin auf Low angeschlossen aber dann ist der Bildschirm komplett schwarz daher hab ich dies wieder rückgängig gemacht. Laut dem Datenblatt welches ich bekommen habe muss dieser auch gar nicht angeschlossen werden. Kann ja sein das derjenige der gelötet hat da was falsch gemacht hat also muss der Kontrastpin angeschlossen werden? MfG Marcel Vollmer
HI >Laut dem Datenblatt welches ich bekommen habe muss dieser auch gar nicht >angeschlossen werden. Kannst du keine Datenbätter lesen? Das sind 2 Beschaltungen für VEE bei verschiedenen Betriebsspannungen drin. >Der Kontrastpin ist überhaupt gar nicht angeschlossen. Ich bekam die >Platine fertig gelötet mit den Datenblättern. Welcher Keksperte verzapft denn so etwas? MfG Spess
spess53 schrieb: > Kannst du keine Datenbätter lesen? Das sind 2 Beschaltungen für VEE bei > verschiedenen Betriebsspannungen drin. Doch kann ich schon^^ Datenblatt war vll. das falsche Wort. In dem oben verlinkten Datenblatt steht das ja aber in dem Schaltplan den ich von der gelöteten Platine bekommen habe ist dieser PIN nicht angelötet. Vermutlich reicht es nicht wenn man den PIN auf Masse legt da der Kontrast dann zu stark ist oder? Also 4,7K Drehpoti bestellen und dann hat sich das Problem erledigt? MfG Marcel
HI >Vermutlich reicht es nicht wenn man den PIN auf Masse legt da der >Kontrast dann zu stark ist oder? In der Tabelle steht bei VEE: Kontrastspg. (ca. 0,3V / 1,2V). Allerdings ist das eine etwas missverständliche Angabe. Normaler weise wird als Kontrastspannung die Spannung zwischen VDD und VEE angegeben. Das wären dann also 3,8...4,7V. MfG Spess
>In der Tabelle steht bei VEE: Kontrastspg. (ca. 0,3V / 1,2V). Allerdings >ist das eine etwas missverständliche Angabe. Das stimmt. Da ich mit dem Display schon zu tun hatte kann ich aber sagen das das gegen GND gemessen bedeutet.
Hi >Das stimmt. Da ich mit dem Display schon zu tun hatte >kann ich aber sagen das das gegen GND gemessen bedeutet. Ja, davon bin ich ausgegangen (bei VDD=5V). Bei VDD=2,7..3,3 wurde das aber einen falscher Wert. Deswegen habe ich das umgerechnet. Dann passt das für den ganzen VDD-Bereich des Displaycontrollers. MfG Spess
Hi Leute, Nun ist der Kontrastpin angeschlossen und regelbar über einen Poti aber das Programm funktioniert immer noch nicht.. Kann vielleicht wer von euch der son ähnliches Display hat mal gucken ob mein Programm bei ihm funktioniert damit ich einen Defekt des Displays ausschließen kann? MfG Marcel
Ich dachte du arbeitest mit dem internen Quarz ? Warum setzt du dann den externen Quarz ?
Stefan schrieb: > Ich dachte du arbeitest mit dem internen > Quarz ? > Warum setzt du dann den externen Quarz ? Hast recht das macht keinen Sinn. Ich habe hinterher in meiner Verzweiflung geguckt was ist im Tutorial anders und die Zeile ist halt noch stehen geblieben. Aber daran lag es nicht. Ich habe ja auch vorher schon geguckt ob der Timer vernünftig funktioniert also eine LED kann ich für genau eine Sekunde an und abschalten also geh ich mal davon aus das es auch für kleinere Wartezeiten funktionieren muss. MfG Marcel
OSCCON ist auch nirgendwo gesetzt. Da fehlt die ganze Setzung des internen Oscillator.
Das stimmt wohl. Ich gehe davon aus das wenn die LED blinkt der Timer richtig ist. Also er mit dem Standardmäßigem Takt von 31 KHz arbeitet warum muss ich da was umstellen? Ich bin folgendermaßen vorgegangen. Ich habe mir die Delayfunktion angeguckt. Diese will eine Konstante Namens XTAL_FREQ mit dem Wert habe ich gespielt bis ich die gewünschte 1 Sekunde Delay hatte. Das war bei etwa 32 KHZ. Dann hab ich im Datenblatt nachgeguckt und standardmäßig läuft der PIC18F2220 mit 31 KHZ. Nun bin ich davon ausgegangen das wenn die 1 Sek Delay funktioniert der Wert für XTAL_FREQ stimmen muss und ich somit auch geringere Delays benutzen kann. Die Frage ist ob das Display mit einer so geringen Taktrate überhaupt zurecht kommt weil in allen anderen Beispielen sieht man immer 4 MHz etc. Habe nun gerade mal die Initialiserungsroutine umgeschrieben und habe mich auf das Datenblatt des Kontrollers bezogen aber will immer noch nicht.. https://www.sparkfun.com/datasheets/LCD/st7066.pdf
Stefan schrieb: > Ich dachte du arbeitest mit dem internen > Quarz ? Wie kommst du auf so einen Blödsinn? Es gibt gar keinen internen Quarz
Ja die Displays laufen mit der geringen Taktrate.
Habe den µC nicht. Wenn du noch einen anderen hast, kann man mal schauen ob man dafür ein Programm schreiben kann.
Es würde mir reichen wenn mir wer nen Testprogramm geben könnte so zum Beispiel in der Form "Gibt eine 1 aus" oder sowas. Anpassen an meinen Controller könnte ich das dann auch selber. Ich möchte halt nur nen Hardwaredefekt ausschließen können da ich mich mittlerweile nicht mehr auf den "Experten" verlassen möchte der das Ding zusammen gelötet hat denn ich trete seit nun mehr als 6 Tagen auf der Stelle diesbezüglich.. MfG Marcel
Ohne jede Garantie. Da ich den µC nicht habe, kann ich es nicht testen, ob es läuft. RW Pin muß auf Masse liegen. Alle anderen Pins vom Display können bleiben. Hier das Programm:
Hier mal ein Bild was das Display anzeigt. Man liest immer überall das es eigentlich entweder komplett aus sein sollte oder links nen Cursor blinken sollte im Ursprungszustand weshalb mich das auch schon wundert. Und egal was ich auch programmiere es verändert sich überhaupt nix das Display geht nur jedes mal aus und wieder an was daran liegt das das PicKit die Stromversorgung beim Programmiervorgang trennt. MfG Marcel
Danke aber da kann ich ja auch nichts dran anpassen haste das auch als C-Programm?
Sollst auch nichts dran anpassen. Sollte so laufen, nach deinen Angaben im C-Code.
Womit schreib ich das File auf den Controller gibts da ne spezielle Software für? Hab es mit dem PicKit2 Brenner probiert und dieser sagt unsupported Device. Ich programmiere normalerweise mit der MPLABX IDE in C kann ich das dort vielleicht irgendwo einstellen?
OK konnte das in MPLABX importieren aber es zeigt immer noch nichts an was sollte es denn theoretisch anzeigen?
Ach sry. Aufgrund es ist mir aufgefallen das oben in dem Quellcode die Defines falsch waren d.h. die PINS sind oben falsch belegt. Hab das mittlerweile korrigiert. Im Anhang der aktuelle Quellcode
Dann versuch es mit dem File. Wie gesagt, RW Pin auf Masse legen sonst geht es nicht.
Ok Display funktioniert. Er gibt Hallo Aus. Hast du auch mit 31 KHz gearbeitet ? Danke dir :-)
Ja müßte so eingestellt sein. Aber wie gesagt, kann es selber nicht testen, da ich den µC nicht habe.
Mmh jetzt ist natürlich die Frage warum das bei dir funktioniert? Hast du meinen Code 1 zu 1 nach Assembler übersetzt oder andere Delays genommen ? Wie sieht die Initialiserungsroutine aus? Muss ich eigentlich irgendwo sagen an welche Adresse er das Ascciizeichen schreiben soll oder fängt der bei Null an und zählt dann hoch? Ich verwende zum Beispiel die Befehle CGRAM Adress Set und DD RAM Adress Set überhaupt nicht da ich gelesen habe das man dies nur braucht um eigene Zeichen zu definieren. Brauch ich diese Befehle oder nicht? Du siehst ich bin gerade nen biskn baff^^ MfG Marcel
Nein ist nicht 1:1 übersetzt. Habe schnell ein eigenes Programm erstellt. Ist nicht in C geschrieben. Kenne mich auch nicht in C aus. Mir fällt halt nur auf das du nirgendwo den internen Oscillator setzt. Weis nicht ob das so geht. Sind ja noch andere da, die sich mit C auskennen. Sonst bekommst du auch hier gute Hilfe: http://pic-projekte.de/phpBB3/index.php?sid=e1590847e4c141d4019f79781dc4abb4
Alles klar da werd ich mal vorbeischauen die Seite kannte ich noch nicht. vielen Dank hast mir schonmal sehr geholfen. MfG Marcel
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.