mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD an MSP


Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade ein Grafik-LCD (122*32 Pixel von Reichelt,
Datasheet unter http://www.lcd-module.de/deu/pdf/grafik/dip122-5.pdf
).

Angeschlossen ist das Teil an einen MSP430F449 mit 8MHz wie folgt:

D0-D7 an P3
A0,E1.E2 an P4

R/W auf GND
RESET auf 5V
VCC auf 5V
VSS auf GND
Kontrast auf -2V - -4V5 (über Poti regelbar)


Damit hängt das 5V LCD an einem 3v3 Controller, was aber kein Problem
sein sollte, da ich nur ins LCD schreibe und der High-Pegel ab 2V4
erreicht ist....

Problem ist, ich weiß nicht ob etwas falsch angeschlossen ist oder nur
die Software ein Fehler hat:

Nur zum Test hab ich folgendes getestet:

// A0 -> 1 = Befehl
DISP_SEL_A0;
// D7-D0 10101111
DISP_DATABUS = DISP_ON;

// Linke Hälfte aktivieren
DISP_SEL_E1;
// deaktivieren....
DISP_DESEL_E1;

//A0->0 = Daten
DISP_DESEL_A0;
// irgendwelche Daten
DISP_DATABUS = 0x34;

DISP_SEL_E1;
DISP_DESEL_E1;


Hat jemand das Teil schon einmal direkt am MSP430 betrieben und hat
vielleicht einen Beispielcode oder irgendwelche andere Tips???

greetz,

bernd

Autor: tenner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hilft das?

gfx_lcd.c

Autor: tenner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
gfx_lcd.h

Autor: tenner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
char.h

Autor: flintstone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bernd!

Vor kurzem habe ich mit dem gleichen Display experimentiert.
Bei mir ist allerdings die Frage nach der Spannung nicht gewesen, da
ich einen AT89S8252 benutze, der opencollector hat. Genau das war der
Grund, weshalb ich Pullup -Widerstände einsetzen musste. Ich habe die
Datenleitungen mit 15kOhm versehen. Die Steuerleitungen mussten stärker
hochgezogen werden - hier habe ich 1kOhm eingesetzt. Ich habe alle 5
Steuerleitungen an den MC geschaltet.
Wichtig ist auch noch, dass das Display vorher eingeschaltet wird. Per
Befehl musst du das Display auf "ON" schalten.
Hier noch meine Assemblerroutinen, mit denen ich das Display
anspreche.
InitDisplay:
    ; Resetimpuls erzeugen
    CLR  RES
    CLR  RES
    SETB  RES
    ; Display "ON"
    MOV  A,#10101111b
    CALL Displ_Steuer1
    CALL Displ_Steuer2
    ;  Line einstellen
    MOV  A,#11000000b
    CALL Displ_Steuer1
    CALL Displ_Steuer2
    ;  Page einstellen
    CALL  Home
    ;  Spalte einstellen
    MOV  A,#00000000b
    CALL Displ_Steuer1
    CALL Displ_Steuer2
    ; Ausgabe einer Zeichenkette (lösche Display)
    CALL  CLS
    CALL  ZeiKet
    DB  'Hallo Welt! ....'
    DB  0
    RET
Displ_Steuer1:  CLR  A0
    CLR  R_W
    SETB  E1
    MOV  Daten,A
    CLR  E1
    RET
Displ_Daten1:  SETB  A0
    CLR  R_W
    SETB  E1
    MOV  Daten,A
    CLR  E1
    RET
Displ_Steuer2:  CLR  A0
    CLR  R_W
    SETB  E2
    MOV  Daten,A
    CLR  E2
    RET
Displ_Daten2:  SETB  A0
    CLR  R_W
    SETB  E2
    MOV  Daten,A
    CLR  E2
    RET
Displ_Read1:  MOV  A,#0FFh
    SETB  R_W
    SETB  A0
    SETB  E1
    MOV  A,Daten
    CLR  E1
    RET
Displ_Read2:  MOV  A,#0FFh
    SETB  R_W
    SETB  A0
    SETB  E2
    MOV  A,Daten
    CLR  E2
    RET

Das Display läuft jetzt seit ca. 2 Monaten ohne Probleme.

Gruß
Guido

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, vielen dank

ich werde die beiden dinge heute abend testen...ich hoffe es wird
funktionieren...


mfg,

bernd

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ tenner


betreibst du das display auch direkt an den msp ports?? oder ist ein
pegelwandler um auf die 5v zu kommen zwischengeschaltet???

mfg,

bernd

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@tenner

ich habe gerade gesehen, dass du beim schreiben auf das display den RW
auf 1 setzt. Sollte das so sein?? ich dachte beim schreiben muss der
wert 0 sein.

mfg,

Bernd

Autor: tenner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin bernd,

das ist nicht ganz richtig, ich setze vor und nach dem schreiben RW auf
1. dann werden die daten auf den bus gelegt und erst dann wird RW auf 0
gesetzt und mit E1 bzw. E2 der chip gewählt.zumindest beim
writecommand(), beim writedate() bleibt RW auf 0.

ich betreibe das display direkt am msp. allerdings sollte der msp dann
mindestens mit 3,3V laufen.

RESET auf 3,3V
VCC auf 5V
VSS auf GND

das dispay kann auch mit VCC 3,3V betrieben werden, allerdings braucht
es dann mehr negative spannung für den kontrast.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.