Dein Display macht gar nichts? Wie sieht es mit der Kontrastspannung aus?
Hallo
Ich möchte ein Nokia 3310 Display mit einem PIC18F4680 ansteuern mein PIC ist mit einem 20MHz Takt ausgestattet. und ich programmiere in c.
Ich habe das display folgender Maßen angschlossen:
PIC Display
RC5 (SDO) -> SDI (PIN 3)
RC3(SCLK) -> SCLK (PIN 2)
RC4 (I/O) -> RES (PIN 8 )
RD3 (I/O) -> cs (SCE) (PIN 5)
RD2 (I/O) -> D/C (PIN 4)
Den Pin1 vom Display habe ich an ca. 3,3V Versorgungsspannung, PIN6 an GND und PIN 7 über einen 0,47µF Kondensator an Masse angeschlossen.
Nun hab ich mir das Datenblatt vom PCD8544 Displaytreiber hergenommen und einfach mal das Programming example programmiert.
Leider macht mein Display gar nichts.
Hier das wesentliche vom Code:
Was sollte bei der Vop set eingstellt werden??Code:#include<18F4680.h> #use delay (clock=20000000) #fuses HS, NOWDT, NOPROTECT, NOLVP #include<stdlib.h> void main (void) { setup_spi(spi_master|SPI_H_TO_L); output_low(PIN_D3); // cs -> low ; spi_write(0x21); // function set: extended instruction set spi_write(0x90); // Vop set +16 ´ b [V] spi_write(0x20); // function set: normal instruction set spi_write(0x0C); // display control set normal mode output_high(PIN_D2); // D/C -> DIsplay mode spi_write(0xFF); spi_write(0xFF); spi_write(0xFF); spi_write(0xFF); spi_write(0xFF); spi_write(0xFF); while(true) { } }
Stimmt der Code vom Prinzip her oder muss ich da anders vorgehen??
Was hab ich falsch gemacht oder habe ich bloß irgendetwas vergessen??
Hoffe mir kann jemand helfen! ich bedanke mich schon mal im Voraus!
mfg
Dein Display macht gar nichts? Wie sieht es mit der Kontrastspannung aus?
Hallo
Nein mein Display macht nichts.
Das Display hat ja 8 Anschlüsse. Die 5 Datenleitungen wie oben beschrieben, ein Vdd, Vout und GND.
Vdd hab ich auf 3,3V gelegt und Vout über einen Elko auf Masse.
Jetzt habe ich in dem Datenblatt vom Display gelesen das an Vout gegen Masse ca. 7V anliegen sollten, wenn Vdd 3V ist.
Bei mir liegt da aber nur ein Wert von 1,6V an. Liegt das an den Einstellungen die man beim Initialisieren zum Display schickt? oder könnte möglicherweise das Display kaputt sein??
mfg
kaputt sein kann es sicher immer, hast du es denn neu gekauft?
Woher hast du die 3,3V? Woher hast du die Idee einen Kondi zwischen Vout und GND zu schalten? Ist der Kontakt an allen Leitungen IO?
ist der pin den auch auf high geschalten?RC4 (I/O) -> RES (PIN 8 )
ansonsten ist das display im reset.
Hab das display von einem Handy ausgebaut. das display hat zu dem zeitpunkt noch funktioniert. aber ich dachte mir das ich es vielleicht beim anlöten des flachbandkabels kaputt gemacht hab?
habe die schaltung von http://sandiding.tripod.com/lcd.html
nur das ich einen 18F4680 verwende und die SDI (von display) und den SCLK am SSP vom pic angeschlossen habe.
die 3,3V habe ich über einen spannungsteiler. also von der 5V Versorgungsspannung des pics.
Ok. gehen wir davon aus es ist IO. Was ist mit dem Reset Pin? So ein Display sollte beim Start einmal ein Reset bekommen und dann muss dieser Pin8 immer high sein.
ABER: Wenn du versorgungsspannung 3,3V für das Display hast ist das toll. Nur hast du die I/O Signale vom PIC auch von 5V auf 3,3V gewandelt?? Oder kommt das Display damit klar?
Mit "woher hast du die 3,3V" meinte ich: woher weißt du, dass es 3,3V sein müssen?
Das mit dem Reset hab ich auch schon ausprobiert.
Der Reset ist laut Datenblatt invertiert. also hab ich nach anlegen der 3,3V Versorgungsspannung. den Reset kurze Zeit auf HIGH gelegt und dann auf LOW, somit sollte das Display ja resetet sein oder?
ich habe jeden benötigten ausgang des pics mit so einem spannungsteiler ausgestattet.
das mit den 3,3V habe ich aus dem Datenblatt bzw. aus anderen Forums wo es um so ein display ging.
hab jetzt mal das datenblatt vom display Treiber angehängt.
mfg
ähm, wenn der Reset invertiert ist (wie übringens sehr oft) dann ist er aktiv wenn du GND anlegst. Damit dein Display also nicht ständig reset macht benötigt dieser Pin 3,3V.
Also:
Reset(High)
wait(5ms)
Reset(LOW)
wait(10ms)
Reset(High)
LOS GEHTS!
sooo hab jetzt das jetzt mal mitn reset so getestet. tut sich leider auch nix.
mein aktueller code schaut jetzt mal so aus.
im datenblatt steht bei dem programming example das SCE (invertiert) auf LOW gehn soll. das heißt ich muss im Programm auf HIGH legen damit dann LOW am SCE anliegt oder steh ich jetzt komplett auf der Leitung??Code:#include<18F4680.h> #use delay (clock=20000000) #fuses HS, NOWDT, NOPROTECT, NOLVP #include<stdlib.h> void main (void) { //int i; setup_spi(spi_master|SPI_H_TO_L|SPI_CLK_DIV_4); output_high(PIN_D3); // Chip select //Display reset output_high(PIN_C4); // RES delay_ms(5); output_low(PIN_C4); // RES delay_ms(10); output_high(PIN_C4); // RES output_low(PIN_D2); // D/C -> Command mode spi_write(0x21); // function set: extended instruction set spi_write(0xC8); // mittlerer Kontrast spi_write(0x06); // Temp. Ausgleich spi_write(0x13); // bias 1:48 spi_write(0x20); // function set: normal instruction set spi_write(0x0C); // display control set normal mode output_high(PIN_D2); // D/C -> DIsplay mode spi_write(0xFF); spi_write(0x00); spi_write(0xFF); spi_write(0x00); spi_write(0xFF); spi_write(0x00); while(true) { } }
mfg
Lesezeichen