Probleme sur le programme pour afficher l'heure et la date
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

Probleme sur le programme pour afficher l'heure et la date



  1. #1
    invite489d7312

    Probleme sur le programme pour afficher l'heure et la date


    ------

    Bonjour, mon travail consiste à afficher l'heure et la date sur l'afficheur LCD.

    Lien vers 3610/proteus.png supprimé

    Programme:

    Code:
    #include <p18f452.h>
    #include <delays.h>
    #include <stdio.h>
    #include <i2c.h>
    #include <xlcd.h>
    
    
    
    #pragma config WDT =OFF
    
    int octetrecu1;
    int octetrecu2;
    int octetrecu3;
    int octetrecu4;
    int octetrecu5;
    int octetrecu6;
    int octetrecu7;
    int octetrecu8;
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    /////////////////////////////////////////////////////////////
    // PROTOTYPE //
    /////////////////////////////////////////////////////////////
    
    void ack(void);
    void init_I2C(void);
    void read_trameI2C(int *octet1, int *octet2, int *octet3, int *octet4,int *octet5, int *octet6, int *octet7, int *octet8);
    void tempo(unsigned int count);
    unsigned int SWReadI2C( void );
    void SetPosition(unsigned char x, unsigned char y);
    void SetDDRamAddr(PARAM_SCLASS unsigned char);
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    /////////////////////////////////////////////////////////////
    // read_tram_i2c(); //
    /////////////////////////////////////////////////////////////
    
    void read_trameI2C(int *octet1, int *octet2, int *octet3, int *octet4,int *octet5, int *octet6, int *octet7, int *octet8)
    {
    *octet1 = ReadI2C();
    SSPCON2bits.ACKEN = 1;
    ack();
    *octet2 = ReadI2C();
    SSPCON2bits.ACKEN = 1;
    ack();
    *octet3 = ReadI2C();
    SSPCON2bits.ACKEN = 1;
    ack();
    *octet4 = ReadI2C();
    SSPCON2bits.ACKEN = 1;
    ack();
    *octet5 = ReadI2C();
    SSPCON2bits.ACKEN = 1;
    ack();
    *octet6 = ReadI2C();
    SSPCON2bits.ACKEN = 1;
    ack();
    *octet7 = ReadI2C();
    SSPCON2bits.ACKEN = 1;
    ack();
    *octet8 = ReadI2C();
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    ////////////////////////////////////////////////////////////////////////
    // TEST ACK //
    ////////////////////////////////////////////////////////////////////////
    
    void ack(void)
    {
    IdleI2C();
    while (SSPCON2bits.ACKSTAT);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    ////////////////////////////////////////////////////////////////////////
    // TEMPO //
    ////////////////////////////////////////////////////////////////////////
    
    void tempo(unsigned int compte)
    {
    while (compte--);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    /////////////////////////////////////////////////////////////
    // INITIALISATION I2C //
    /////////////////////////////////////////////////////////////
    
    void init_I2C(void)
    {
    DDRCbits.RC3=1;
    DDRCbits.RC4=1;
    SSPCON1=0x28;
    
    SSPSTATbits.SMP=1;
    
    SSPADD=9;
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    /////////////////////////////////////////////////////////////
    // Fonction Principale //
    /////////////////////////////////////////////////////////////
    
    void main(void)
    {
    
    int Valeur = 1;
    //InitLCD();
    stdout = _H_USER;
    OpenXLCD(FOUR_BIT & LINES_5X7);	//la librairie XLCD du C
    
    init_I2C();
    IdleI2C();
    
    StartI2C();
    while (SSPCON2bits.RSEN);
    
    WriteI2C(0xD0);
    ack();
    
    WriteI2C(0x00);
    ack();
    
    WriteI2C(0x00);
    ack();
    
    WriteI2C(0x01);
    ack();
    
    WriteI2C(0x00);
    ack();
    
    WriteI2C(0x02);
    ack();
    
    WriteI2C(0x51);
    ack();
    
    WriteI2C(0x03);
    ack();
    
    WriteI2C(0x03);
    ack();
    
    WriteI2C(0x04);
    ack();
    
    WriteI2C(0x11);
    ack();
    
    WriteI2C(0x05);
    ack();
    
    WriteI2C(0x03);
    ack();
    
    WriteI2C(0x06);
    ack();
    
    WriteI2C(0x09);
    ack();
    
    WriteI2C(0x07);
    ack();
    
    WriteI2C(0x03);
    ack();
    
    StopI2C();
    
    while (SSPCON2bits.PEN);
    
    tempo(60000);
    
    IdleI2C();
    
    StartI2C();
    
    while (SSPCON2bits.RSEN);
    
    WriteI2C(0xD1);
    ack();
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    ////////////////////////////////////////////////////////////////////////
    // lecture de la trame I2C //
    ////////////////////////////////////////////////////////////////////////
    
    read_trameI2C(&octetrecu1, &octetrecu2, &octetrecu3, &octetrecu4, &octetrecu5, &octetrecu6, &octetrecu7, &octetrecu8);
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    ////////////////////////////////////////////////////////////////////////
    // CLOTURATION I2C //
    ////////////////////////////////////////////////////////////////////////
    
    NotAckI2C(); // transmet l'acquittement du maître
    while (SSPCON2bits.ACKEN); // attend fin de l'acquittement
    
    StopI2C(); // initialise une stop-condition
    
    while (SSPCON2bits.PEN); // attend fin de stop-condition
    printf("=%X", octetrecu1);
    printf("=%X", octetrecu2);
    printf("=%X", octetrecu3);
    printf("=%X", octetrecu4);
    printf("=%X", octetrecu5);
    
    SetPosition(0,1);
    
    printf("=%X", octetrecu6);
    printf("=%X", octetrecu7);
    printf("=%X", octetrecu8);
    
    while(1); // boucle infinie
    } 
    
    void SetPosition(unsigned char x, unsigned char y)
    {
    if (y) SetDDRamAddr(0x40+x);
     else SetDDRamAddr(x);
    }
    
    void DelayFor18TCY(void)
    {
        Delay10TCYx(2);
    }
    void DelayPORXLCD(void)
    {
     	Delay1KTCYx(15);     //Delai de 15 ms
    }
    void DelayXLCD(void)
    {
     	Delay1KTCYx(20);     //Delai de 20 ms
    }



    Aidez moi à régler le problème svp.


    Bonjour nasserarien et tout le groupe

    Pour être conforme à l'épinglé

    http://forums.futura-sciences.com/el...ointes-pj.html

    Le lien vers l'image a été supprimé.

    Les PJ doivent être sur le serveur.

    Merci de la replacer.


    .

    -----
    Dernière modification par gienas ; 30/03/2010 à 09h18. Motif: Supprimé lien vers serveur tiers et ajouté balises code

  2. #2
    antoine6

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par nasserarien Voir le message
    Aidez moi à régler le problème svp.
    Quel problème?

    plusieurs remarques :

    -le while(1) à la fin du code sert à rien, il va s'executer une fois et rester bloqué après la premiere lecture.

    -la tonne de WriteI2C(0xXX) sert à quoi?

    -au lieu de créer 8 variables int octetrecu1 ...int octetrecu8;, crée un tableau int octetrecu[8], pareil pour octet 1 à 8 dans ta fonction read_tramei2c, tu crée un tableau et tu fait tout via une boucle for.

    -t'arrive à afficher un message ou pas à l'écran, comme "bonjour nasserarien"? c'est pas le but de ton projet, mais c'est difficile d'avancer en commençant par la fin

  3. #3
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par antoine6 Voir le message
    Quel problème?

    plusieurs remarques :

    -le while(1) à la fin du code sert à rien, il va s'executer une fois et rester bloqué après la premiere lecture.

    -la tonne de WriteI2C(0xXX) sert à quoi?

    -au lieu de créer 8 variables int octetrecu1 ...int octetrecu8;, crée un tableau int octetrecu[8], pareil pour octet 1 à 8 dans ta fonction read_tramei2c, tu crée un tableau et tu fait tout via une boucle for.

    -t'arrive à afficher un message ou pas à l'écran, comme "bonjour nasserarien"? c'est pas le but de ton projet, mais c'est difficile d'avancer en commençant par la fin
    Oui j'ai réussis à afficher bonjour la dernière fois.
    En fait la compilation marche, quand je tourne le programme sur Proteus, j'ai un curseur qui clignote en haut à gauche du lcd, puis le curseur clignote en bas à gauche du lcd.

  4. #4
    antoine6

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par nasserarien Voir le message
    j'ai un curseur qui clignote en haut à gauche du lcd, puis le curseur clignote en bas à gauche du lcd.
    C'est parceque tu fait un SetPosition(0,1);, le curseur se place à la deuxième ligne. T'as des valeurs qui s'affichent?

  5. A voir en vidéo sur Futura
  6. #5
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par antoine6 Voir le message
    C'est parceque tu fait un SetPosition(0,1);, le curseur se place à la deuxième ligne. T'as des valeurs qui s'affichent?
    Je n'ai aucune valeur qui s'affiche.

  7. #6
    antoine6

    Re : Probleme sur le programme pour afficher l'heure et la date

    si tu fait un printf("=%X", 12), ca t'affiche quoi? 12, C, autre chose?

  8. #7
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par antoine6 Voir le message
    si tu fait un printf("=%X", 12), ca t'affiche quoi? 12, C, autre chose?
    Combien de fois je dois le dire ? ça ne m'affiche rien sauf un curseur clignotant.

  9. #8
    antoine6

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par nasserarien Voir le message
    j'ai réussis à afficher bonjour la dernière fois.
    Actuellement, y'a quoi qui marche?

    Un printf("TEST") ca marche ou pas?

  10. #9
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par antoine6 Voir le message
    Actuellement, y'a quoi qui marche?

    Un printf("TEST") ca marche ou pas?
    L'afficheur LCD marche. J'ai simplement un curseur.

  11. #10
    antoine6

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par nasserarien Voir le message
    L'afficheur LCD marche. J'ai simplement un curseur.
    Si il marchait il t'afficherai tes valeurs

    Citation Envoyé par antoine6 Voir le message
    Un printf("TEST") ca marche ou pas?
    Essaie d'afficher un message au démarrage de ton PIC : "Projet Horloge" pendant 2 secondes, puis tu l'efface. Et montre ton code pour afficher le message (avec un print? un lcd_puts?)

  12. #11
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par antoine6 Voir le message
    Si il marchait il t'afficherai tes valeurs



    Essaie d'afficher un message au démarrage de ton PIC : "Projet Horloge" pendant 2 secondes, puis tu l'efface. Et montre ton code pour afficher le message (avec un print? un lcd_puts?)
    J'ai affiché bonjour et j'avais une preuve que j'ai posté dans mon ancien topic. Cependant le modérateur supprime mes images, alors je ne perds plus mon temps à les uploader.

  13. #12
    antoine6

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par nasserarien Voir le message
    J'ai affiché bonjour et j'avais une preuve que j'ai posté dans mon ancien topic. Cependant le modérateur supprime mes images, alors je ne perds plus mon temps à les uploader.
    Le modérateur fait son boulot, le tien c'est d'upload les images sur le forum et pas sur un autre ftp.

    Tu utilise quelle commande pour afficher ton bonjour? si tu réponds pas aux questions on va pas avancer

  14. #13
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par antoine6 Voir le message
    Le modérateur fait son boulot, le tien c'est d'upload les images sur le forum et pas sur un autre ftp.

    Tu utilise quelle commande pour afficher ton bonjour? si tu réponds pas aux questions on va pas avancer
    J'utilise printf

    Code:
    // CD 01/2005
    // test printf sur PICDEM2+ et MCC18 v2.40
    #include <p18f452.h>
    #include <stdio.h> 	// inclure stdio.h si la fonction printf est appelée
    #include <xlcd.h>  	// inclure xlcd.h pour la déclaration des pattes du pic comme 
    		   			// étant reliées aux broches RS,RW,E,Données du LCD
    #include <delays.h>	// bibiothéque contenant des fonctions de temporisations
    
    unsigned char c;
    int i;
    unsigned char tampon[10];
    rom const unsigned char chrom[]=" en ROM";
    unsigned char chram[]=" en RAM";
    unsigned char * pram;
    rom unsigned char *prom;
    float f;
    
    void SetPosition(unsigned char x, unsigned char y);	// positionne le curseur sur un n° de colonne puis de ligne
    void efface(void);									// efface lcd
    void touche(void);									// détecte l'appui et attends le relâchement du BP
    void DelayFor18TCY(void);							// temporisations ajustables au type de l'afficheur utilisé
    void DelayPORXLCD(void);							// pour connaître les valeurs des durées d attentes necessaires
    void DelayXLCD(void);								// LIRE la doc de l afficheur LCD!!!
    
    void main(void)
    {	
    	TRISCbits.TRISC1=1;								// PORTC bit1 en entrée pour S2
    	ADCON1=6;
    	stdout=_H_USER;	
    	OpenXLCD(FOUR_BIT & LINES_5X7);	//la librairie XLCD du C
    
    	f=5000.0/3.0;
    	i=150-200;
    	c='A';
    	pram=(unsigned char *)0x12AB ;
    	prom=(rom unsigned char *)0xAB12;
    	while(1)
    		{
    			SetPosition(5,0);
    			printf("COURS PRINTF");
    			SetPosition(0,1);
    			printf("appuyeBTS  BP2");
    			touche();
    
    			SetPosition(0,0);
    			printf("caracteres: %c ",c);
    			SetPosition(0,1);
    			printf("%d %X %#X ",c,c,c);
    			touche();
    
    			SetPosition(0,0);
    			printf("integers: %d",i);
    			SetPosition(0,1);
    			printf("%u %#x",i,i);
    			touche();
    
    			SetPosition(0,0);
    			printf("binaires: %b",0x1A);
    			SetPosition(0,1);
    			printf("%010b",0x1A);
    			touche();
    
    			SetPosition(0,0);
    			printf("Ptr RAM: %p",pram);
    			SetPosition(0,1);
    			printf("%#010P",pram);
    			touche();
    
    			SetPosition(0,0);
    			printf("Ptr ROM: %p",prom);
    			SetPosition(0,1);
    			printf("%#010P",prom);
    			touche();
    
    			SetPosition(0,0);
    			printf("RAM %s",chram);
    			SetPosition(0,1);
    			printf("ROM %S",chrom);
    			touche();
    
    			SetPosition(0,0);
    			ftoa(f,tampon,3,'s');
    			printf("Reel: %s",tampon);
    			SetPosition(0,1);
    			printf("Reel: %s",ftoa(f,tampon,5,'f'));
    			touche();
    
    			SetPosition(0,0);
    			printf("caract%cres perso",5);
    			SetPosition(0,1);
    			printf(" %c%c%c%c%c%c%c%c ",0,1,2,3,4,5,6,7);
    			touche();
    		}
    }
    /************************************************/
    /* SetPosition	(colonne, ligne)				*/
    /* rôle: positionne le curseur de l'affichage	*/
    /*		à l'une des 32 adresses d'affichages	*/
    /*		L'affichage débute à partir du curseur	*/
    /* entrées:										*/
    /*  x le n° de la colonne (une adresse)			*/
    /*	ligne 0: de 0x00 à 0x0F	(16 caractères max)	*/
    /*	y le n° de la ligne 						*/
    /*	ligne 1:de 0x40 à 0x4F(addition de 0x40 à x)*/
    /*	sortie: RIEN! sauf sur l'écran...			*/
    /************************************************/						
    void SetPosition(unsigned char x, unsigned char y)
    {
    if (y) SetDDRamAddr(0x40+x);
     else SetDDRamAddr(x);
    }
    void efface(void)
    {
    	SetPosition(0,1);
    	printf("                ");
    	SetPosition(0,0);
    	printf("                ");
    }
    void touche(void)
    {
     while(PORTC & 0x02);
     while(!(PORTC & 0x02));
     efface();
    } 
    void DelayFor18TCY(void)
    {
        Delay10TCYx(2);
    }
    void DelayPORXLCD(void)
    {
     	Delay1KTCYx(15);     //Delai de 15 ms
    }
    void DelayXLCD(void)
    {
     	Delay1KTCYx(20);     //Delai de 20 ms
    }
    Dernière modification par gienas ; 30/03/2010 à 11h25. Motif: Ajouté les balises code, obligatoires sur les listings

  15. #14
    antoine6

    Re : Probleme sur le programme pour afficher l'heure et la date

    Je suis sensé faire quoi de ton code? c'est celui la que tu as utilisé pour afficher bonjour?

  16. #15
    gienas
    Modérateur

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par nasserarien Voir le message
    ... le modérateur supprime mes images, alors je ne perds plus mon temps à les uploader.
    Ce n'est pas plaisir que le modérateur supprime les images. C'est dans le but de respecter les règles qui ont cours sur le forum, et que chacun se doit de respecter.

    Tu n'es nullement obligé d'uploader tes images, mais, si tu souhaites obtenir de l'aide, tu te dois de "coopérer" un minimum pour te faire comprendre.

    Le même modérateur qui a supprimé ton image du #1, a également ajouté les balises code sur ton listing. C'est demandé pour ce genre de données pour une facilité de lecture. Le "boulot" du modérateur comme le dit antoine6 c'est aussi de faire le ménage, mais il est attendu, en retour du demandeur, à qui il n'appartient pas de fixer les règles du fonctionnement, de respecter ces règles, et de ne pas persister dans l'erreur, en proposant de nouveaux listings sans les balises.

    Je vais donc, dans le dernier message, ajouter ces balises. Ce sera ici, mon dernier rappel à l'ordre. Merci d'en prendre note.


  17. #16
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par antoine6 Voir le message
    Je suis sensé faire quoi de ton code? c'est celui la que tu as utilisé pour afficher bonjour?
    Oui avec ça j'affiche "cours printf".

  18. #17
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par gienas Voir le message
    Ce n'est pas plaisir que le modérateur supprime les images. C'est dans le but de respecter les règles qui ont cours sur le forum, et que chacun se doit de respecter.

    Tu n'es nullement obligé d'uploader tes images, mais, si tu souhaites obtenir de l'aide, tu te dois de "coopérer" un minimum pour te faire comprendre.

    Le même modérateur qui a supprimé ton image du #1, a également ajouté les balises code sur ton listing. C'est demandé pour ce genre de données pour une facilité de lecture. Le "boulot" du modérateur comme le dit antoine6 c'est aussi de faire le ménage, mais il est attendu, en retour du demandeur, à qui il n'appartient pas de fixer les règles du fonctionnement, de respecter ces règles, et de ne pas persister dans l'erreur, en proposant de nouveaux listings sans les balises.

    Je vais donc, dans le dernier message, ajouter ces balises. Ce sera ici, mon dernier rappel à l'ordre. Merci d'en prendre note.

    Excusez moi mais c'est la 1ère fois que je vois ceci dans un forum et que je ne comprends pas comment, selon vos règles, uploader correctement les images.
    Et précisez moi où sont les balises ?

  19. #18
    gienas
    Modérateur

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par nasserarien Voir le message
    ... je ne comprends pas comment, selon vos règles, uploader correctement les images ...
    Tout ceci est décrit dans le lien que j'ai donné, dans ton #1, qu'il appartient de lire.

    Je le reproduis ici:

    http://forums.futura-sciences.com/el...-sabonner.html


    Citation Envoyé par nasserarien Voir le message
    ... Et précisez moi où sont les balises ?
    Dans les outils qui sont au dessus de la fenêtre de rédaction du message, figure un "#" dont la bulle annonce ajouter la balise code.

    Tu as deux moyens de faire:

    1- avant de copier ton code, tu places ton curseur d'édition au bon endroit. Tu cliques sur ce #, qui te pose [balise][/balise]. Là, balise=code. Il te suffit de coller ton code entre les deux crochets ][

    2- tu colles ton code là où tu voulais le mettre. Tu sélectionnes (en vidéo inverse) tout ton code. Tu cliques sur le #. C'est ce que j'ai fait les deux fois.

  20. #19
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par gienas Voir le message
    Tout ceci est décrit dans le lien que j'ai donné, dans ton #1, qu'il appartient de lire.

    Je le reproduis ici:

    http://forums.futura-sciences.com/el...-sabonner.html


    Dans les outils qui sont au dessus de la fenêtre de rédaction du message, figure un "#" dont la bulle annonce ajouter la balise code.

    Tu as deux moyens de faire:

    1- avant de copier ton code, tu places ton curseur d'édition au bon endroit. Tu cliques sur ce #, qui te pose [balise][/balise]. Là, balise=code. Il te suffit de coller ton code entre les deux crochets ][

    2- tu colles ton code là où tu voulais le mettre. Tu sélectionnes (en vidéo inverse) tout ton code. Tu cliques sur le #. C'est ce que j'ai fait les deux fois.
    Ok là je vais en cours, je réglerais ça ce soir.

  21. #20
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Bon j'abandonne l'uploadage des images.

    Je vais faire comme ci je n'avais pas uploader.

  22. #21
    invite489d7312

    Re : Probleme sur le programme pour afficher l'heure et la date

    Citation Envoyé par nasserarien Voir le message
    Bon j'abandonne l'uploadage des images.

    Je vais faire comme ci je n'avais pas uploader.
    Salut les mecs, je n'arrive pas effectivement à afficher seulement un mot avec le programme que je vous ai donné, sans tenir compte de la date et l'heure.

Discussions similaires

  1. conseil pour afficher temperature sur pc
    Par invitef4bf19a5 dans le forum Électronique
    Réponses: 6
    Dernier message: 11/04/2010, 10h02
  2. Réponses: 6
    Dernier message: 07/04/2009, 16h24
  3. PIC, afficher l'heure sur un LCD ?
    Par invite116c4f9b dans le forum Électronique
    Réponses: 2
    Dernier message: 23/10/2007, 17h34
  4. Lire la date doit être aussi simple que lire l'heure ?
    Par invite249f153b dans le forum Discussions scientifiques
    Réponses: 3
    Dernier message: 24/06/2007, 13h52
  5. probleme pour un programme sur un 16f627A
    Par yuopaznn dans le forum Électronique
    Réponses: 2
    Dernier message: 31/03/2007, 22h19
Découvrez nos comparatifs produits sur l'informatique et les technologies.