Forum: Mikrocontroller und Digitale Elektronik LCD- Grafik Modul mit PIC ansteuern


von Mike (Gast)


Lesenswert?

Hallo zusammen,

ich möchte mit meinem PIC16F877A das LCD- Grafik Modul EA DIP 128-6
(128x64 Pixel) ansteuern. Egal was ich auch probiere, es bleiben immer
alle Pixel ausgefüllt. D.h. die Hintergrundbeleuchtung und der Kontrast
funktionieren, doch ich kann keine Pixel ansteuern. Mein Assembler-
Programm sieht dann etwa so aus:

;********************************************************************

MAIN  CALL    DISPLAY_ON    ; Display einschalten

  CALL    SET_PAGE    ; X- Adresse def.

  CALL    SET_ADDRESS    ; Y- Adresse def.

  CALL    WRITE_DATA    ; Write Display Data

  GOTO    $

;********************************************************************

DISPLAY_ON
  BCF    RW      ; Schreibzugriff
  BCF    DI      ; Kommando

  BSF    EN      ;

  MOVLW    B'00111111'    ;
  MOVWF    PORTD      ;

  BCF    EN      ;

  RETURN          ;

;********************************************************************

SET_PAGE
  BCF    RW      ;
  BCF    DI      ;

  BSF    EN      ;

  MOVLW    B'10111100'    ;
  MOVWF    PORTD      ;

  BCF    EN      ;

  RETURN          ;

;********************************************************************

SET_ADDRESS
  BCF    RW      ;
  BCF    DI      ;

  BSF    EN      ;

  MOVLW    B'01100000'    ;
  MOVWF    PORTD      ;

  BCF    EN      ;

  RETURN          ;

;********************************************************************

WRITE_DATA
  BCF    RW      ;
  BSF    DI      ; Daten

  BSF    EN      ;

  MOVLW    B'01010101'    ;
  MOVWF    PORTD      ;

  BCF    EN      ;

  RETURN          ;

;********************************************************************

RW ist Read/Write
DI ist Data/Instruction
Auf PortD sind die Datenleitungen 0..7
EN ist Enable

Kann mir jemand sagen was hier falsch ist? Oder hat jemand ein
Beispielprogramm? Besteht die Möglichkeit, dass mein LCD- Modul defekt
ist?

Vielen Dank für eure Bemühungen
Mike

von Rick Dangerus (Gast)


Lesenswert?

Hallo Mike!

Dreh mal am Kontrast, bis die Pixel verschwinden. Beispielprogramme
gibt es für AVRs. Relevant ist der Controllerchip auf dem Display.
Kritisch ist möglicherweise das Timing.

Gruß
Rick

von Mike (Gast)


Lesenswert?

Hallo Rick,

verschwinden tun die nicht. Sie werden einfach heller oder dunkler,
aber das sollte nicht das Problem sein.

Muss die Ansteuerung mit einem PIC realisieren. Habe mir gedacht, das
wäre eine kleine Sache, doch jetzt kann ich noch nicht einmal die Pixel
setzen. Ich hatte erhofft, im Datenblatt des Moduls ein kurzes Beispiel
zu finden, doch dies ist nicht der Fall. Da hat es nur ein Timing
Diagramm und nachdem richte ich mich eigentlich...

Der Controller- Chip ist der KS0108 von Samsung. Habe auch scho dieses
Datenblatt studiert, doch auch da nichts hilfreiches gefunden.

Das Timing sollte kein Problem darstellen, der PIC läuft mit einem 8Mhz
Quarz, d.h. der PIC braucht für einen Zyklus 500ns.

Gruss Mike

von Stefan B. (Gast)


Lesenswert?

Hallo Mike!

Ich sehe nirgends, wo Du die Ports konfigurierst!?!

Ist dass Dein erstes Projekt mit einem PIC bzw. überhaupt mit einem
Mikrocontroller?

Bei den PICs ist es ja so, dass sie nach dem Einschalten oder nach
einem Reset zunächst als Eingang geschaltet sind. In deinem Fall
brauchst Du sie aber als Ausgänge (für das Grafik-Display).

Dein Stichwort ist daher zunächst einmal das TRISD-Register des PIC.
Weiters das TRISx-Register an dem die Steuerleitungen RW, DI und EN
angeschlossen sind.

Studier mal das Datenblatt des PIC wo die Ports beschrieben sind.

oder schau mal bei

www.sprut.de vorbei
konkret für die IO-Ports:
http://www.sprut.de/electronic/pic/grund/ioports.htm

mfg
Stefan B.

von ==== (Gast)


Lesenswert?

Im Datenblatt zum KS0108 sollte eigentlich alles drin stehen, was du zur
Ansteuerung brauchst.

Ist EN Low oder High aktiv? So oder so, dein Code ist nicht korekt. Die
Daten sollte man mit einem kurzen Impuls ins Display "clocken"

von Mike (Gast)


Lesenswert?

@Stefan B.: Die Initialisierung habe ich schon im Griff. Ich arbeite
schon länger mit PICs, habe auch schon "normale" LCD- Displays
angesteuert. Der Code ist nur der Ausschnitt zur Ansteuerung des
Displays.

@====: Im Datenbaltt findet man ein Istruction Set und ein Timing-
Diagramm, nach diesen beiden Sachen richte ich mich ja. Mehr steht da
nicht drin. Enable ist Low- und High aktiv, mit der positiven Flanke
werden R/W und D/I übernommen, mit der negativen die Daten. Habe auch
schon versucht, die Daten mit einem kurzen Impuls zu übermitteln, nützt
aber alles nichts.

Langsam befürchte ich, dass das Modul defekt ist...

Grüsse
Mike

von Stefan B. (Gast)


Lesenswert?

Hallo Mike!

Ich beziehe mich jetzt auf das Datenblatt für den EA DIP128-6 der
folgenden Homepage:

http://www.electronic-assembly.de/deu/pdf/grafik/dip128-6.pdf

Auf Seite 2 sind vier Applikationsbeispiele - benutzt Du eines davon? -
Am ehesten Tippe ich auf Beispiel 3- Liege ich da richtig? Wie hast Du
denn die Leitung RES beschaltet? - Ich würde mal vermuten, dass er bei
dir direkt mit Vdd verbunden ist, oder?

Stefan B.
(Linz, Österreich)

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.