Hallo zusammen,
nachdem ich inzwischen erfolgreich das "Sanbum" Display:
Beitrag "Pollin LCD SANBUM LBL-11337"
dank der tollen Vorarbeiten einiger Forumsmitglieder in Betrieb nehmen
konnte (vielen Dank für diese Vorarbeiten), möchte ich mich nun an einem
weiteren Display von Pollin versuchen. Und zwar dem folgenden:
http://www.pollin.de/shop/dt/MzU4ODc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/Grafik_Display_W_DISPLAY_WCG12864B6FSDEWG_GDSC_FF_12864WM_64_.html
Als Modellnummer wird angegeben WCG12864B6FSDEWG (GDSC-FF-12864WM-64)
und es sind auch 2 Datenblätter bei Pollin hinterlegt. Einmal eines des
Displays selbst und einmal eines des verwendeten Controllers.
So nun zu meinen Fragen (leider kann ich noch nicht praktisch testen, da
erst morgen die Stecker kommen)
1.) Aus dem Display sind die Anschlüsse D0-D7 herausgeführt und auch
andere Steuerleitungen, aber nicht die im Controller-Datenblatt
erwähnten Konfigurationspins "P/S" (für Umschaltung parallel/seriell)
und "C86" für Umschaltung des Modus (8080/6800). Bedeutet das, dass es
auch alle Fälle ein Parallelmodus ist oder habe ich irgendwo übersehen,
dass die Einstellung des Modus auch mit den vorhandenen Pins geht?
2.) ich habe verstanden, dass ich an die Cx+ und Cx- in verschiedenen
Varianten Kondensatoren anschließen kann um die eingebaute Charge-Pump
zu benutzen, jedoch ist mir zum einen nicht klar, welchen Faktor ich
nehmen muss, wenn ich die in der Zeichnung des Modul-Datenblatts
angegebenen Werte für Vdd=3,3V und LCD Driving Voltage = 8,5V haben
will. Da der Anschluss CAP4+ nicht herausgeführt ist, denke ich mal,
dass ich eh nur 3x und 2x Step-Up machen kann. Aber mit 3x bin ich bei
9,9V und mit 2x bei 6,6V also jeweils weit daneben!?
2.a) irgendwie finde ich auch keinen Wert, der bei den C benutzt wird.
Ist 100nF hier ein guter "Startwert" für Versuche?
3.) Muss ich die V0-V4 Anschlüsse irgendwie benutzen, oder dienen die
nur dazu um ggf. weitere Schaltungen mit den erzeugten Spannungen zu
versorgen?
Vielen Dank schon mal an alle die sich mit den Fragen beschäftigen!
Und gerne auch Hinweise, falls ich irgendwas völlig falsch gedacht habe.
Das meinst Du jetzt ernst? Du kaufst irgendein Display und das Forum
sagt Dir, wie Du es nutzen kannst? Interessant ...
Irgendwelche Leute nennen das "Schwarmintelligenz nutzen" - mir fallen
dabei andere Begriffe ein :-)
Dieter F. schrieb:> Das meinst Du jetzt ernst? Du kaufst irgendein Display und das Forum> sagt Dir, wie Du es nutzen kannst? Interessant ...
Ja genau das meine ich, du hast es genau auf den Punkt gebracht. Danke
dafür!
Ich weiß, dass es hier im Forum Leute gibt, welche tatsächlich Spaß
daran haben solche Dinge herauszuknobeln, ich gehöre ja auch zu denen
und wenn man an einem Punkt selbst nicht mehr weiter kommt, dann bittet
man um Hilfe.
So einfach ist das.
Von dem Dislay habe ich mir auch einige gekauft. Mir gefällt es vom
mechanischen Standpunkt ziemlich gut, und der Preis ist auch gut.
>1.)>...auch alle Fälle ein Parallelmodus ist oder habe ich irgendwo übersehen,>dass die Einstellung des Modus auch mit den vorhandenen Pins geht?
Jepp, blöderweise ist der Pin für P/S nicht herausgeführt. Um das Teil
nativ anzusteuern braucht man also massig Pins.
Die fertigen Libs für Arduino alle leider alle auf den seriellen Modus
gemünzt.
Die notwendigen Pins sind mir bei weitem zu viele, daher wäre meine Idee
für die Nutzung entweder einen Attiny als Displaytreiber, also vom
Konzept in etwa sowas wie das hier:
http://www.ebay.de/itm/371837002396http://www.ebay.de/itm/371001933236
has dem Haupt-Arduino einiges an RAM und Flash erspart und zudem
(arbeite meist mit 5V) auch das 3,3V Levelshifterproblem auf den I2C-Bus
beschränkt.
Das Gute an dem Parallelmodus ist aber, dass man das Display-Ram im
Gegensatz zum seriellen Modus auslesen kann. Theoretsch könnte man sich
damit den Buffer im µC-Ram für den DisplaytreiberµC sparen und ein
kleinerer Tiny könnte ausreichen.
Ich habe mir aber jetzt - auch für ein paar andere GLCD`S mit KS0108 wie
dem
https://www.pollin.de/shop/dt/MDY3ODc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_TRULY_MCG401_A3.html
eine Ladung MCP23017 bestellt http://www.ebay.de/itm/272041592464. Der
hat auch für das KS0108-Display genug Pins, um auch die Taster
abzufragen.
Das dürfte der bei weitem angenehmere Weg sein.
Für das KS0108-Display hab ich schon eine Fix und fertige Lib für den
MCP23017-Betrieb gefunden:
http://www.gammon.com.au/forum/?id=10940
Im Prinzip kann man diese Lib mit der portexpanderfreien Lib für den
NT7538H kreuzen:
http://www.weigu.lu/microcontroller/arduino_lib_NT7534/index.html
Ich hab angefangen, die Lib für den direkten Betrieb mit Pro Mini
umzumünzen, aber der Teensy ist schon praktisch, der hat einen
kompletten Port komplett herausgeführt, was die Bedienung des Bus
einfach und schnell macht. Für die meisten Arduinos muss man leider
lower und upper Nibble auf zwei Ports verteilen.
Unangenehm finde ich das 26polige Flexkabel mit 0,5mm Raster. Ich habe
schon eine Adapterplatine beim Heissluftföhn-Auflöten ruiniert. 0,5mm
ist schon eine Hausnummer.
Christoph K. schrieb:> Die fertigen Libs für Arduino alle leider alle auf den seriellen Modus> gemünzt.
Die Software ist kein Problem, ich steure ihn gerne "manuell" an, sprich
erst mal per Bit-Bang von einem ATmega328p aus. Libs brauche ich nicht.
> Unangenehm finde ich das 26polige Flexkabel mit 0,5mm Raster. Ich habe> schon eine Adapterplatine beim Heissluftföhn-Auflöten ruiniert. 0,5mm> ist schon eine Hausnummer.
Das ist an sich nicht problematisch, wenn ich mich gestern nicht ganz so
dämlich angestellt hätte und meine letzte passende Buchse mechanisch
zerstört hätte. Jetzt muss ich bis morgen warten.
Aber nochmal, es geht nicht um die Software sondern um die Hardware
Fragen aus meinem Startbeitrag.
Ralf M. M. schrieb:> So nun zu meinen Fragen
Diese Schaltung sollte passen, nimm aber für alle Kondensatoren 1µF,
steht auch so im Datenblatt. Das Display ist ausschliesslich für
parallelbetrieb.
Christoph K. schrieb:> Ich habe> schon eine Adapterplatine beim Heissluftföhn-Auflöten ruiniert.
Handlöten mit vieeeeel Flux und feiner abgeflachter Spitze, geht
kinderleicht.
Werner H. schrieb:> Diese Schaltung sollte passen, nimm aber für alle Kondensatoren 1µF,> steht auch so im Datenblatt. Das Display ist ausschliesslich für> parallelbetrieb.
Super, vielen vielen Dank, das hilft mir sehr weiter.
Nun denke ich habe ich auch die Funktionsweise verstanden. Im Nachhinein
und wenn man weiß wonach man suchen muss, dann findet man die Dinge.
Das mit den Spannungen war mir erst unklar, aber logisch, wenn die keine
Kondensatoren für die Charge-Pump im Display integrieren können, dann
können sie auch keine zur Spannungsstabilisierung rein machen. Außerdem
hatte ich dann mit meinen "Sanbum" Displays Glück gehabt, denn da habe
ich den entsprechenden Kondensator vergessen und es funktioniert
trotzdem einwandfrei. Werde ihn aber trotzdem gleich mal nachrüsten.
Werner H. schrieb:> Handlöten mit vieeeeel Flux und feiner abgeflachter Spitze, geht> kinderleicht.
Ok, ich bin kein Kind mehr, vermutlich kann ich es deshalb nicht mal
ansatzweise.
Mit 3 Dioptrin Lesebrille, dazu 3-fach Lupe und alles in extra gekauftem
Flux geflutet, feine Spitze: zwei von 26 Pins, die äußeren geklappt und
dann direkt eine 4 Pins breite Lötbrücke. Das ist nix mehr für mich,
nicht mal ansatzweise.
Mit dem Heissluftlötkolben hab ich TSOP und co 16 pins noch ganz gut,
hinbekommen, aber Deine Methode ist absolut nichts für mich, geschweige
denn kinderleicht. Kann man irgendwo fertige 0,5mm Flexkabel DIL
Adapterplatinen kaufen?
christoph1024 schrieb:> Mit 3 Dioptrin
Kann ich mithalten;-) Ich nehme keine Lupe aber viel (blendfrei) Licht.
Hinderlich wären zittrige Hände. Ich nehme kein Pastenlot und auch nicht
bleifrei.
Leiterbahnen dünn verzinnen, Buchse drauf und an ein, zwei Anschlüssen
fixieren. Gut Flux drauf und mit abgeflachter Spitze und gut Wärme ohne
zusätzlich Zinn gleichmässig über die Pins streichen. Etwas Übung ist
angebracht zb. alte Platinen aus CD Laufwerken. Buchsen mit Heißluft
entlöten und händisch wieder drauf.
Christoph K. schrieb:> Unangenehm finde ich das 26polige Flexkabel mit 0,5mm Raster. Ich habe> schon eine Adapterplatine beim Heissluftföhn-Auflöten ruiniert. 0,5mm> ist schon eine Hausnummer.
Wieso das?
Hast du etwa versucht, das Folienkabel anzulöten?
Also, eine Buchse für ein Folienkabel kann man genauso leicht anlöten
wie einen normalen IC im 0.5mm Raster: auf jeder Seite 1 Pad verzinnen,
Buchse drauf, erstmal 1 Pin anlöten, Sitz kontrollieren, ggf.
korrigieren. Dann mit genug Kolophonium alles anlöten, egal ob da was
zwischen die Kontakte läuft. Dann mit ner dünnen LIFY (feindrähtige
Litze), getunkt in Kolo, dranhalten, Litze mit trockenem Kolben erhitzen
und schon saugt sie das überflüssige Zinn ab. Mit
Zahnbürste+Spiritus+Papiertaschentuch säubern. Fertig.
W.S.
W.S. schrieb:> Mit> Zahnbürste+Spiritus+Papiertaschentuch säubern. Fertig.
und so wie oben sieht es dann aus (vor der Behandlung mit der
Zahnbürste)
christoph1024 schrieb:> Kann man irgendwo fertige 0,5mm Flexkabel DIL> Adapterplatinen kaufen?
Du meinst sowas
http://www.ebay.de/itm/391447802315
Suche nach "FFC" oder "FPC" und zusätzlich "PCB Adapter" bei eBay
Ich werde nun morgen endlich mit meinen Tests beginnen können
Endlich habe ich nun Zeit gefunden in den letzten Tagen und konnte das
Display nun zum laufen bringen.
Vielen Dank nochmals für die Hilfe
P.S. der Parallelmodus befindet sich in der 8080 Betriebsart
Moin,
ich habe ein Probelem.
Vor Zeiten habe ich von ramime etwas Code bekommen. Den habe ich auf
einen STM32F103 protiert und soweit auch zum laufen bekommen.
Leider verstehe ich nicht, woher die schwarzen Striche kommen und er die
Darstellung streckt (uint8_t font [96] [5]).
Vielleicht sieht jemand mein Denkfehler. Ich mache vermutlich was in der
MonoGLCD.update() falsch.
1
constuint8_tfont[96][5]{
2
{0x00,0x00,0x00,0x00,0x00},// space (0x20)
3
{0x00,0x00,0x2F,0x00,0x00},// !
4
{0x00,0x07,0x00,0x07,0x00},// "
5
{0x14,0x7F,0x14,0x7F,0x14},// #
6
{0x24,0x2A,0x7F,0x2A,0x12},// $
7
{0x23,0x13,0x08,0x64,0x62},// %
8
{0x36,0x49,0x55,0x22,0x50},// &
9
{0x00,0x05,0x03,0x00,0x00},// '
10
{0x00,0x1C,0x22,0x41,0x00},// (
11
{0x00,0x41,0x22,0x1C,0x00},// (
12
{0x14,0x08,0x3E,0x08,0x14},// *
13
{0x08,0x08,0x3E,0x08,0x08},// +
14
{0x00,0x50,0x30,0x00,0x00},// ,
15
{0x08,0x08,0x08,0x08,0x08},// -
16
{0x00,0x30,0x30,0x00,0x00},// .
17
{0x20,0x10,0x08,0x04,0x02},// /
18
19
usw....
MAIN:
1
uint8_tg_buf[64*128/8];
2
MonoGLCDGLCD(g_buf);
3
4
intmain(void)
5
{
6
HAL_Init();
7
SystemClock_Config();
8
MX_GPIO_Init();
9
MX_USART2_UART_Init();
10
11
GLCD.init();
12
// memcpy(g_buf,logo1,sizeof(logo1));
13
memcpy(g_buf,font,sizeof(font));
14
GLCD.update();
15
HAL_Delay(3000);
16
while(1)
17
{
18
19
}
20
/* USER CODE END 3 */
21
}
INCLUDE:
1
// defines ------
2
#define DISPLAY_ON 0xAF
3
#define DISPLAY_OFF 0xAE
4
5
#define DISPLAY_START_LINE_SET 0x40 //0x40 to 0x7F 63-Stufen
6
#define PAGE_ADRESS_SET 0xB0 //0xB0 to 0xB8 8-Stufen
7
#define COLUMN_ADRESS_SET 0x00 //0x00 to 0x18 24-Stufen
8
9
#define ADC_SELECT_NORMAL 0xA0
10
#define ADC_SELECT_REVERSE 0xA1
11
12
#define DISPLAY_NORMAL 0xA6
13
#define DISPLAY_REVERSE 0xA7
14
15
#define ENTIRE_DISPLAY_ON 0xA4
16
#define ENTIRE_DISPLAY_OFF 0xA5
17
18
#define LCD_BIAS_1_9 0xA2 //default
19
#define LCD_BIAS_1_7 0xA3
20
21
#define READ_MODIFY_WRITE 0xE0
22
23
#define END 0xEE
24
#define RESET 0xE2
25
26
#define COMMON_OUTPUT_MODE_SEL 0xC0 //0xC0 to 0xCF 15-Stufen
27
28
#define POWER_CONTROL_SET 0x28 //0x28 to 0x2F 7-Stufen
29
30
#define V0_VOLTAGE_REGULATOR 0x20 //0x20 to 0x27 7-Stufen