Forum: Mikrocontroller und Digitale Elektronik LCD Display defekt oder einstellungen ändern ?


von Richard X. (synq1e)


Lesenswert?

Ich verwende zum ersten mal ein DOG display von Electronic Assembly und 
zwar das EA DOGXL160B-7 (STN neg. blau transmissiv) mit blauer 
backlight.

nur schauts nach der init komisch aus kann mir wer sagen ob es defekt 
ist ? bilder hab ich angehängt.

oder mir vlt tipps geben welche einstellungen ich ausprobieren soll beim 
uc1610

--
nutzloser Anhang entfernt, da Inhalt weiter unten erneut gepostet.

-rufus

von sfgsdfsd (Gast)


Lesenswert?

Was soll der MIst mit den gezippten Bildern?
Wie sollen wir dir ohne Quellcode helfen?
Wie sollen wir dir ohne Schaltplan helfen?
Sollen wir raten?

von Teo D. (teoderix)


Lesenswert?

Sorry,
ich für meine Person bin zu faul n zip zu entpacken um mir Bilder an zu 
sehen. ka wies andren geht!?

von Georg G. (df2au)


Lesenswert?

Wenn die Bilder etwas schärfer wären, könnte man bestimmt mehr sagen. So 
sieht es für mich aus wie ein mit Zufallsdaten vollgeschriebenes Grafik 
Display.

von Richard X. (synq1e)



Lesenswert?

Verbindungen display zu µC:

Display:       atmega8L:
BM0       <--> GND
D6        <--> 3.3V

SDA       <--> PB3
SCK       <--> PB5
CD        <--> PB0
CS        <--> GND

RST       <--> 3.3V

kondensatoren sind wie laut datenblatt angeschlossen und gleiche 
kapazität

ich freu mich auf jede antwort ;)

von Thomas E. (thomase)


Lesenswert?

> PORTB  |=  (1<<PB2) + (1<<CD) + (1<<CS);
> //SS PULLUP active for safe master operation ;CD+CS HIGH PEGEL

SS muss nicht auf High, sondern auf Ausgang stehen.

mfg.

von Richard X. (synq1e)


Lesenswert?

ich kann diese library irgendwie nicht so verwenden wie der , der sie 
geschrieben hat , der autor verwendet ja den SPI 4-wire mode. wenn ich 
aber CD und CS anschliesse funktioniert die init nicht(keine spannung 
VLCD).
deswegen hab ichs mit 3-wire probiert. ich glaub der fehler liegt in 
diesem code stück:
1
//-----------------------------------------------------------------------------
2
// sendet einen Befehl an das Display
3
//-----------------------------------------------------------------------------
4
void UC1610_send(UC1610_CMD_t mode, unsigned char wert) { // interne Funktion
5
  if((mode==UC1610_CMD1) || (mode==UC1610_CMD2)) {
6
    // mode auf control
7
    UC1610_PORT&=~UC1610_A0;
8
  }
9
  else {
10
    // mode auf data
11
    UC1610_PORT|=UC1610_A0;
12
    UC1610_LCD.akt_col_adr+=1;
13
  }
14
  
15
  // Chip-Select auf Lo
16
  UC1610_PORT&=~UC1610_CS;
17
  
18
  //---------------------------------------------------
19
  //---- Byte per SPI schreiben
20
  //---------------------------------------------------
21
  SPI_SEND (wert);
22
  
23
  
24
  // Chip-Select auf Hi
25
  if((mode==UC1610_CMD1) || (mode==UC1610_DATA)) {
26
    // nur wenn kein mehrbyte befehl
27
    UC1610_PORT|=UC1610_CS;
28
  }
29
}
 laut datenblatt:
"3 WIRE, 8-BIT SPI-MODE

Jede Änderung des Pegels am Pin
CD setzt den internen Bit-Zähler zu-
rück (CS0 kann fest auf LO liegen).
Danach werden die 8-Bit in das Dis-
play getaktet (MSB zuerst). Der Pe-
gel am Pin CD entscheidet ob Da-
ten oder Befehle übertragen werden.
Der  Pegel  darf  sich  während  der
Übertragung der 8-Bits am Pin CD
nicht ändern.
Die  Taktrate der CLK Leitung kann
je  nach  Versorgungs-
spannung  und  Leitungs-
eigenschaften bis zu 8 MHz
betragen."

versteh ich das richtig es muss CD nach dem befehl/daten togglen UND der 
richtige pegel anliegen?

vlt kann ich so wie der code jetzt ist nur befehle senden aber keine 
daten ?

von Richard X. (synq1e)


Lesenswert?

Thomas Eckmann schrieb:
>> PORTB  |=  (1<<PB2) + (1<<CD) + (1<<CS);
>> //SS PULLUP active for safe master operation ;CD+CS HIGH PEGEL
>
> SS muss nicht auf High, sondern auf Ausgang stehen.
>
> mfg.

wieso SPI funktioniert einwandfrei

von Thomas E. (thomase)


Lesenswert?

chris __ schrieb:
> wieso SPI funktioniert einwandfrei
Dann muss das Display ja auch funktionieren.
Dass SS auf Ausgang steht, ist kein MUSS. Stellt aber 100%ig sicher, 
dass das SPI auf Master steht und auch bleibt.

> versteh ich das richtig es muss CD nach dem befehl/daten togglen UND der
> richtige pegel anliegen?
Ja sicher. Aber nicht toggeln. Toggeln ist Umschalten, ohne zu wissen, 
was vorher war. Damit lässt man Leds blinken. Hier muss explizit 0 oder 
1 ausgegeben werden.
> vlt kann ich so wie der code jetzt ist nur befehle senden aber keine
> daten ?
Wie sieht der Pin denn aus, wenn geschrieben wird?

Dein Display sieht jedenfalls recht uninitialisiert aus. Nach der 
Initialisierung solltest du ein leeres Display mit einer vernünftigen 
Kontrasteinstellung haben. Hinten im Datenblatt ist ein 
Initialisierungsbeispiel drin. Damit läuft das auch.
Programmier das selbst und nimm nicht irgendein Programm, von dem du nur 
glaubst, dass es läuft. So schwer ist das nicht. Wenn du einen Punkt auf 
das Display bekommst, geht auch der Rest. Dann kannst du dir immer noch 
das andere Programm vornehmen.

mfg.

von Richard X. (synq1e)


Lesenswert?

hab mal was geändert


//---------------------------------------------------------------------- 
-------
// sendet einen Befehl an das Display
//---------------------------------------------------------------------- 
-------
void UC1610_send(UC1610_CMD_t mode, unsigned char wert) { // interne 
Funktion
  if((mode==UC1610_CMD1) || (mode==UC1610_CMD2)) {
    // mode auf control
    UC1610_PORT&=~(1<<UC1610_A0);
  }
  else {
    // mode auf data
    UC1610_PORT|=(1<<UC1610_A0);
    UC1610_LCD.akt_col_adr+=1;
  }

  // Chip-Select auf Lo
  UC1610_PORT&=~UC1610_CS;

  //---------------------------------------------------
  //---- Byte per SPI schreiben
  //---------------------------------------------------
  SPI_SEND (wert);


  // CD TOGGLEN FÜR BIT ZÄHLER zurücksetzen
  if((mode==UC1610_CMD1) || (mode==UC1610_DATA)) {
    // nur wenn kein mehrbyte befehl
    UC1610_PORT^=(1<<UC1610_A0);
  }
}

jetzt ist das display komplett weiß (keine freien stellen mehr)

von Richard X. (synq1e)


Angehängte Dateien:

Lesenswert?

Thomas Eckmann schrieb:
> Wie sieht der Pin denn aus, wenn geschrieben wird?

passt oder?

M=20us

von Thomas E. (thomase)


Lesenswert?

chris __ schrieb:
> passt oder?
Wenn oben CD und unten Takt - OK.
Wie sieht es bei den Daten daten aus? Geht CD auf High?

Ein Display kann einen auch in den Wahnsinn treiben, wenn es zwar alles 
richtig anzeigt, man aber nichts sieht, weil der Kontrast nicht stimmt.

Lässt sich das mit deinem Programm einstellen?

mfg.

von Richard X. (synq1e)


Angehängte Dateien:

Lesenswert?

hab den fehler gefunden denk ich aufjedenfall ist der kontrast jetzt 
schöner .

es lag am Double-byte-command. im datenblatt des UC1610 hab ich dazu 
nichts gefunden aber aus der library von dem typen entnehme ich das CD 
NICHT togglen darf wenn der double-byte-command gesendet wird.

sso sieht das display mit diesem code aus

"Ein Display kann einen auch in den Wahnsinn treiben, wenn es zwar alles
richtig anzeigt, man aber nichts sieht, weil der Kontrast nicht stimmt."

stimmt :-)

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.