DOG XL160 mit UC1610

Gast #5478443
Lesenswert?

Hallo gemeinde
Habe ein Display DOG XL160 zum Gebustag geschenk bekommen. Da ich einige 
Teile mit dem i2C Bus betreibe möchte ich auch dieses Display mit dem 
Bus betreiben. Habe nach dem DB es so aufgebaut, wie es der Hersteller 
vorgibt. Kann auch die Adresse 0x7e auslesen. Mehr kommt leider nicht. 
Das DB des Herstellers ist für mich seht kurz geraten und geht wenig auf 
die Programmierung ein. Nach einer längeren Suche im Netz mit Tante 
google habe ich kaum was zum i2C Bus gefunden. SPI scheint es weit mehr 
zu geben. Kann mir dabei jemand auf die Sprünge helfen?
Arbeite mit C und einem Atmega 128

LG Klars
Gast #5478557
Lesenswert?

Im Datenblatt ist die Reihenfolge beschrieben, bei mir Seite 31. Danach 
erfolgt der Anschluss an den Prozessor mit I2C und andere Anschlüsse. 
Scheint verschiedene DB zu geben. Es sind Register beschrieben. Leider 
komme ich mit dem Aufruf wann welches nicht klar und welche Daten.
#5478564
Lesenswert?

Etwas mehr Quelltext wäre ganz nett. U.U. auch wie das LCD bzw. ob es so 
wie im DB auf Seite 5 verschaltet ist (ein Kondensator 100nF oder 1uF 
zw. VDD und VSS nah an den Pins 23/24 bzw. 25/26 kann u.U. nützlich 
sein)
Initialisierung nach DB sollte funktionieren bzw. die Sequenz wäre:
Reset auf Low, 1 ms warten, Reset auf High, danach die Werte wie im DB 
schreiben, dann Set Display Enable. Danach läuft die Programmierung 
recht simpel: Spalte festlegen (Set Column Address LSB und MSB), Zeile 
festlegen (Set Page Address) und dann die Daten mit Write Data hinterher 
(hab die Teile hier allerdings nur im SPI-Modus in etlichen Geräten in 
Betrieb)

Edith: Datenblatt = 
https://www.lcd-module.com/eng/pdf/grafik/dogxl160-7e.pdf
Gast #5478571
Lesenswert?

Habe es genau wie auf Seite 5 beschrieben ist verdrahtet. Habe auch den 
Kondensator mit 100nF eingesetzt, fast direkt an den Pins. Es sind auch 
beiden Bus Widerstände drin. Display geht ohne Problem da ich die 
Adresse auslesen kann.
Mit SPI finde ich einiges im Netz. Leider kaum was zu I2C. Habe auch 
andere Displays von EA in Nutzung, alles mit I2C, keine Probleme
Gast #5479248
Lesenswert?

Beim auslesen der Adresse bekomme ich ACK. Ist so in diesem Programm. 
Wenn ich die Adressenwahl umstecke bekomme ich die 2 Adesse. Ist die 
0x7e und 0x7a. Etwas auf Display habe ich nocht nicht geschrieben. 
Verstehe das init nicht
#5479320
Lesenswert?

OK, das ist "write data".

Ich beziehe mich auf Seiten 5 und 6 aus dem Link oben. Das Datenblatt 
zum Controller habe ich NICHT ausführlich gelesen.

Es scheint Befehle zu geben, die mehr als ein Byte lang sind, siehe 
Seite 5 unten. Kommandos sollen auf die Kommandoadresse geschrieben 
werden als ein I2C-Zugriff mit Start und Stop. Dann das nächste Kommando 
auf diese Art, bis die Initialisierung laut Plan durchlaufen ist. Du 
wendest hierfür nur das Schema "write mode" an.

Die Umschaltung zwischen Kommando und Daten macht das Bit CD auf Seite 5 
unten. Dieser Trick wird als neue Adresse verkauft.

So ein kompliziertes Datenblatt versteht man eigentlich nur dann, wenn 
man es bereits versteht oder mit ähnlichen heimlich vorher geübt hat. 
Das ist wie mit dem Ei und der Henne, wobei ebenso ein Krokodil dafür in 
Frage kommen könnte.


Hier habe ich das Spiel mal für ein anderes Display gemacht:
https://www.mikrocontroller.net/attachment/308034/Sanbum_LBL-11337-1-01.zip


Du kannst ja mal die Initialisierung schreiben und hier rein stellen, 
dann werden die Experten schon finden, woran es liegt.

MfG
Gast #5479350
Lesenswert?

Da kann ich dir nur Rechtr geben. Habe das Datenblatt teilweise 
übersetzt und versucht zu verstehen. Habe beim Hersteller nach Infos 
gesucht und im Netz dazu. Leider gibt es kaum was dazu. Das Datenblatt 
verstehe ich auch nicht in DE. Ist so ein schönes Display ...
Gast #5479450
Lesenswert?

Hi

>Das Datenblatt verstehe ich auch nicht in DE.

Was verstehst du da eigentlich nicht? Ist es die Befehlsfolge oder hast 
du Probleme mit I2C.
Ich habe das DOGXL160 (mit der angegebenen Initialisierung) mit SPI 
getestet.  Das hat ohne Probleme sofort funktioniert.

