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
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
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