Forum: Mikrocontroller und Digitale Elektronik 2*20 LCD Panel (HD44780) mit PIC16F887, Initialisierungsproblem?


von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich möchte ein LCD Panel der Firma Electronic Assembly 
(W162B-N3LW) mit einem PIC 16F887 im 8 bit Betrieb ansteuern. Dieses 
Panel sollte nach Data sheet den HD44780 chip benutzen.

Die Datenleitungen liegen an portc,
RS an bit 1 von portb
RW an bit 2 von portb
E  an bit 3 von portb

Der quarz ist ein 10MHZ

Den code für das ansteuern habe ich aus dem Buch PIC in pracice, habe 
ihn aber für den 8 bit betrieb etwas abegewandelt und teile aus dem pic 
start programmen von microchip benutzt.

Leider macht das display keinen zuck, ich habe schon hier im Forum nach 
einer Lösung gesucht aber noch nix passendes gefunden. Entweder ist es 
für einen Atmel oder in C gechrieben, wo ich mich beides mal mit der 
Sprache schwer tue da ich erst Anfänger bin.

Ich habe meinen Code in den Anhang getan, wäre echt nett wenn da mal 
jemand drüber gucken könnten ob die Initialisierung überhaupt richtig 
ist. Nach dem Datasheet des Herstellers sieht es recht passend aus. Aber 
das Display macht eben keinen Zuck. (sind eventuell die Zeiten zu kurz?)

Bin für jede Hilfe sehr dankbar

von Peter D. (peda)


Lesenswert?

Michael wrote:
> Ich habe meinen Code in den Anhang getan

Ich bin mir sicher, auch beim PIC heißen Quelltexte *.asm und nicht 
*.pdf.

Man kriegt besser Hilfe, wenn man das richtige Format nimmt, d.h. es dem 
Leser nicht unnötig schwer macht.


Peter

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Peter and sry @ all,

ich wollte keine Umstände schaffen. Hier im Anhang die *.asm datei zum 
einbinden.

Beim incircuit debugging kommt mir tmr0 irgendwie komisch vor. Irgendwie 
macht der nicht das was er soll. Vielleicht liegts daran?
Wenn ich das Programm drch den normalen simulator rennen lasse geht die 
delay loop mit tmr0 allerdings ohne probleme.

Michael

von Lutz (Gast)


Lesenswert?

Ohne jetzt irgendeine Zeile Deines Codes gelesen zu haben: Was bedeutet 
"macht keinen Zuck"? Ist wenigstens der schwarze Balken zu sehen, also 
Kontrastpin beschaltet?

von Michael (Gast)


Lesenswert?

Die Display hintergrundbeleuchtung ist zu sehen und man sieht die 
einzelnen Felder. Von daher schient es ok zu seien.

von Lukas (Gast)


Lesenswert?

Hallo zusammen,

da ich auch ein Problem mit dem Display habe, dachte ich, klink dich 
hier mal ein.
Habe das Display wie im AVR-GCC-Tutorial beschrieben, an nem Atmega8 
(2Mhz) im STK500, hängen. C-Code (nachvollzogen) und übernommen, in der 
Zwischenzeit allerdings die Delays mindestens verdoppelt und probiert. 
Und siehe da, das Display gib Text aus, leider nur nach Zufallsprinzip, 
mit Vorliebe die Zeichen O, <- und o. Bei jedem Reset des Displays und 
Atmegas andere Kombinationen, in beiden Zeilen.

Das STK500 hängt an einem anderen Netzteil als das Display, sodass 
zwischen den GNDs vom LCD und STK500 1V Differenz besteht. Könnte sein, 
dass dadurch die Pins des LCDs nicht eindeutige Signale bekommen? (ich 
begebe mich aufs Glatteis...) Darf ich die Masse-Leitung vom 
(LCD-)netzteil mit einem GND-Pin vom STK500 über ein Widerstand zwecks 
Pegelanpassung verbinden?

Oder einfacher: Am STK500, rechts von der Taste "Program", sind 2 Pins, 
die ziemlich konstant 5V liefern. Kann mein LCD darüber versorgt werden? 
Dann wäre das Problem mit dem Potenzial beseitigt? Diese 2 Pins sind in 
der AVR-Studio-Hilfe leider nicht erwähnt, soweit ich das überblicke.

Falls ich mit meinen Fragen bei einigen ungläubiges Kopfschütteln 
ausgelöst habe, naja, noch ist nichts abgeraucht :-)

Danke auch für Ratschläge und sonstige Schläge...

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt mal einen Code für 4 bit Betrieb von Sprut probiert, den 
code angepasst (Ich kann nicht mit PORTB bit 4-7 arbeiten wegen 
incircuit test.)
Die neue Belegung ist

PORTB: Bit 0 - 4 Daten
PORTE: Bit 0 - 2 Steuer

Der Pic ist immernoch ein 16F887 (hab das PICkit2 debugging set und n 
die platine das display gehangen)

Aber das Display will immernoch nicht. Kann von euch vielleicht nochmal 
jemand über den code gucken bzw ihn debuggen? Ich finde den Fehler 
einfach nicht. Wäre für Hilfe super dankbar.

von gast (Gast)


Lesenswert?

ANSELH register löschen probiert?

von obi-marc-kenobi (Gast)


Lesenswert?

ich hatte genau das gleiche Problem, jedoch wenn du die ANSELH Register 
löschst ... dann klappt es.

von Tatonka (Gast)


Lesenswert?

Kann mal bitte jemand eine funktionsfähigen Code für Pic16f887 und LCD 
einstellen?

Danke

von Stefan (Gast)


Lesenswert?

Habe den PIC nicht. Nur einen 16f877A.
Wenn dir das was nützt, dann kann ich den hochladen.

von Tatonka (Gast)


Lesenswert?

Danke, kann ich mal testen.

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hier die Datei.
PORTD4...D7 Daten
D2 = RS
D3 = EN
RW = GND

von Tatonka (Gast)


Lesenswert?

Hallo Stefan,

danke, super. Das läuft.
Häng doch bitte mal noch das .asm File dran.
Möchte ja was lernen.

Danke

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.