Pollin LCD12232 bleibt dunkel

Gast #1952780
Lesenswert?

Hallo,

ich habe ein Problem einem Display LCD-12232 von Pollin.
Ich habe natürlich Beispielquellcodes gefunden, wie das Display 
anzusteuern ist. Ich habe ein Beispiel in C und eines in BASCOM. Bei 
lassen sich problemlos komplilieren. Wenn ich es allerdings auf dem 
Controller starte, bleibt das Display dunkel.
Da ich noch unerfahren bin, hab ich nicht wirklich ne Idee, wie ich dem 
Fehler auf schliche kommen kann. Wie und wo muss ich systematisch 
suchen, um etwas zu finden?

Der Controller ist ein ATMega 16 und steckt in einem STK500.
Dass ich alles richtig angeschlosse hab, da bin ich mir recht sicher. 
Auch die Ports habe ich in den Bespielen entsprechend angepasst, damit 
sie zu meinem Beispiel passen.
Die Kontrastspannung erzeuge ich mit einem NE555, etc. Scheint auch zu 
passen.

Kann bei sowas die Kabellänge ausschlaggebend sein? Ich hab die Kabel 
recht lang gelassen, ich könnte mir vorstellen, dass da vielleicht ein 
Problem ist (siehe Foto).

Einmal hat das Display kurz wilde Pixel angezeigt (Krieg der Ameisen). 
Aber das war wohl eher Zufall.

Jegliche Hinweise würden mich freuen!
Danke!
Jens
Angehängte Dateien:
Gast #1953423
Lesenswert?

Hallo und danke erst mal für die Antworten.

Ich hab mich an den Anschlussplan vom Nachbarforum gehalten. Auch die 
Kontrastspannug erzeuge ich so, wie in er Anlage zu sehen.

Wenn ich das Display nur mit Spannung versorge, kann ich mit dem Poti 
den Kontrast verstellen. Also von "zeigt nix an" bis "alles schwarz".

Ich hab noch mal nachgemessen.
An VEE hab ich jetzt z.B. -1.8 V
An VDD sinds 4,92 V

Jetzt beim messen komm ich etwas ins grübeln.
Mein Quellcode ist der, der hier gepostet wurde:
Beitrag "DG-12232 Ansteuerung von 2xSED1520 Controller"
Wenn ich an RES messe, hab ich -0,3 V. Sollte das nicht so um die 5 V 
liegen?

Das lässt mich auf jeden Fall die Prozedur GLCD_InitPorts vermuten:
1
void GLCD_InitPorts(void)
2
{
3
  SED1520_DATA_DDR = 0xFF;        //Output
4
  
5
  // Set Controll-Bits to Output
6
  SED1520_CONTROL_DDR |= (SED1520_CS2 | SED1520_CS1 | SED1520_RW | SED1520_A0 | SED1520_RES | SED1520_Enable);
7
  _delay_ms(1);  
8
  RES_h;        //High (always)==> 68 Family MPU
9
  
10
  //Set Default-State of Controll-Bits
11
  CS1_h; CS2_h; Enable_l;  
12
}

Diese wird ja praktisch sofort am Start aufgerufen (main -> GLCD_Init -> 
GLCD_InitPorts)
Läuft da schon was schief? Komisch.

Jens
Angehängte Dateien:
Gast #1953432
Lesenswert?

Hi

>Etwas merkwürdig erscheint mir die Beschaltung von /RD, ist das so
>gewollt?

Das ist nicht nur merkwürdig sondern falsch. Mit RES=H arbeitet das 
Display im 6800-Mode. Damit wird der RD-Anschluss zu E. Und das ist das 
Übernahme-Signal für die anliegenden Daten an D7..D0.

MfG Spess
Gast #1953555
Lesenswert?

Hallo,

da bin ich wohl etwas durcheinander gekommen, ich hab Quatsch erzählt. 
Sorry.
Von dem Schaltplan hab ich nur die Erzeugung der Kontrastspannung 
übernommen.

Ich hab jetzt noch mal alles gecheckt.
DB0 bis DB7 liegen bei mir an PC0 bis PC1
CS1 -> PD2
CS2 -> PD3
RES -> PD5
/Wr -> PD0
/RD -> PD1
A0 -> PD4

Ich denke, die Zuordnung im Programm hab ich korrekt gemacht, oder?
1
#define SED1520_DATA_PORT   PORTC
2
#define SED1520_DATA_DDR   DDRC
3
#define SED1520_DATA_PIN   PINC
4

5
#define SED1520_CONTROL_PORT   PORTD
6
#define SED1520_CONTROL_DDR   DDRD
7

8

9
#define SED1520_RW     (1 << 0)
10
#define SED1520_Enable  (1 << 1)
11
#define SED1520_CS1   (1 << 2)
12
#define SED1520_CS2   (1 << 3)
13
#define SED1520_A0     (1 << 4)
14
#define SED1520_RES   (1 << 5)

Und so sollte doch vom Programmablauf her RES auf 5V liegen, oder sehe 
ich das falsch?

Jens
Gast #1953596
Lesenswert?

Sorry, Deinen Hinweis hatte ich zwar gelesen, aber verdrängt. Das ärgert 
mich um so mehr, weil es der entscheidende Hinweis ist.

Ich bedanke mich recht herzlich, jetzt funktioniert es!

Viele Grüße,
Jens

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren