Forum: Mikrocontroller und Digitale Elektronik 4x27 LCD am P16F84A


von Lukas Abracadabra (Gast)


Lesenswert?

Moin.

Habe hier folgendes Problem:

Versuche ein LCD Dispay (2xHD44780) an einem P16F84A zu betreiben, aber
anscheinend fehlt mir noch die nötige Erfahrung oder einfach das Wissen
dazu.

Habe bereits ein Programm geschrieben und das LCD an den PIC
angeschlossen. Nu passiert aber nicht viel nachdem ich den Saft
einschalte.

Normalerweise sollte es initialisiert werden und anschliessend sollte
ein "A" erscheinen.

Hier ist das Programm: http://home.arcor.de/stowoda/source.asm


Bin dankbar für Euere Hilfe!

Gruß

von A.K. (Gast)


Lesenswert?

Die Wartezeiten nach den einzelnen Initialisierungs-Kommandos stehen
nicht aus Jux in der Doku, die sind nötig.

von Carsten S. (carsten)


Lesenswert?

Schau dir auch mal die Kontrastspannung des LCDs an. Hatte mal ein
Studiumskollege, der 2 Tage nach nem Fehler in der Initialisierung
gesucht hatte, wobei diese richtig war -> nur der Kontrast war falsch
eingestellt und somit keine Ausgabe erkennbar.

von Lukas Abracadabra (Gast)


Lesenswert?

mit dem Kontrast ist alles io. Habe das LCD bereits am Parallelport
getestet. danke!
Werde mal die Zeiten genauer timen, mal sehen. Bin relativ neu auf
diesem Gebiet, deswegen liegt es bestimmt nciht nur an einem Fehler.
Najna, mal sehn.

thx so far

Gruß

Lukas

von Lukas Abracadabra (Gast)


Lesenswert?

Son Mist..
Habe den Fehler nun gefunden. Am liebsten würde ich ihn gar nicht
zugeben wollen. RA2 sowie RB3 an meiner Testplatine waren nicht mit dem
PIC verbunden..

Gruß

Lukas

von Lukas Abracadabra (Gast)


Lesenswert?

Moin

Habe nun alle Kabel geprüft und jede Verbindung getestet.
Hardwaremässig ist alles 100% io.

Leider konnte ich immer noch keinen Erfolg verbuchen was die
Erfolgreiche Initialisierung des LCDs angeht.
Hab nun ein neues Programm geschrieben und es auch auf die Zeiten
getestet. Die mindestzeiten von 15ms, 4.1ms sowie 100µs werden, dort wo
es relevant ist, eingehalten.
Habe mich sogar dazu entschlossen das BusyFlag prüfen zu lassen, bevor
das LCD angesprochen wird.
Im Code sieht alles ganz ok aus. Jedoch will es nicht so funktionieren
wie ich es mir gedacht habe.
Hoffentlich kann mir jemand von Euch auf die Sprünge helfen...

Ahso.. Als ich den Saft das erste mal eingeschaltet habe, nachdem ich
das neue Programm in den PIC gebrannt habe, funktionierte es sofort.
Die Initialisierung schien erfolgreich verlaufen zu sein und der Cursor
blinkte in der linken, oberen LCD Ecke.

Seit dem klappt es nicht mehr.
..
Wieso?
Womit kann es zusammenhängen..
Mussi ich das LCD etwa resetten oder ähnliches?

Bin leider am ende mit meinem Latein und deswegen auf Eure Hilfe
angewisen.

Wenn also jemand Zeit und Lust hat, kann er sich ja mal den Code
angucken und eventuell sein Feedback abgeben.
Wäre sehr dankbar.

hier ist der Link zum code:
http://home.arcor.de/stowoda/LCD/source_08.asm

und hier der Leitfaden zur Ansteuerung des LCD:
http://home.arcor.de/stowoda/LCD/Text-LCDs.pdf

Gruß

Lukas

von Lukas Abracadabra (Gast)


Lesenswert?

Ok. Hab den Fehler!

Aber wie stelle ich nun Zeichen dar, nachdem die Initialisierung
erfolgreich war?
zB. für eine "0" einfach 0x30h auf port B ?

von Carsten S. (carsten)


Lesenswert?

Was war denn dein Fehler?

von Lukas Abracadabra (Gast)


Lesenswert?

Eine Endlosschleife an falscher Stelle.

von Lukas Abracadabra (Gast)


Lesenswert?

Wenn ich nun ein Zeichen darstellen will, funzt es nicht.
Bekomme immer nur einen Punkt in der rechten unteren ecke des 5x8
Kästchens. Dabei sollte doch 00110000 einer Null entsprechen..
Hmm.

Weiss jemand Rat?

von Lukas Abracadabra (Gast)


Lesenswert?

Hat keiner eine Idee?

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

Für PIC habe ich kein Beispiel. Nur für AVR (Mega8).
Es ist Baustelle und war nur zum "Spielen" gedacht. Der Zugriff auf
das 4x27-LCD von Pollin klappt aber gut. Vielleicht bringt dich die
Analyse des Programms (der Algorihmen) ja auf neue Ideen.

Was war denn nun dein Fehler??

...

von Lukas Abracadabra (Gast)


Lesenswert?

Ich habe so einige Fehler begangen..

Also zuerst war meine Testplatine nicht 100% io.
Später stellte sich raus, dass meine Verzögerungsschleifen nicht gut
genug getimed waren. (nun hoffe ich, dass sie es sind)
Als letztes habe ich eine Endlosschleife, die den PIC nachdem er das
LCD angesteuert hat, beschäftigen sollte.

diese Zwei Zeilen habe ich aus Versehen an die falsche Stelle gepackt
und das Prog blieb hängen lange befor es fertig war mit der
Initialisierung des LCD.

noend
  goto  noend

nun, habe ich alles soweit überarbeitet, bekomm aber nur komische
Punkte dargestellt.


Offensichtlich ist da noch was faul. Hoffe, dass ich da bald
hinterkomme, oder vielleicht jemand aus dem Forum einen
Lösungsvorschlag unterbreitet.

Gruß

Lukas

ps: danke Dir für Deinen code..

von Lukas Abracadabra (Gast)


Lesenswert?

Nun..

Es klappt alles soweit. Habe wohl die relevanten Bugs entfernen
können.
Wenns jemanden interessiert hier der Code:
http://home.arcor.de/stowoda/LCD/08/source.asm

Gruß

Lukas

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
Noch kein Account? Hier anmelden.