Débuter avec un LCD programmer en, et un pic 18F4520 - Page 2
Répondre à la discussion
Page 2 sur 3 PremièrePremière 2 DernièreDernière
Affichage des résultats 31 à 60 sur 63

Débuter avec un LCD programmer en, et un pic 18F4520



  1. #31
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520


    ------

    Et bien, j'ai compilé le tiens, et les warnings sont présent sur proteus.

    Autre chose. Ta fonction busy elle est pas déjà présente dans la bibliothèque ?
    J'ai essayé seulement en utilisant la fonction busy de la bibliothèque xlcd.h, et j'obtiens les même erreurs sur proteus.

    Le quartz, je ne comprend pas pourquoi rajouter un quartz externe, alors que l'on utilise le quartz interne du µc. C'est justement pour cela que je l'utilise. Ou alors, je n'ai vraiment rien compris.

    Pour les warning, voici ce que j'obtiens:
    warnings.jpg

    -----
    Images attachées Images attachées  

  2. #32
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Tu m'étonnes que tu n'obtiennes rien...

    Ton compilo ne trouve pas les fichiers source nécessaires appelés par XLCD.h.
    Dans le chemin qu'il t'indique place les fichiers manquants.
    Pour le quartz regarde dans la doc du PIC.
    @+

  3. #33
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Mais ces fichiers, ils y sont justement.

  4. #34
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    C'était ça que tu voulais ?
    Mais pour le µc je met toujours 8MHz ?
    Nom : quartz.jpg
