-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 34

Thema: Problem beim Ansteuern eines Nokia 3310 Display!

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.01.2005
    Beiträge
    103

    Problem beim Ansteuern eines Nokia 3310 Display!

    Anzeige

    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:

    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) { 
          
          
       }
    }
    Was sollte bei der Vop set eingstellt werden??
    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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Dein Display macht gar nichts? Wie sieht es mit der Kontrastspannung aus?
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.01.2005
    Beiträge
    103
    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

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    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?
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2008
    Beiträge
    10
    RC4 (I/O) -> RES (PIN 8 )
    ist der pin den auch auf high geschalten?
    ansonsten ist das display im reset.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.01.2005
    Beiträge
    103
    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.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    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?
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.01.2005
    Beiträge
    103
    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
    Angehängte Dateien Angehängte Dateien

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    ä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!
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.01.2005
    Beiträge
    103
    sooo hab jetzt das jetzt mal mitn reset so getestet. tut sich leider auch nix.
    mein aktueller code schaut jetzt mal so aus.

    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) { 
       }
    }
    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??

    mfg

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •