Forum: Mikrocontroller und Digitale Elektronik PICDEM 2 plus LCD ansteuern


von Johannes M. (tama)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche seit Tagen das LCD des PICDEM 2 plus mit dem mitgelieferten 
PIC16F877A anzusteuern, komme aber mit der Initialisierung irgendwie 
nicht ganz klar.
Wenn ich das Programm einfach laufen lasse, blinken die LEDs kurz auf 
und mehr passiert nicht. Das LCD bleibt aus.
Beim durchsteppen habe ich festgestellt, dass das LCD bei der 
Initialisierung angeht und bis zu Zeile 157/158 ist zumindest die obere 
Zeile schwarz und der Cursor blinkt:
1
  movlw  B'00001111'    ; step 9 display on, cursor on, cursor blink on 
2
  call  OutLCDcontrol

"OutLCDcontrol" ruft dann "LCDbusy" auf und das wiederum "BusyLoop" um 
das busy flag abzufragen. Ab Zeile 195
1
  bcf  LCD_RW
 geht das Display wieder aus und bleibt aus.

Ich habe zwar im Schaltplan gesehen, dass VEE des LCD über PORTD,7 ein 
oder ausgeschaltet wird, jedoch hab ich schon probiert den Pin auf high 
zu setzen - hat nicht geholfen. Außerdem ist der Pin während der 
Initialisierung auf Low und das Display ist trotzdem an!?

Wo steckt denn nun mein Fehler?

Gruß,
Johannes

von Severino R. (severino)


Lesenswert?

Es gibt zwei Versionen des PICDEM 2 Plus:
die ältere und eine neuere RoHS Version.
Sie unterscheiden sich aber auch in der Display-Ansteuerung.
Versuche doch mal das Original Demoprogramm von Microchip (Download von 
www.microchip.com). Im Zweifelsfall beide Versionen ausprobieren.

von Johannes M. (tama)


Angehängte Dateien:

Lesenswert?

Ich habe die neuere RoHS Version (daher auch VEE an PORTD,7).
Die Originalprogramme laufen natürlich. Die versteh ich aber nicht 
wirklich, da mir dazu die Erfahrung fehlt. Initialisiert wird dort ganz 
anders.. siehe Anhang.

von Severino R. (severino)


Lesenswert?

Johannes M. wrote:

> Die Originalprogramme laufen natürlich. Die versteh ich aber nicht
> wirklich, da mir dazu die Erfahrung fehlt. Initialisiert wird dort ganz
> anders.. siehe Anhang.

Kannst Du eingrenzen, was Du nicht verstehst?
Sind es Assembler-Instruktionen, sind es Makros, Vorgehensweise?

von Johannes M. (tama)


Lesenswert?

Die Vorgehensweise bei der Initialisierung. Ich hab meinen Fehler nun 
allerdings gefunden (typisch, kaum hat man gefragt stößt man selbst 
drauf) - ich musste beim schreiben auf die data-Pins sicherstellen, dass 
der VEE-Pin immer high bleibt und außerdem die Reihenfolge der 
Hi-/Lo-Bits korrigieren. (ein swap an der falschen Stelle)

Trotzdem Danke für die Antworten!

Gruß,
Johannes

von Severino R. (severino)


Lesenswert?

Johannes M. wrote:
> Ich hab meinen Fehler nun allerdings gefunden (typisch, kaum hat man
> gefragt stößt man selbst drauf)

Bravo! Wenn man etwas formulieren muss, denkt man plötzlich anders 
darüber nach, und oft kommt dann die Erleuchtung.

Viel Spass mit dem Board.

Übrigens: willst Du nicht in C programmieren?

von Johannes M. (tama)


Lesenswert?

Severino R. wrote:
>
> Bravo! Wenn man etwas formulieren muss, denkt man plötzlich anders
> darüber nach, und oft kommt dann die Erleuchtung.
>
> Viel Spass mit dem Board.
>
> Übrigens: willst Du nicht in C programmieren?

Eigentlich wäre das schon gut, im Moment komme ich allerdings mit 
Assembler besser zurecht und verstehe dabei sicher auch mehr, was im 
Controller vorgeht. Wenn ich die LCD Routine in Assembler fertig 
geschrieben habe kann ich sie ja von einem C-Programm aus aufrufen :)

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.