Affichages : 74
Taille : 100,9 Ko

  5. #35
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Cette fois ci, j'ai fait ma simulation directement avec le debugger PROTEUS VSM, et la pas de soucis majeur. Par contre, je n'ai toujours rien à l'écran.
    Pendant la simulation, on voit bien les bits de commandes passer du 5 volt au 0 et vice versa, mais sur l'afficheur, rien. Comment être certain de ce qui s'affiche. J'aimerai bien le tester sur une platine, mais je n'ai aucun matériels sous la main. Je mettais dit que je ferrai le minimum en simulation, puis que j'acheterais les composants nécessaire par la suite en testant le tout sur une platine, mais là, que faire d'autre. Surtout qu'il y a un exemple interne à proteus qui fonctionne parfaitement. C'est une petite calculette, mais elle n'utilise pas la bibliothèque MCC18 de MPLAB. Sa propre bibliothèque est beaucoup trop simpliste. C'est du genre afficher un chiffre donc....

  6. #36
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    J'ai testé avec un breakpoint sur la ligne du putrsXLCD, en effectuant du pas à pas par la suite, et la, à part la ligne RB5, rien ne change.
    D’ailleurs, auparavant, à part les ligne de commande, les 4 autres bits du PORTB sont en jaunes et lorsque je clique sur le lcd, sur ces même ligne, on y lit "contention".
    Est-ce normale ?

  7. #37
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    A priori l'oscillateur peut-être déclaré en interne, apparemment c'est bien 8MHz qui est donné.
    Donc ta première déclaration semble bonne.

    Contention c'est probablement un conflit, ne connaissant pas proteus je ne peux pas être affirmatif à 100%.
    Pour moi il y a un soucis soft, visiblement toutes ces erreurs indiquant qu'il ne parvient pas à trouver les fichiers indiqués font que ça ne fonctionne pas, il compile mais on ne sait pas encore quoi vraiment.
    Visiblement les ports DATA ne correspondent pas entre le schéma et le soft sans quoi tu le verrais "bouger" ce portB.
    Si XLCD.h a été modifié mais pas recompilé avec les fichiers .c associés ou pas replacé au bon endroit après la compilation, c'est comme si on pissait dans un violon, car pour lui il ne t'indiquera aucun défaut de compilation (probablement ce qui se passe dans ton dernier post) vu qu'il utilisera un XLCD.h et les fichiers associés *.c pas bon mais bien présent vu que c'est les vieux.
    Donc il compile mais avec des déclarations pas bonnes, du moins c'est ce que je pense à priori.
    Donc vérifie bien qu'en modifiant XLCD.h tu vois bien après recompile et rebuild que la nouvelle date de modification apparait dans le bon répertoire sur TOUS les fichiers associés à XLCD.h.

    Si tu fais un pas à pas, tu as peut-être le moyen de surveiller ce qui se passe au niveau du portB si tu as une commande "watch" ou autre utilitaire dans proteus qui permet de visualiser l'état d'une variable ou d'un registre.

    @+
    Dernière modification par HULK28 ; 02/09/2011 à 15h55.

  8. #38
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Citation Envoyé par Mickl1722 Voir le message
    J'ai testé avec un breakpoint sur la ligne du putrsXLCD, en effectuant du pas à pas par la suite, et la, à part la ligne RB5, rien ne change.
    D’ailleurs, auparavant, à part les ligne de commande, les 4 autres bits du PORTB sont en jaunes et lorsque je clique sur le lcd, sur ces même ligne, on y lit "contention".
    Est-ce normale ?
    Par exemple au début tu avais une déclaration de TRISB incorrecte, si elle est toujours incorrecte pour les problèmes que je t'ai exposé juste au dessus c'est normal qu'il te signale un conflit sur le portB.
    Un port dirigé en entrée ne pilotera jamais une entrée DATA de ton afficheur.
    @+

  9. #39
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Je viens de vérifier les .c associés au xlcd.h, et effectivement, leur date de modification n'est en aucun cas modifiée.
    La date du .h n'a pas été également modifier. Le plus étrange, c'est que lorsque je l'ouvre avec Code Blocks, il est modifieé, mais avec Bloc-Notes, il correspond au fichier original.J'ai essayé de le modifier avec bloc notes, mais une fois que je l'enregistre, on m'affiche accès refusé.
    Je fais comment pour tout recompiler ?
    Tu aas raison, c'est un vrai problème.

  10. #40
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Bon, ne cherchez plus. Je me suis conformé aux brochages de la bibliothèque xcld.h.
    Suite à des désagréments, j'ai du réinstaller MPLAB, ainsi que MCC18.
    Voici les derniers changements effectué:
    xcld.h (fichier original)
    Code:
     #define DATA_PORT      		PORTB
     #define TRIS_DATA_PORT 		TRISB
    
    /* CTRL_PORT defines the port where the control lines are connected.
     * These are just samples, change to match your application.
     */
     #define RW_PIN   LATBbits.LATB6   		/* PORT for RW */
     #define TRIS_RW  TRISBbits.TRISB6    	/* TRIS for RW */
    
     #define RS_PIN   LATBbits.LATB5   		/* PORT for RS */
     #define TRIS_RS  TRISBbits.TRISB5    	/* TRIS for RS */
    
     #define E_PIN    LATBbits.LATB4  		/* PORT for D  */
     #define TRIS_E   TRISBbits.TRISB4    	/* TRIS for E  */
    TEST.c
    Code:
    #include <p18f4520.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<delays.h>
    #include<string.h>
    #include <xlcd.h>
    
    #pragma config OSC = INTIO67	// Internal Oscillator @ 8Mhz with OSC2 at RA6 & OSC1 at RA7
    #pragma config FCMEN = OFF		// Fail Safe Clock Monitor : Disabled.
    #pragma config IESO = OFF		// Internal External Osc. Switch Over : Disabled.
    #pragma config PWRT = OFF		// Power Up Timer : Disabled.
    #pragma config BOREN = OFF 		// Brown Out Reset : Disabled.
    #pragma config WDT = OFF		// Watch Dog Timer : Disabled.
    //#pragma config MCLRE = OFF		// MCLRE : Disabled.
    #pragma config PBADEN = OFF		// Port B A/D Enable : Disabled. => sortie numérique sur RESET.
    #pragma config STVREN = OFF		// Stack oVerflow Reset : Disabled.
    #pragma config LVP = OFF		// Low voltage ICSP : Disabled.
    
    #define D_LCD PORTB
    #define D4 PORTBbits.RB0
    #define D5 PORTBbits.RB1
    #define D6 PORTBbits.RB2
    #define D7 PORTBbits.RB3
    
    void DelayFor18TCY(void);
    void DelayPORXLCD(void);
    void DelayXLCD(void);
    
    void main(void)
    {
    	TRISB = 0b00000001;// Toutes les broches du port B sont en sortie.
    	D_LCD = 0b00000000; // Initialisation des variables, mise à zéro des 4 broches de poid faible du PORTB.
    //	ADCON1=7;
    //	Delay10KTCYx(10);
    	OpenXLCD(FOUR_BIT & LINES_5X7 );	//Initialisation du LCD en 4 bits, 2x16
    //	DelayXLCD();						//Temporisation pour LCD
    //	Delay10KTCYx(10);
    	WriteCmdXLCD(0x80);
    	while(BusyXLCD());
    	WriteCmdXLCD(DOFF & CURSOR_OFF & BLINK_OFF);
    	while(BusyXLCD());
    	WriteCmdXLCD( 0x01);
    	while(BusyXLCD());
    	WriteCmdXLCD(DON);
    	while(BusyXLCD());
    
    //	SetDDRamAddr(0x00);	// positionne le curseur en x,y (1ère ligne-1er caractère
    	putrsXLCD("BONJOUR");   
    //	DelayXLCD();			//Temporisation de 20 ms
    //	SetDDRamAddr(0x40);	  // positionne le curseur en x,y (Début 2ème ligne)
    //	putrsXLCD("TARELEC");
    	while(1);
    }
    
    void DelayFor18TCY(void)
    {
        Delay10TCYx(2);
    }
    void DelayPORXLCD(void)
    {
     	Delay1KTCYx(15);     //Delai de 15 ms
    }
    void DelayXLCD(void)
    {
     	Delay1KTCYx(20);     //Delai de 20 ms
    }

    Maintenant, je pense que l'initialisation est bonne, puisque j'ai le curseur qui clignote.
    Par contre, BONJOUR ne s'affiche pas.

  11. #41
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Le curseur ne devrait pas clignoter, il me faut impérativement ton schéma exact pour pouvoir te répondre.
    A quoi as-tu raccordé R/W ?
    Dans le prog tu utilises BusyXLCD() mais si R/W n'est pas piloté ça ne sert à rien et ton programme s'arrête en attendant le retour du flag qui n'arrivera jamais...
    Donc fais un zip schéma+prog utilisé.
    @+

  12. #42
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    boulette ici
    Code:
    TRISB = 0b00000001;// Toutes les broches du port B sont en sortie... ben nan.

  13. #43
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Je l'avais remarqué aussi, mais après avoir posté.
    Voici le zip:
    Fichiers attachés Fichiers attachés

  14. #44
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    au cas ou tu personne n'aurais PROTEUS...
    Nom : sch&#233;ma_TEST.jpg
Affichages : 67
Taille : 162,7 Ko

  15. #45
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Essaye avec ces changements:

    Code:
    void main(void)
    {
    	TRISB = 0b10000000;// Toutes les broches du port B sont en sortie sauf RB7 en entrée.
    	D_LCD = 0b00000000; // Initialisation des variables, mise à zéro des 4 broches de poid faible du PORTB.
    //	ADCON1=7;
    //	Delay10KTCYx(10);
            
    	OpenXLCD(FOUR_BIT & LINES_5X7 );	//Initialisation du LCD en 4 bits, 2x16
    //	DelayXLCD();						//Temporisation pour LCD
    //	Delay10KTCYx(10);
            while(BusyXLCD());
    	WriteCmdXLCD(0x80);
    	while(BusyXLCD());
    	WriteCmdXLCD(DOFF & CURSOR_OFF & BLINK_OFF);
    	while(BusyXLCD());
    	WriteCmdXLCD( 0x01);
    	while(BusyXLCD());
    	WriteCmdXLCD(DON);
    	while(BusyXLCD());
    	
    	SetCGRamAddr( 0x00 );
    	SetDDRamAddr( 0x00 );
            putrsXLCD( "Hello Word !" );
    }

  16. #46
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Un truc pratique consisterai à mettre une led sur RB7 reliée à la masse avec une 470 Ohms, comme ça tu peux voir si après ton premier while(BusyXLCD()); ça passe ou pas.

    Tu ajouteras en début de programme:
    Code:
    #define LED PORTBbits.RB7
    Et il suffit d'écrire après BusyXLCD(); :
    Code:
    LED = 1;
    Si ça passe c'est que l'afficheur renvoi bien le flag vers le µC, sinon...
    Tant que ça n'est pas vérifié on n'avancera pas efficacement.
    Si tu fais ça n'oublie pas de mettre TRISB=0 (tout le portB en sortie).
    @+
    Dernière modification par HULK28 ; 03/09/2011 à 15h57.

  17. #47
    invite3570b5f7

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    HULK28 : je vois que j'utilise la même méthode que toi, voir si ca passe ou pas ( avec le LED )

    J'avais ce genre de soucis avec un LCD et le capteur. Tant que le capteur n'était pas reconnu, le programme bloquait.

  18. #48
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    J'ai rajouté ton code, mais toujours rien. Par contre, ce que je ne comprend pas, c'est qu'avec la fonction void WriteDataXLCD( char data );, j'arrive à afficher une lettre.

  19. #49
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Est-ce une lettre aléatoire ou une des lettres de "Hello" ?
    Dis en plus.

  20. #50
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Essaye ça:
    Code:
    unsigned char chaine[]="Hello World!\n"; 
    ..........
    SetDDRamAddr(0); 
    putsXLCD(chaine);
    Et tu enlèves
    Code:
    SetCGRamAddr( 0x00 );
    SetDDRamAddr( 0x00 );
    putrsXLCD( "Hello Word !" );
    Ta led s'allume ou pas ?

    @+
    Dernière modification par HULK28 ; 03/09/2011 à 17h16.

  21. #51
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Citation Envoyé par joey57 Voir le message
    HULK28 : je vois que j'utilise la même méthode que toi, voir si ca passe ou pas ( avec le LED )

    J'avais ce genre de soucis avec un LCD et le capteur. Tant que le capteur n'était pas reconnu, le programme bloquait.
    Oui c'est très pratique n'est-ce pas ?
    Avec quelques leds on avance très vite sur l'ensemble d'un prog.
    @+

  22. #52
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Oui oui, elle s'était affichée précédemment.
    Ton code a fonctionné.

  23. #53
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Tant mieux, il te reste à paufiner un peu tout ça et comprendre pourquoi tu ne peux modifier le XLCD.h et autres fichiers liés.
    A mon avis il faut bien te documenter sur C18, je pense que sur la toile tu trouveras de bons tuyaux, et ici même je sais qu'il y a de bons spécialistes de ce compilateur, pour ma part je ne l'utilise pas mais il semble bon.

    @+
    Dernière modification par HULK28 ; 03/09/2011 à 19h53.

  24. #54
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    D'accord, mais si je veux aller à la 2ème ligne, je fais comment ?

  25. #55
    invite03481543

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    La deuxième ligne débute à l'adresse 40H.
    Donc:
    Code:
    unsigned char chaine2[]="How are you?\n";
    ......
    SetDDRamAddr(0x40); 
    putsXLCD(chaine2);
    @+

  26. #56
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Ah!
    J'avais trouvé après quelque tests

  27. #57
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    Bonjour.
    Je cherche à convertir des nombres en ASCII.
    Par exemple, si j'ai 12, je voudrait voir 12 sur mon écran.
    il y aura deux boutons pour incrémenter ou décrémenter ce nombre.
    Du style:

    Code:
    int i=12;
    
    while(1)
    {
    //Conversion
    //Envoie au LCD
    if(BOUTON1=1) i++;
    if(BOUTON2=1) i--;
    }

  28. #58
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    J'ai trouvé, avec la fonction sprintf ca marche comme sur des roulettes.

  29. #59
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    J'ai rajouté cela dans mon programme.
    Code:
    ...
    #define BOUTONS PORTD
    #define BOUTON PORTDbits.RD0
    #define INCREMENTE PORTDbits.RD1
    #define DECREMENTE PORTDbits.RD2
    ...
    void main(void)
    {
    	unsigned char mot[]="NOMBRE";
    	unsigned char mess[17];
    	int num=7;
            ...
            TRISD=0x07;	// 3 bits de poids faible configureés en entrée
    	BOUTONS=0x00;	//Initialisation du PORTD
    	...
            while(BOUTON=1)
    	{
    		sprintf(mess,"%s:%d\n",mot,num);
    		SetDDRamAddr(0); 
    		putsXLCD(mess);
    		if(INCREMENTE=1)
    		{
    			num++;
    		}
    		if(DECREMENTE=1)
    		{
    			num--;
    		}
    	}
    	while(1);
    }
    Là, tout s'affiche, le chiffre 7 également. Par contre lorsque je veux incrémenter ou décrémenter ??????????
    J'obtiens toujours mon 7!!!!!!!!!!!!!!

  30. #60
    Mickl1722

    Re : Débuter avec un LCD programmer en, et un pic 18F4520

    OUPS. J'ai oublié les "==" pour les conditions.
    Pour la saisie d'un bouton, il faut une tempo de combien de temps ? J'ai mis 50ms, mais je me demande si en réel ce n'est pas un peut juste.

Page 2 sur 3 PremièrePremière 2 DernièreDernière

Discussions similaires

  1. programmer les pic avec CCs
    Par karim3181 dans le forum Électronique
    Réponses: 1
    Dernier message: 18/03/2007, 15h59
  2. Réponses: 0
    Dernier message: 18/03/2007, 15h43
  3. probleme avec convertisseur,pic et LCD
    Par invite817b2e6f dans le forum Électronique
    Réponses: 4
    Dernier message: 30/01/2007, 14h16
  4. programmer des PIC avec un psion
    Par invite39462866 dans le forum Électronique
    Réponses: 15
    Dernier message: 18/10/2006, 06h37
  5. Débuter à programmer en java
    Par invite0b127ea6 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 20/09/2006, 16h35
Découvrez nos comparatifs produits sur l'informatique et les technologies.