Hallo zusammen Ich habe bei einem 16f877A (auf einer einfachen Platine testweise montiert) das Problem, dass das LCD-Display nichts anzeigt. Beim Anlegen von Versorgungsspannung leuchtet die Hintergrundbeleuchtung auf, angezeigt wird aber nichts. Den Code habe ich in Picbasic Pro geschrieben, ohne Fehler compiliert und mit IC-PROG per ICSP auch ohne Fehlermeldung auf das PIC geschrieben. Der Programmer ist eine Kopie eines Olimex-Programmers auf JDM-Basis. Vorher hatte ich die Software noch mit Proteus VSM simuliert, dort hat sie zwar auch noch nicht das getan was sie schlussendlich tun sollte, es wurde jedoch wenigstens etwas auf dem Display angezeigt. Die Belegungen der Anschlüsse habe ich mehrmals kontrolliert, ich kann hier nach bestem Wissen und Gewissen keine vertauschten Pins finden. Als ich mit dem Voltmeter nachgemessen habe fiel mir jedoch auf, dass RB4-RB7 (DB4-DB7 am Display) sowie RB3 (RS am Display) hohes Niveau haben (also 5V) und RB2 (Enable) 2 Volt hat. Obwohl ich es nicht weiss, ahne ich dass hier etwas nicht ganz stimmt. Besonders Enable sollte doch wohl nicht irgendwo zwischendrin hängen. Kann mir jemand Tipps geben zur Fehlersuche? Gruss Martin
Richtung der Ports richtig eingestellt? Sieht so aus, als ob in Zeile 13 deines Codes der Fehler liegt.
Wenn, kannst du höchstens mit einem Oszi mal gucken, ob die Ports was ausspucken. Hälst du deine Zeiten ein? Manche LCDs brauchen die Wartezeiten bei der Initialisierung, die im Datenblatt stehen. Weiterhin gibt es Hochtemperaturdisplays, die für die Kontrastregelung eine negative Spannung benötigen, evtl ist dir so eins untergekommen? Viel Erfolg!
Jens Die Richtung der Ports habe ich mit trisb = %00000001 definiert, meines Wissens sollte das rb1-rb7 auf Output und rb0 auf Input stellen. Kannst du mir bitte erklären, warum du den Fehler auf Zeile 13 vermutest? Zeile 13 ist symbol pwm_dutycycle = 50 Sven Das mit dem Oszi ist eine gute Idee, kann ich aber nicht jetzt gleich machen. Im Datenblatt steht nichts über Zeiten bei der Initialisierung, das Datenblatt findest du hier: http://www.powertip.com.tw/product/PC%20SERIES/PC%201602-K-Y4.PDF Momentan führen Pin 2 und Pin 15 des LCDs 5V, an Pin VO (Kontrast) habe ich einen einfachen Festspannungsteiler aus 2 10k Widerständen angeschlossen (statt eines Potentiometers), wenn ich bei eingeschaltetem LCD an VO messe liegen aber trotzdem 5V an. Danke euch vielmals, für weitere Hilfe bin ich dankbar. Gruss Martin
Hallo,
>"Kannst du mir bitte erklären, warum du den Fehler auf Zeile 13 vermutest?"
Weil es ihm wie allen anderen hier mitlesenden geht: sie habe keine
Glaskugel...
Du hast Deinen Sourcecode nicht gepostet, Du hast keine Beschaltung
gepostet, Du hast irgendwas gemacht, das geht nun nicht und wir sollen
hellsehen können.
Das Datenblatt des Displays sagt alles und nichts. Welcher Kontroller
ist da verwendet? HD44780 kompatibel?
Hast Du Deine Routinen nach dem Datenblatt des Kontrollers programmiert?
Abläufe, Timing usw.?
4-Bit-Mode (den scheinst Du ja zu benutzen) richtig initialisiert?
Fragst Du Busy ab oder benutzt Du Wartezeiten?
Das Display zeigt ohne Ansteuerung nach PowerOn in der oberen Zeile
einen schwarzen Balken, wenn der Kontrast richtig eingestellt ist.
Wäre ein großer Zufall, wenn Dein Spannungsteiler da gerade den
richtigen Wert liefert. Heißt ja nicht ganz umsonst Kontrast Adjust, der
Pin...
Gruß aus Berlin
Michael
Hi
>>Sieht so aus, als ob in Zeile 13 deines Codes der Fehler liegt.
Das sollte als kleine anspielung darauf gedacht sein, dass man ohne den
Programmcode auch keinen fehler im Code finden kann ;-). Also häng den
einmal an.
Es sieht mir ganz danach aus, das dieses LCD eine HD44780-Controller
drinn hat. Und diese braucht sehrwohl bei der initialisierung eine
gewisse Wartezeit.Also füg doch nach jeden Schreibzugriff in der
Initialisierung ein delay von ein paar Millisekunden ein.
Und zeig uns einmal deinen Code.
Und wieso ist RB0 als Input?
mfg Schoasch
PS.: Hast du vl auch einen Schaltplan deiner Schaltung?
Also 5V als Kontraststpannung ist, vermute ich mal, entschieden zu hoch. Bei meinen Displays liegt die so zwischen 0,6 bis 0,8 Volt, wenn ich mit der Anzeige zufrieden bin. Änder da mal den Spannungsteiler entsprechend wenn du kein Poti hast... (10k und 2,2k sollten etwa hinkommen für nen groben Test). +5V--- R 10k --- R 2,2k --- GND | | z.LCD Kontrast Sven
Hallo zusammen Ich war eine Woche abwesend, deshalb konnte ich auch nicht antworten. Bevor wir uns mit der Software beschäftigen möchte ich nochmal auf die Hardware zurückkommen. Ich habe mittlerweile ein Potentiometer eingebaut, mit dem ich die Spannung an Vo regeln kann. Wann sollte jetzt auf dem Display ein Balken zu sehen sein? Trotz Verstellen der Spannung war bisher nie etwas zu sehen. Anbei noch das Schema. Ich habe das auf einer Lochrasterplatine zum Ausprobieren aufgebaut. Gruss Martin
leg mal die Pins am LCD D0 bis D3 auf masse. Das wird war scheinlich ein Display mit erweitertem Temperaturbereich sein. Der muss mit negativer Kontrastspannung angesteuert werden (0V bis -5V).
Marco, danke für den Tip, leider ändert es aber auch nichts wenn ich die Pins an Masse schalte. Könnte es sein, dass 5V nicht als Betriebsspannung ausreichen? Aus dem Datenblatt (weiter oben) werde ich nicht ganz schlau. Gruss Martin
Hier habe ich noch den Programmcode bis zur Display-Initialisierung angehängt. Falls mir jemand sagen kann, ob das Hand und Fuss hat, dann bitte ich darum. Gruss Martin
Nein, ich hatte keine negative Spannungsquelle zur Verfügung. Dafür habe ich wie weiter oben vorgeschlagen am KO mal untersucht, ob Signale an den Pins anliegen. An allen Displaypins konnte ich nach dem Einschalten kurz ein Signal feststellen, ausser am Enable-Pin. Bisher konnte ich im Programmcode aber noch keine Ursache dafür finden. Gruss Martin
Nein auch nicht aber ich gehe wahrscheinlich heute noch in ein Geschäft, dann nehme ich wenn vorhanden ein ICL7660 oder sonst nach deinem Vorschlag ein MAX232. Ausserdem eine Frage an die PicbasicPro-Spezis: Soviel ich gelesen habe ist es bei PicbasicPro gar nicht nötig, eine Init-Prozedur zu schreiben, stimmt das oder ist das ein Gerücht? Gruss Martin
Hallo Leute Scheinbar handelt es sich gar nicht um ein Problem des Displays, jedenfalls nicht vorderhand. Nachdem alles nicht funktioniert hat (auch die negative Kontrastspannung nicht) habe ich mal alles von vorne angefangen zu überprüfen. Als auch ganz einfache Programme wie eins zum Ein- und Ausschalten einer Led nicht funktioniert haben, habe ich langsam angefangen anzuzweifeln, dass das Programm überhaupt auf das PIC geladen wird. IC-Prog programmiert immer ohne Fehlermeldung, aber wenn ich "Read All" ausführe, kommen nur Nullen raus. Ich verwende einen Olimex PIC-PG1 Klon, der die PGM-Leitung automatisch auf Masse ziehen sollte, was beim 16F877A scheinbar ein bekanntes Problem ist. Hat schon jemand ein ähnliches Problem gehabt oder kann mir sonstwer einen Tip geben? Gruss Martin
Nur Nullen deutet auf einen eingeschalteten Leseschutz hin, wenn der PIC leer ist, kommen beim Lesen lauter Einsen raus.
wenn das display frisch eingeschaltet wurd zeigt es in der ersten zeile einen balken und wenn der nicht da ist hängt es nicht am pic.
Das heisst möglicherweise, dass das Display tatsächlich ein Problem hat. Aber offenbar nicht nur, denn obwohl ich mittlerweile durch Anpassungen an der Schaltung das Pic programmieren und auch wieder auslesen kann, kommt beim Auslesen nicht derselbe Code zurück den ich eigentlich programmiert habe (aber auch nicht mehr nur Nullen). Die Abweichungen fangen immer in der zweiten Zeile des IC-Prog-Program-Code Fensters an. Erste Frage: Sehe ich das richtig dass hier etwas nicht stimmt? Zweite Frage: Kann ein defektes Pic sowas verursachen, oder sind es eher Störeinflüsse oder sowas beim Programmieren? Welche könnten das sein? Gruss Martin
Hallo, schmeiss den ICPROG weg. Ich hatte damit nur Probleme. Kauf Dir einen vernünftigen Programmer und Du wirst Freude an Deinem Hobby haben. PicbasicPro hat eigentlich alle LCD-Routienen on board, wie LCDOUT usw. Ist zwar schon lange her das ich damit gearbeitet habe. Guck mal auf der Homepage von Melabs, da gibt es Beispiele. Rück mal den ganzen Code und die Einstellungen beim Programmer raus, dann kann "Sie" auch geholfen werden. LazyBee
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.