I2C comprend rien
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 45

I2C comprend rien



  1. #1
    grd666

    I2C comprend rien


    ------

    Bonjour,
    je veux gérer un afficheur en i2c j'ai copié exactement le même montage que j'ai trouvé il marche.
    Mais le programme que j'ai n'est pas pour un pic18f4550 donc je l'ai transformé pas d'erreur a la compilation.
    J'arrive a faire clignoter une led donc mes fusibles doivent être bien configurer sur mon quartz externe 20Mhz pour le pic.
    Ma question pourquoi sa marche pas ? :

    Code:
    //
    //
    //
    #include <p18f4550.h>
    #include <i2c.h>
    #include <stdlib.h>
    
    
    
    void init();
    void init_lcd();
    void tempo(void);
    void tempo2(unsigned int);
    void I2c(unsigned char);
    void envoi(unsigned char);
    void lcd_putc(char);
    void clear_lcd();
    void ligne_up();
    //
    //
    //
    #define addresse_LCD 0x40
    //-----declaration des variable globale-----------------------------------------
    
    //----------------Fonction Global--------------------------------------------------------------
    
    void envoi(unsigned char data)
    {   data=data|0x040;//E est a 1
    
        I2c(data);
        tempo();
        data=data-1;//E=0
      	I2c(data);
    	tempo();
    }
    
    void I2c(unsigned char data)
       {StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C(data);
       StopI2C();
    }
    
    
    void affich(char mess)
         {
          char data;
          data=mess&0xF0;
          data=data+4; //RS a 1  
          envoi(data);
          data=mess&0x0F;
          data=data<<4;
          data=data+4;//RS a 1 
          envoi(data);
    }
    
    void lcd_putc(char c)
       {
       switch(c)
          {
          case'\f':
             clear_lcd();
             break;
          case'\n':
             ligne_up();
             break;
          default:
             affich(c);
             break;
          }
       }
    
    void clear_lcd()
        {
       envoi(0x00);
       envoi(0x10);
        }
    void ligne_up()
       {
       //40h
       envoi(0xC0);
       envoi(0x00);
       tempo();
       }
    
    
    
    void init_lcd() //fonction qui marche 
    {		tempo();
    		tempo();
    		tempo();
    //On travaille sur la commande donc RS=0 R/W=0 écriture
    		envoi(0x00);
    		envoi(0x10);
    		envoi(0x00);
    		envoi(0x00);
    		envoi(0x10);
    
    //mode 8 bits
    		envoi(0x30);
    		envoi(0x30);
    		envoi(0x30);	
       //mode 4 bits 	
    		envoi(0x20);
     //mode 4 bits, 2 lignes, caractères 5x7 (28h)
    		envoi(0x20);
    		envoi(0x80);
       //affichage en fonction, pas de curseur (0Ch)
    		envoi(0x00);
    		envoi(0xc0);
       //le curseur se déplace vers la gauche (06h)
    		envoi(0x00);
    		envoi(0x60);
       //on efface l'afficheur
    		envoi(0x00);
    		envoi(0x10);
    
     while(1)
          {
          lcd_putc("\fFonctionne");
         tempo2(7);
          lcd_putc("\f");
          lcd_putc("Mon LCD\nI2C");
    	  tempo2(7); //20000 3s -2000 370ms- 130 20ms 65 11ms 6=1ms4 4=1ms de boucle
          }
    
    }
    
    
    void tempo()//fonction qui marche 
    {
    	unsigned int j;
    	for(j=0; j<2000; j++);
    }
    void tempo2(unsigned int t)//fonction qui marche 
    {
    	unsigned int j;
    	for(j=0; j<t; j++);
    }
    
    void init()
    {
    	TRISC = 1; //portc en entree
    	TRISD = 0; //portd en entree
    TRISD= 0xEF;//portd4 sortie
    TRISD= 0xDF;//portd5 sortie
    	TRISD= 0x7F;//portd7 sortie
    LATDbits.LATD4 = 0; //led4 éteinte
     LATDbits.LATD5 = 0; //led3 éteinte
    LATDbits.LATD7 = 0; // LED éteinte
    
    
    
    
    }
    void main()
    {
       init();
    LATDbits.LATD4 = 1; //led4 allumé
    LATDbits.LATD5 = 1; //led3 allumé
    LATDbits.LATD7 = 1; //led2 allumé
    
    
    OpenI2C(MASTER, SLEW_OFF);//
    init_lcd();//
    CloseI2C();
    
    }
    la pièce jointe c'est juste le schéma du pcf8574 et du pic
    pcf8574 dont je suis pas sur de connaître son adresse et l'afficheur dont je ne sais pas comment connaître l'adresse si c'est le problème dans mon programme

    Si vous avez une solution je vous en serais reconnaisant.
    Merci

    -----
    Images attachées Images attachées  
    Dernière modification par gienas ; 25/06/2008 à 16h13. Motif: Balises code rajoutées

  2. #2
    Seb.26

    Re : I2C comprend rien

    Maudit forum qui n'autorise les modifs que pendant 5 minutes ...

    Alors ... reprenons ... t'as un souci avec ton I2C ... voyons tout ça ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  3. #3
    Seb.26

    Re : I2C comprend rien

    Bonjour,
    je veux gérer un afficheur en i2c j'ai copié exactement le même montage que j'ai trouvé il marche.
    Mais le programme que j'ai n'est pas pour un pic18f4550 donc je l'ai transformé pas d'erreur a la compilation.
    J'arrive a faire clignoter une led donc mes fusibles doivent être bien configurer sur mon quartz externe 20Mhz pour le pic.
    Ma question pourquoi sa marche pas ? :
    Hum ... tu as regardé avec un oscillo si ton bus "bouge" ?
    ( Tu vois tes octets sur le bus ? Tu vois les ack sur le bus ? )
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #4
    grd666

    Re : I2C comprend rien

    non pas regardé je peux voir sa comment avec l'oscillo?

  5. A voir en vidéo sur Futura
  6. #5
    gienas
    Modérateur

    Re : I2C comprend rien

    Bonjour à tous

    J'ai supprimé (archivé), 3 réponses devenues inutiles, après ajout des balises code sur #1.

    Si c'est une erreur (car codes différents), merci de me prévenir pour rétablir la vérité.

  7. #6
    Seb.26

    Re : I2C comprend rien

    Citation Envoyé par gienas Voir le message
    Bonjour à tous
    J'ai supprimé (archivé), 3 réponses devenues inutiles, après ajout des balises code sur #1.
    Si c'est une erreur (car codes différents), merci de me prévenir pour rétablir la vérité.
    Merci !

    non pas regardé je peux voir sa comment avec l'oscillo?
    Hum ... débranche tout du bus (mais laisse les pullups), et regarde si les signaux bougent ou pas ... tu devrais voir ton horloge et tes données ...

    Si le bus "bouge" correctement, le problème est dans les données, s'il ne bouge pas, le problème est avant : initialisation du PIC, fonctions d"émissions/réceptions ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  8. #7
    freepicbasic

    Re : I2C comprend rien

    void envoi(unsigned char data)
    { data=data|0x040;//E est a 1
    d'après ton schéma le E est sur P0 soit le poids faible on devrait avoir 0x01

    0x40 c'est P3 qui n'est pas câblé.
    A+, pat

  9. #8
    freepicbasic

    Re : I2C comprend rien

    En mode 4 bits on envoie en 2 fois
    Et ne pas oublier le E qui n'est pas gérer ici

    Code:
    void I2c4bits(unsigned char data)
       {
     char datal;
       datal=(data & 0x0f) << 4;
    
    
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( data & 0xf0) );
       StopI2C();
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( (datal );
       StopI2C();
    }
    Dernière modification par freepicbasic ; 26/06/2008 à 07h00.
    A+, pat

  10. #9
    freepicbasic

    Re : I2C comprend rien

    Avec le E qui est sur P0

    Code:
    void I2c4bits(unsigned char data)
       {
     char datal;
       datal=(data & 0x0f) << 4;
    
    
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( (data & 0xf0)  | 0x1);
       StopI2C();
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( (datal  | 0x1);
       StopI2C();
    }
    A+, pat

  11. #10
    freepicbasic

    Re : I2C comprend rien

    lorsqu'on envoie une commande
    Normalement on doit
    1)mettre le data
    2) monter enable
    3) descendre enable

    Je fusionne l'étape 1 et 2 ça devrait fonctionner tout de même.

    Code:
    void I2c4bits(unsigned char data)
       {
     unsigned char datal;
       datal=(data & 0x0f) << 4;
    
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( (data & 0xf0)  | 0x1);
       StopI2C();
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( (data & 0xf0) );
       StopI2C();
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( (datal  | 0x1);
       StopI2C();
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( datal );
       StopI2C();
    }
    A+, pat

  12. #11
    freepicbasic

    Re : I2C comprend rien

    la sequence d'initialisation
    Au départ on est en mode 8bits
    Mais seul les 4 bits de poids fort sont transmis.

    0x00
    attente 15ms
    0X30
    attente 5ms
    0x30
    attente 100µs
    0x30
    attente 100µs
    0x20
    0x28

    On est en mode 4 bits et on utilise la foction 4bits qui envoie en 2 fois



    0x08 ; display Off
    0x09 ; display ON
    0x06 ; ENTRY_INC (increment la position après une entrée)
    A+, pat

  13. #12
    freepicbasic

    Re : I2C comprend rien

    La routine I2C 8 bits de départ serait comme ceci maintenant;
    Code:
    void I2c(unsigned char data)
       {
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( data   | 0x1); // set enable
       StopI2C();
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( data );  // reset enable
       StopI2C();
    }
    Si on ne fusionnait pas l'étape 1 et 2 on aurait;

    Code:
    void I2c(unsigned char data)
       {
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( data );  // set le data
       StopI2C();
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( data   | 0x1); // set enable
       StopI2C();
       StartI2C();
       WriteI2C(addresse_LCD);
       WriteI2C( data );  // reset enable
       StopI2C();
    }
    A+, pat

  14. #13
    grd666

    Re : I2C comprend rien

    Bonjour a tous,
    d'accord Seb.26 je vais essayer de mesurer sur l'I2c mes signaux avec l'oscillo même si je vois pas comment sur le bus je pourrais dissocier le signal d'horloge d'un autre signal vu que le bus sa reste une piste et que même si sa varie je vais surement pas savoir dire ce que c'est.

    freepicbasic tu dois comprendre cette ligne je suppose:
    WriteI2C( data | 0x1); // set enable
    tu peux me dire ce que sa veut dire (programme copié transformé je reprécise) parce que jamais vu en C ça : data | 0x1
    sinon ok je vois pourquoi 0x1
    moi je pense que cette ligne WriteI2C(addresse_LCD); qui renvoit a ça
    #define addresse_LCD 0x40 c'est faux le 0x40 j'en suis pas sur du tout j'ai juste regarder dans la doc de mon pcf8574
    http://ece-www.colorado.edu/~mcclure..._PCF8574_4.pdf page9 et j'ai pris l'adresse je suppose qui doit correspondre au lcd si tu veux bien m'assurer que c'est bien ça
    Merci je vous dis ce que j'ai vu

  15. #14
    grd666

    Re : I2C comprend rien

    freepicbasic j'ai beau essayer de voir tes fonctions par rapport au mienne je vois rien si tu me rajoute des fonctions que j'ai pas dans mon programme déja que c'est dur le C pour moi alors la je suis
    pour moi l'initialisation du lcd est bonne je vais mettre le code original qui d'après son auteur fonctionne
    Code:
    #include <16f876A.h>
    #fuses HS, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT, NOLVP
    #use delay (clock=20000000)
    #use I2C(master, sda=PIN_C4, scl=PIN_C3)
    #define addresse_LCD 0b01000000
    
    //////////////////////////////////////////////////////////////////////////////
    //Programme réaliser par Matthieu ( paterson )
    //Janvier 2008 
    //
    //Les fonctions :
    //
    //       startlcd() // initialise l'afficheur ( a placer au dépard)
    //       clear() // efface le contenu de l'afficheur
    //       ligne_suivante()//passage a la ligne suivante
    //       affich("Message")// affiche message.
    //       création de lcd_putc(message)
    //             \f clear_lcd
    //             \n ligne_up
    //
    //
    //
    //       Régle de cablage :
    //          D0> E
    //          D1> RS  NEW R/W
    //          D2> R/W NEW : RS
    //          D3> NC
    //          D4> D4
    //          D5> D5
    //          D6> D6
    //          D7> D7
    //
    //////////////////////////////////////////////////////////////////////////////
    
    void envoi(unsigned char data)
       {
    
       i2c_start();
       i2c_write(addresse_LCD);//addresse du composant
       i2c_write(data);
       i2c_stop();
       }
    
    void valid_e(unsigned char data)
       {
       data=data|0b00000001;//E est a 1
       envoi(data);
       delay_ms(1);
       data=data-1;//E=0
       envoi(data);
       delay_ms(1);
       }
    
    void startlcd()
       {
       //On travaille sur la commande donc RS=0 R/W=0 écriture
       valid_e(0x00);
       valid_e(0x10);
       valid_e(0x00);
       valid_e(0x00);
       valid_e(0x10);
       //Passage en mode 8 bit
       valid_e(0x30);
       valid_e(0x30);
       valid_e(0x30);
       // on passe en mode 4 bits
       valid_e(0x20);
       //mode 4 bits, 2 lignes, caractères 5x7 (28h)
       valid_e(0x20);
       valid_e(0x80);
       //affichage en fonction, pas de curseur (0Ch)
       valid_e(0x00);
       valid_e(0xC0);
       //le curseur se déplace vers la gauche (06h)
       valid_e(0x00);
       valid_e(0x60);
       //on efface l'afficheur
       valid_e(0x00);
       valid_e(0x10);
       }
    
    void clear_lcd()
        {
       valid_e(0x00);
       valid_e(0x10);
        }
    void ligne_up()
       {
       //40h
       valid_e(0xC0);
       valid_e(0x00);
       delay_ms(1);
       }
    
    void affich(char mess)
         {
          //Le message passe lettre par lettre , donc set fonction , passe en boucle
          char data;
          data=mess&0xF0;
          data=data+4; //RS a 1  
          valid_e(data);
          data=mess&0x0F;
          data=data<<4;
          data=data+4;//RS a 1 
          valid_e(data);
         }
    
    void lcd_putc(char c)
       {
       switch(c)
          {
          case'\f':
             clear_lcd();
             break;
          case'\n':
             ligne_up();
             break;
          default:
             affich(c);
             break;
          }
       }
    
    void main()
       {
       startlcd();
       while(1)
          {
          lcd_putc("\fFonctionne");
          delay_ms(1000);
          lcd_putc("\f");
          lcd_putc("Mon LCD\nI2C");
          delay_ms(1000);
          }
       }
    facile me direz vous de transformé en 18f bah nan moi je connais pas des tonnes de fonction en 18f et le pdf des librairies ne m'aide pas il donne aucun exemple concret donc svp dites moi ou sont les erreurs dans mon code par rapport a celui la (moi dès qu'il s'agit de data<<4 ou data=machinxbidule je comprend pas).
    Seb.26 j'ai mesurer a l'oscillo scl et sda comme je m'en doutais je mesure n'importe quoi j'ai du continu

    Merci

  16. #15
    Seb.26

    Re : I2C comprend rien

    d'accord Seb.26 je vais essayer de mesurer sur l'I2c mes signaux avec l'oscillo même si je vois pas comment sur le bus je pourrais dissocier le signal d'horloge d'un autre signal vu que le bus sa reste une piste et que même si sa varie je vais surement pas savoir dire ce que c'est.
    Bah c'est pourtant évident : si tu débranche tes périphériques de ton bus, et qu'il bouge, c'est que le PIC essaye de faire son job ... s'il le bus ne bouge pas, c'est que ton PIC est mal initialisé/utilisé ...

    Citation Envoyé par grd666 Voir le message
    Seb.26 j'ai mesurer a l'oscillo scl et sda comme je m'en doutais je mesure n'importe quoi j'ai du continu
    Merci
    Si tu savais à l'avance, c'était pas la peine de regarder ...

    Ton bus I2C n'est pas opérationnel du tout ... il te reste plus qu'a reprendre ton code + la datasheet ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  17. #16
    grd666

    Re : I2C comprend rien

    la datasheet du pcf8574 ne va pas m'aider a grand chose je pense c'est mplab qui gère tout sauf peut être des adresses que j'ai déja dit ne pas connaître car je sais pas quel adresse je dois mettre dans le programme celui du pc8574 ou de l'afficheur? et si c'est l'afficheur comment je connais son adresse

  18. #17
    Seb.26

    Re : I2C comprend rien

    Citation Envoyé par grd666 Voir le message
    la datasheet du pcf8574 ne va pas m'aider a grand chose je pense c'est mplab qui gère tout"
    Bon, si tout est OK, tout va bien alors.

    NB: une datasheet, ça aide toujours ...

    Citation Envoyé par grd666 Voir le message
    je sais pas quel adresse je dois mettre dans le programme celui du pc8574 ou de l'afficheur? et si c'est l'afficheur comment je connais son adresse
    Bah ça dépend à qui tu veux parler ...

    Mais si ton bus ne bouge pas, c'est qu'aucune donnée ne sort de ton PIC, donc ni ton afficheur, ni tes IO ne sont près de fonctionner ...

    D'après tes infos, le problème est dans ton montage, dans ton initialisation de l'I2C ou d'ans ton utilisation de l'I2C ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  19. #18
    grd666

    Re : I2C comprend rien

    pour moi effectivement le problème vient de mon programme mais vu que je connais pas les fonctions sa n'est pas prêt de marché

  20. #19
    Gérard

    Re : I2C comprend rien

    Citation Envoyé par grd666 Voir le message



    ........
    Seb.26 j'ai mesuré a l'oscillo scl et sda comme je m'en doutais je mesure n'importe quoi j'ai du continu

    Merci

    Bonjour,
    Cette réponse n'est pas très scientifique.
    Je suppose que les mesures sont faites ainsi :

    Masse oscillo sur masse montage
    Point chaud de l'oscillo sur SCL : tu dois voir des créneaux qui correspondent à l'horloge du bus I2C
    Point chaud de l'oscillo sur SDA : tu doid voir les trames de données (difficile à interpréter)

  21. #20
    grd666

    Re : I2C comprend rien

    Bonjour,
    oui j'ai fait les mesures ainsi j'ai beaux varrier la fréquence sa reste du continu donc mon i2c n'est pas en communication donc mon programme est mauvais

  22. #21
    freepicbasic

    Re : I2C comprend rien

    Un exemple ici , de I2c avec pic18f4550
    http://lcdforums.com/forums/viewtopi...552b1e1e#17470
    A+, pat

  23. #22
    freepicbasic

    Re : I2C comprend rien

    les lignes sont bien connecté sur rb0 et rb1 ?
    avec les resistances de rappel au +5V (r1 r2)
    A+, pat

  24. #23
    grd666

    Re : I2C comprend rien

    Salut,
    oui regarde par toi même je post l'image
    Images attachées Images attachées  

  25. #24
    grd666

    Re : I2C comprend rien

    J9 et J10 sont des cavaliers que j'ai mit bien entendu

  26. #25
    Seb.26

    Re : I2C comprend rien

    Où vont ensuite RB0 et RB1 ??? ...
    ( nul part sans doute, c'est juste au cas où ... )
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  27. #26
    grd666

    Re : I2C comprend rien

    vers un bornié pour le cas ou on brancherais quelque chose sur la carte en I2c pour cela j'ai placé des cavalié pour débranché les résistances au cas ou mais la a part dire sa va vers un bornié sa va nulle part ailleur oui
    Sinon je viens de mesurer sur l'oscillo je détecte bien SCL qui varie en signal carré mais pas SDA mesuré autour de 10ns normal mon quartz est un 20Mhz

  28. #27
    freepicbasic

    Re : I2C comprend rien

    les résistances de clock et data doivent être présentent tout le temps, je ne vois pas à quoi servent les cavaliers , vérifier si il sont bien en contact, car les 2 signaux sont des collecteurs ouverts et nécessitent une résistances pour fonctionner
    A+, pat

  29. #28
    grd666

    Re : I2C comprend rien

    les résistances sont bien en contact le problème vient du programme mais personne ne m'aide dessus.
    Hier j'en ai testé 3 4 dont un programme de Tyller modifier pour mon application rien ne marche j'ai toujours mes carrés sur mon afficheur et c'est tout.
    a+

  30. #29
    freepicbasic

    Re : I2C comprend rien

    Ton I2C fonctionne t il ?
    Si tu met une simple valeur en sortie sur ton PCF, est elle bonne ?
    Exemple 0x55 puis 0xAA (soit 1 bit sur 2) en alternant tout les 2 secondes par exemple , en mettant des LEDs on voit tout de suite si ça arrive ou pas .

    Tes procédures pour piloter le LCD sont bugguées, je t'ai déjà donne des explications.
    Sont elle corrigées ?
    A+, pat

  31. #30
    grd666

    Re : I2C comprend rien

    non mon i2c ne fonctionne pas l'I2c sa fonctionne en 20Mhz aussi ou pas?
    je remet mon nouveaux programme parce que j'ai changé beaucoup de chose
    Code:
    #include <delays.h>
    #define PCF5 0x40	           // adresse du PCF8574 qui commande le LCD
    #ifndef PCF8574_SDA
    #define PCF8574_SDA  PIN_B0
    #define PCF8574_SCL  PIN_B1
    #endif
    
    char lcd_data;
    char lcd_e;
    char lcd_rs;
    char lcd_rw;
    
    void write_io_8574(char addresse,char data)
    {
     	 StartI2C();
      	WriteI2C(0x40| addresse<<1);
       WriteI2C(data);
       StopI2C();
    
    }
    char read_io_8574(char address)
    {
      char data;
    
    	 StartI2C();
       WriteI2C(0x41 | address<<1);
       data=ReadI2C();
       StopI2C();
       return(data);
    }
                               
    
    void lcd_strobe()
    {
          lcd_e = 1;
         write_io_8574(PCF5,lcd_rw <<1 | lcd_rs <<2 | lcd_e | lcd_data );
          Delay10KTCYx(1);  //1/20*10^6*10000 = 5*10^-8*10000 = 500µs
          lcd_e = 0;
       write_io_8574(PCF5,lcd_rw <<1 | lcd_rs <<2 | lcd_e | lcd_data );
    }
    
    void lcd_send_nibble( char n ) {
          lcd_rs = 0;
    	  lcd_data = (n << 4) & 0xf0;
       write_io_8574(PCF5,lcd_rw <<1 | lcd_rs <<2 | lcd_e | lcd_data );
          Delay10KTCYx(1);
    	  lcd_strobe();
    }
    
    void lcd_write( unsigned char c ) {
          lcd_data = c & 0xF0;
         write_io_8574(PCF5,lcd_rw <<1 | lcd_rs <<2 | lcd_e | lcd_data );
          lcd_strobe();
          lcd_data = (c << 4) & 0xf0;
          write_io_8574(PCF5,lcd_rw <<1 | lcd_rs <<2 | lcd_e | lcd_data );
          lcd_strobe();
          Delay1KTCYx(2);//delay_us(70);
    }
    
    void lcd_clear()
    {
       lcd_rs = 0;
       write_io_8574(PCF5,lcd_rw <<1 | lcd_rs <<2 | lcd_e | lcd_data );
       lcd_write(0x1);
      Delay10KTCYx(4);//delay_ms(2);
    }
    
    void lcd_goto(char pos) 
    {
       lcd_rs = 0;
       lcd_write(0x80 | pos);
    }
    
    void lcd_puts( char *ps)
    {
        lcd_rs = 1;
        while(*ps) lcd_write(*ps++);
    }
    
    void lcd_putc( char c)
    {
        lcd_rs = 1;
        lcd_write(c);
    }
    
    void lcd_init() {
       lcd_rs = 0;
       lcd_rw = 0;
       lcd_data = 0x0;
       lcd_e = 0;
       write_io_8574(PCF5,lcd_rw <<1 | lcd_rs <<2 | lcd_e | lcd_data );
       Delay10KTCYx(50);//delay_ms(15);
    
       lcd_send_nibble(3);
       Delay10KTCYx(10);//delay_ms(5);
    
       lcd_send_nibble(3);
       Delay1KTCYx(2);//delay_us(100);
    
        lcd_send_nibble(3);
        Delay10KTCYx(10);//delay_us(5);
    
        lcd_send_nibble(2);
        Delay100TCYx(1);//delay_us(40);
    
        lcd_write(0x28);
        lcd_write(0x01);
        lcd_write(0x06);
        lcd_write(0x0E);
        Delay10KTCYx(500);//delay_ms(100);
    
    }
    
    ////le main///
    #include <p18f4550.h>
    #include <stdlib.h>
    #include <i2c.h>
    #include <delays.h>
    #include "2LCDbyPCF.C"
    void init(void); 
    void i2c_init(void); 
    //#include "RTC.c"
     
    
     void tempo();
    //------------------Fonction Principal----------------------------------
    void main ()
    {  
       init();
       tempo();
      LATDbits.LATD7 = 0; //led4 
      //LATAbits.LATA0 =     1;  
      SSPADD =9; 
      OpenI2C(MASTER,SLEW_OFF); 
      lcd_init();
     CloseI2C();
    }
    
    void init()
    {
    	TRISC = 1; //portc en entree
    	TRISD = 1; //portd en entree
    //	TRISD= 0xEF;//portd4 entrée
    //	TRISD= 0xDF;//portd5 entrée
    	TRISD= 0x7F;//portd7 entrée
     //	LATDbits.LATD4 = 1; //led2 allumé
     //	LATDbits.LATD5 = 1; //led3 allumé
     	LATDbits.LATD7 = 1; //led4 allumé
    
    }
    
    
    void tempo()//fonction qui marche 
    {
    	unsigned int j;
    	for(j=0; j<2000; j++);
    }
    Merci de l'aide que l'un de vous peut m'apporter parce que le temp presse et se programme me donne mal a la tête.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. [Thermique] Groupe de sécurité, je ne comprend plus rien...
    Par ultrasteak dans le forum Dépannage
    Réponses: 6
    Dernier message: 22/12/2007, 09h28
  2. J'y comprend rien :'(
    Par invite8c1a7207 dans le forum Physique
    Réponses: 17
    Dernier message: 25/11/2007, 19h16
  3. Alors là ! Je ne comprend rien !
    Par rek1n dans le forum Électronique
    Réponses: 5
    Dernier message: 20/02/2007, 23h15
  4. Mitose, je ne comprend rien
    Par invite77119213 dans le forum Biologie
    Réponses: 4
    Dernier message: 08/06/2006, 22h04
  5. Inequations , je ne comprend rien Help
    Par invite0c1ac221 dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 30/10/2005, 20h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.