Allerdings verstehe ich eigentlich nicht, warum man bis zu 12MHz 
Ubertragungs takt bei SPI gegen I2C mit zweifelhaften Eigenschaften 
eintauschen sollte.

MfG Spess
Gast #5479581
Lesenswert?

Hallo Spess
mit dem I2C Bus habe ich keine Probleme. Betreibe auch andere Displays 
und ICs am Bus. Habe Probleme mit der Befehlsfolge des displays. Bei 
meinen Teilen funktioniert der Bus ohne jede Probleme. Habe teilweise 
ca. 5 verschiedene Teile am Bus. Leider ist für mich die Reihenfolge und 
was ich zum Display übertragen soll das Problem.

LG Klars
#5479633
Lesenswert?

Also es muß sich wirklich niemand damit beschäftigen:
1
/* gehört zum Sanbum-Display */
2
const uint8_t UC1601_init[13] = {    //die sieben Bytes zum Initialisieren des Displays von hier auslesen und ans Display übertragen.
3
0x24,//|0b00,    //Set Temperature Comp. TC[1:0]
4
// falsch 0x28,//|0b110,    //Set Power Control PC[2:0]    bedeutet internal VLCD x 7
5
0x2C,//|0b110,    //Set Power Control PC[2:0]    bedeutet internal VLCD x 7
6
0x40,//|0b000000,  //Set Scroll Line SL[5:0]  
7
//0x81, günstiger Wert  //Set VBIAS Potentiometer PM [7:0] (Double byte command)
8
0x81,          //bei 0x50 begint das Display grau zu werden. Bei 0x80 sind Punkte schwarz. Set VBIAS Potentiometer PM [7:0] (Double byte command)
9
0xC0,    
10
0x84,//|0b0,    //Set Partial Display Enable LC [4]
11
0x88,//|0b001,    //Set RAM Address Control AC [2:0]
12
0xA0,//|0b0 ,    //Set Frame Rate LC [3]
13
0xC0,//|0b100,    //Set LCD Control LC[2:1]
14
0xE8,//|0b00,     //Set Bias Ratio BR [1:0]  Bias-ratio = 6 ist der default-Wert. Damit läßt sich das Display "ganz dunkel schwarz" steuern
15
0xF1,        //Set CEN [6:0] (Double byte command)
16
0x15,        ///auf diesen Wert COM_end einstellen: 0x15 = 21. Das Display hat also 21 Pixels Höhe
17
0xAF//|0b1      //Set Display Enable DC[2]    0xAe = off, 0xAF = on
18
};
#5479836
Lesenswert?

Klars schrieb:
> Du meinst also das SPI und I2C beim init gleich ist?

Ja, Initialisierung ist identisch. In beiden Fällen ist/sollte(s.o.) die 
Abfolge identisch sein:
Reset auf low, warten, Reset auf high (kann zwar laut Datenblatt 
weggelassen werden bzw. auf VDD gelegt werden, ist aber nicht verkehrt 
den Reset auch manuell durchführen zu können...).
Danach die Sequenz aus dem Datenblatt übertragen (Initialisation 
example).
Rest besteht, falls das Display nicht mehr an/aus geschaltet werden 
soll, nur noch aus Set Column und Set Page Address und Write Data.
Gast #5480118
Lesenswert?

Du meinst so was:
1
i2c_start(Write_Command);          // set device address and write mode
2
  i2c_write(0xF1);                        // Set last COM electrode to 103 (number of COM electrodes - 1)
3
  i2c_write(0x67);                        //
4
  i2c_write(0xC0);                        // SEG (column) and COM (row) normal
5
  i2c_write(0x40);                        // Set Display Startline to 0
6
  i2c_write(0x50);                        //
7
  i2c_write(0x2B);                        // Set Panelloading
8
  i2c_write(0xEB);                        // Set Bias to 1/12
9
  i2c_write(0x81);                        // Set Contrast
10
  i2c_write(0x5F);                        //
11
  i2c_write(0x89);                        // Set Auto-Increment
12
  i2c_write(0xAF);                        // Display on
13
  i2c_stop();                             // set stop conditon = release bus
Damit kann ich die INI Exampel übertragen.
Das Teil des Codes steht bei mir schon drin. Die Adresse von 
Write-Command ist damit 0x7e oder 0x7a.
Bleibt noch die Frage nach den UC1610 Programming Commandes. Was muss 
ich damit übertragen?
#5480321
Lesenswert?

spess53 schrieb:
> Hi
>
> Also es muß sich wirklich niemand damit beschäftigen:
>
> Und du meinst das passt für alle Displays?
>
> MfG Spess

Nein, aber ich hoffte, er würde zu Übungszwecken erst mal mit einem 
einfacheren Dabla beginnen, dieses zu verstehen und hätte anhand des 
Programmschipsels einen Anhaltspunkt, worum es geht. Dann hätte er den 
Transfer machen können und die neu sich selbst beigebrachten Fähigkeiten 
auf sein favorisiertes Display anwenden können und hätte die Aufgabe 
ohne fremde Hilfe lösen können.
Aber ich glaube, diesen Weg wollte er nicht gehn. Es gibt andere Wege...

Diese GLCD-Datenblätter sind nichts für ungeübte, finde ich. Nur wenn 
man mehrere bereits verstanden hat, kann man auf Bekanntem aufbauen und 
Lücken im Verständnis schließen.



MfG

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