probleme lcd alpha num
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 39

probleme lcd alpha num



  1. #1
    Rancis

    probleme lcd alpha num


    ------

    Bonjour tout le monde,

    J'ai un soucis avec un afficheur et je sèche complètement... le truc c'est que je suis relativement pressé et je dois avancer.

    Je vous explique le contexte, je dois piloté en autre deux afficheurs LCD alpha numérique 16x2 caractères qui sont des Everbouquet MC1602F-SYL avec un pic 18F67J50.

    Je pilote ces deux afficheurs en mode 4 bits, l'un est câblé sur le port D du micro et il marche parfaitement, l'autre est câblé sur le port A du même micro mais pour lui rien ne marche, il ne comprend pas les commande et affiche des carrés noir sur la première ligne du LCD quand j'envoie des caractères.

    Je réalise pourtant les même manipulations qu'avec l'autre afficheur mais rien ne va. J'ai échanger les afficheurs pour voir si il n'était pas HS et ce n'était pas le cas, j'ai vérifié et re-vérifié mon câblage et il est bon, alors maintenant je sèche vraiment...

    Si quelqu'un peut m'aider je suis vraiment dans le besoin.

    Merci d'avance, bonne journée.

    -----

  2. #2
    simon.

    Re : probleme lcd alpha num

    Je verrais bien un problème sur le pilotage des sorties de ton port A.
    Genre une patte qui est en mode analogique. Voir le registre ANSEL, c'est un classique.

  3. #3
    sdec25

    Re : probleme lcd alpha num

    Bonjour,
    On pourrait connaître les broches utilisées et les bits de config du PIC ?

  4. #4
    Rancis

    Re : probleme lcd alpha num

    Salut simon,

    J'ai regarder les registres qui gèrent les entrées analogiques, je pensais aussi que c'était un truc dans ce genre mais je n'ai rien trouvé.

    J'ai regarder le registre équivalent de ANSEL qui n'existe pas pour mon micro mais les pin sont bien paramétré comme étant des I/O.

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

    Re : probleme lcd alpha num

    Bonjour sdec25,

    Les pin utilisés pour la gestion de l'afficheur sont :

    micro // afficheur

    RA0 >> DB4
    RA1 >> DB5
    RA2 >> DB6
    RA3 >> DB7
    RA4 >> RS
    RA5 >> E

    voilà le code d'un programme pour tester cet afficheur :

    Code:
    #include <p18f67j50.h>
    #include <delays.h>
    
    unsigned char i,test[14]={'R','a','n','c','i','s',' ','i','s',' ','d','e','a','d'};
    
    void Init(void);
    void Init_lcd(void);
    void Ecrire_lcd(unsigned char donnee);
    void Commande_lcd(unsigned char commande,unsigned char envoi_double);
    
    void main ()
    {
    	Init();
    
    	Init_lcd();
    	
    	Ecrire_lcd(' ');
    	for(i=0;i<14;i++)
    	{
    		Ecrire_lcd(test[i]);
    		Delay10KTCYx(100);
    	}
            while(1);
    }
    
    void Init()
    {
    	TRISA=0xC0;
    
    	PORTA=0;
    
    	ADCON0bits.ADON=0;
    
    	ANCON0bits.PCFG0=1;
    	ANCON0bits.PCFG1=1;
    	ANCON0bits.PCFG2=1;
    	ANCON0bits.PCFG3=1;
    	ANCON0bits.PCFG4=1;
    
    }
    
    
    void Init_lcd()
    {
    	Delay10KTCYx(80);		// Attente 20 ms
    	Commande_lcd(0x3F,0);	// Envoi sur DB7..DB4 0011 : Function set
    	Delay1KTCYx(50);		// Attente 6 ms
    	Commande_lcd(0x3F,0);	// Envoi sur DB7..DB4 0011 : Function set
    	Delay1KTCYx(5);			// Attente 1 ms
    	Commande_lcd(0x3F,0);	// Envoi sur DB7..DB4 0011 : Function set
    	Commande_lcd(0x3F,0);	// Envoi sur DB7..DB4 0011 : Function set
    	Commande_lcd(0x20,0);	// Envoi sur DB7..DB4 0010 : mode 4 bits
    	Commande_lcd(0x28,1);	// Envoi config 2 lines 5*8 dots
    	Commande_lcd(0x08,1);	// Envoi Display off
    	Commande_lcd(0x01,1);	// Envoi Display clear
    	Commande_lcd(0x06,1);	// Envoi Entry mode set
    
    	Commande_lcd(0x28,1);	// Envoi Function set
    	Commande_lcd(0x0C,1);	// Envoi Display on;
    	Commande_lcd(0x06,1);	// Envoi Entry mode set
    }
    
    void Commande_lcd(unsigned char commande,unsigned char envoi_double)
    {
    	unsigned char decomp;
    
    	decomp/=0x10;
    
    	PORTAbits.RA4=0;		// bits RS=0 pour signaler une commande
    	PORTAbits.RA5=1;		// bits En=1 
    	decomp|=0x20;			
    	PORTA=decomp;			// Ecriture sur le portD de la partie haute commande + En=1
    	Delay10TCYx(20);			// Attente 2 µs
    	PORTAbits.RA5=0;		// bits En=0
    	Delay10TCYx(20);			// Attente 2 µs
    	if(envoi_double)
    	{
    		decomp=commande&0x0F;
    	
    		PORTAbits.RA4=0;		// bits RS=0 pour signaler une commande
    		PORTAbits.RA5=1;		// bits En=1 
    		decomp|=0x20;			
    		PORTA=decomp;			// Ecriture sur le portD de la partie basse de la commande + En=1
    		Delay10TCYx(20);			// Attente 2 µs
    		PORTAbits.RA5=0;			// bits En=0
    		Delay1KTCYx(50);			// Attente 1 ms	
    	}
    }
    
    void Ecrire_lcd(unsigned char donnee)
    {
    	unsigned char decomp;
    
    	decomp/=0x10;
    	
    	PORTAbits.RA4=1;
    	PORTAbits.RA5=1;
    	decomp|=0x30;
    	PORTA=decomp;
    	Delay10TCYx(20);
    	PORTAbits.RA5=0;
    	Delay10TCYx(20);
    	
    	decomp=donnee&0x0F;
    	
    	PORTAbits.RA4=1;
    	PORTAbits.RA5=1;
    	decomp|=0x30;
    	PORTA=decomp;
    	Delay10TCYx(20);
    	PORTAbits.RA5=0;
    	Delay1KTCYx(50);
    }

  7. #6
    sdec25

    Re : probleme lcd alpha num

    Essaie de mettre toutes les sorties à 1 et de mesurer les tensions au voltmètre. Si une sortie ne peut pas être à 1 on le verra tout de suite.
    Ça peut aussi être un court-circuit entre 2 broches, donc il faudra les mettre à 1 une par une et mesurer la tension.
    Sinon il y a une bizarrerie dans ton programme : tu utilise la variable decomp alors qu'elle n'est pas initialisée.

  8. #7
    Rancis

    Re : probleme lcd alpha num

    Citation Envoyé par sdec25 Voir le message
    Essaie de mettre toutes les sorties à 1 et de mesurer les tensions au voltmètre. Si une sortie ne peut pas être à 1 on le verra tout de suite.
    Ça peut aussi être un court-circuit entre 2 broches, donc il faudra les mettre à 1 une par une et mesurer la tension.
    Je vais essayer ça, j'avais déjà vérifié la continuité des pistes et c'était bon mais je vais faire ton test.

    Citation Envoyé par sdec25 Voir le message
    Sinon il y a une bizarrerie dans ton programme : tu utilise la variable decomp alors qu'elle n'est pas initialisée.
    Il n'y a pas de bizarrerie, la variable decomp est une variable locale déclarée dans la fonction Commande_lcd() et Ecrire_lcd().

  9. #8
    Rancis

    Re : probleme lcd alpha num

    J'ai fais le test en mettant les sorties une par une à 5V et toutes à 5V, tout est OK le problème ne viens pas de là, je vais re-vérifier le programme je ne vois plus que ça maintenant

  10. #9
    sdec25

    Re : probleme lcd alpha num

    J'ai fais le test en mettant les sorties une par une à 5V et toutes à 5V
    Et les autres étaient bien à 0V ?

    Citation Envoyé par Rancis Voir le message
    je vais re-vérifier le programme je ne vois plus que ça maintenant
    Si ça marche sur le port D ça ne doit pas venir de là.
    Néanmoins dans ton programme je ne comprends pas cette partie :
    Code:
    unsigned char decomp;
    
    	decomp/=0x10;
    
    	PORTAbits.RA4=0;		// bits RS=0 pour signaler une commande
    	PORTAbits.RA5=1;		// bits En=1 
    	decomp|=0x20;			
    	PORTA=decomp;
    Pourquoi tu divises decomp par 0x10 alors qu'il n'est pas initialisé ?

  11. #10
    freepicbasic

    Re : probleme lcd alpha num

    je ne sais pas si tu as déjà fais ta carte,
    mais personnellement j'aurais juste mis un enable différent pour chaque lcd le reste tout en commun, même le contraste si ce sont les mêmes LCD.

    Y a pas un open drain quelque part sur A ?
    A+, pat

  12. #11
    invite03481543

    Re : probleme lcd alpha num

    Bonsoir,

    j'aurai également initialisé decomp avant d'écrire decomp/=0x10; comme dit sdec25.

  13. #12
    Taiguen

    Re : probleme lcd alpha num

    salut,

    j'ai eu un problème similaire (meme si le contexte était tout autre)
    mon montage marche parfaitement sur RA0, RA1, RA2, ... mais pas sur RA4 ou RA5 ! j'avais beau changer PORTA TRISA ANSEL...

    après m'être pris la tête, j'ai compris que j'avais mis mon PIC16F690 dans un mode particulier qui ne permettait plus d'utiliser RA4 et RA5 (__OPTION XT) dû à un copier coller peu attentif d'une source tierce.

    Regarde si t'as un pb de mode via le datasheet.
    Si ca peut t'aider tant mieux!

    Taiguen

  14. #13
    Rancis

    Re : probleme lcd alpha num

    Citation Envoyé par freepicbasic Voir le message
    je ne sais pas si tu as déjà fais ta carte,
    mais personnellement j'aurais juste mis un enable différent pour chaque lcd le reste tout en commun, même le contraste si ce sont les mêmes LCD.
    Ca aurait été une bonne solution dans le cas ou les deux afficheurs devait afficher la même chose ou pour envoyer à l'un puis après à l'autre mais c'était plutôt galère à gérer, ce que je ne comprend pas c'est que j'ai déjà fais marcher ce montage avant avec un afficheur différent câblé sur le port A.

    Pour la variable decomp, c'est une erreur de ma part en postant le message je l'avais modifié tout de suite après.

  15. #14
    invite03481543

    Re : probleme lcd alpha num

    Il faudrait regarder la doc, certains µC ont des ressources partagées avec le port A selon la config des fusibles de CONFIG.
    Je ne vois plus que ça.
    A+

  16. #15
    Rancis

    Re : probleme lcd alpha num

    J'ai ré-essayé juste pour voir avec un autre afficheur 12x2 avec la même gestion en adaptant juste le câblage, et là sans rien faire ça marche

    Je n'arrive pas à comprendre pourquoi ça ne marcherai pas avec l'autre afficheur ... le pic ne fournit il pas assez de puissance pour piloté l'autre afficheur, c'est possible ça ?

  17. #16
    Rancis

    Re : probleme lcd alpha num

    J'ai dis quelque chose de mal ?

  18. #17
    freepicbasic

    Re : probleme lcd alpha num

    Citation Envoyé par Rancis Voir le message
    Ca aurait été une bonne solution dans le cas ou les deux afficheurs devait afficher la même chose ou pour envoyer à l'un puis après à l'autre mais c'était plutôt galère à gérer, ce que je ne comprend pas c'est que j'ai déjà fais marcher ce montage avant avec un afficheur différent câblé sur le port A.

    Pour la variable decomp, c'est une erreur de ma part en postant le message je l'avais modifié tout de suite après.
    Il n'afficheraient pas la même chose puisque c'est le enable qui sert de chip select.
    pas plus galère qu'en changeant tout.
    L'un après l'autre quoi qu'on fasse le pic n'est pas multi-taches et de toute façon multi-taches c'est forcément l'un après l'autre .
    Avec des temps en millisecondes c'est pareil...
    A+, pat

  19. #18
    freepicbasic

    Re : probleme lcd alpha num

    Citation Envoyé par Rancis Voir le message
    J'ai ré-essayé juste pour voir avec un autre afficheur 12x2 avec la même gestion en adaptant juste le câblage, et là sans rien faire ça marche

    Je n'arrive pas à comprendre pourquoi ça ne marcherai pas avec l'autre afficheur ... le pic ne fournit il pas assez de puissance pour piloté l'autre afficheur, c'est possible ça ?
    Quelques hypothèses;

    mauvais câblage.
    il est HS
    problème de temps de reset plus long.
    les pins non câblées à mettre à la masse
    la tension contraste qui ne va pas.
    A+, pat

  20. #19
    Rancis

    Re : probleme lcd alpha num

    Citation Envoyé par freepicbasic Voir le message
    Quelques hypothèses;

    mauvais câblage.
    il est HS
    problème de temps de reset plus long.
    les pins non câblées à mettre à la masse
    la tension contraste qui ne va pas.
    Je suis content au moins je vois que j'ai le bon raisonnement :

    _ câblage vérifié une bonne dizaine de fois (oui quand ça marche toujours pas je m'acharne )
    _ Il n'est pas HS j'ai échangé avec l'autre afficheur câblé sur le port D
    _ Il y a les même tempo que sur l'afficheur qui marche
    _ Je vais tenté de les mettre à la masse même si normalement ça n'a aucune influence
    _ j'ai un potar sur le contraste donc pas de soucis là dessus non plus

  21. #20
    sdec25

    Re : probleme lcd alpha num

    Je récapitule :
    1) Le LCD fonctionne
    2) Pas de faux contact ni de court-circuit
    3) le programme est OK
    4) Contraste OK et LCD bien alimenté (si tu vois la première ligne c'est bon)
    5) Les pins du PIC sont bien configurées (si tu as bien 0 et 5V quand il faut)

    Donc il n'y a aucun problème !

    En fait je pense que le problème vient de 2)
    Même en vérifiant plusieurs fois on peut rater quelque chose. Sur un de mes circuit le LCD fonctionnait par intermittence, j'ai trouvé que ça venait d'une pastille décollée qui ne faisait pas contact tout le temps.
    Alors, si ce n'est pas déjà fait, mesure les résistances au multimètre entre la pastille du LCD et la broche du PIC. Puis refait le test en mesurant les tensions sur le LCD, pas sur le PIC (5V sur une broche et 0V sur les autres, sauf la pin R/W).
    Dernière modification par sdec25 ; 21/07/2009 à 12h38.

  22. #21
    invite03481543

    Re : probleme lcd alpha num

    Un risque possible de confusion au niveau du câblage:

    sur ton afficheur la rangée de pins est en haut, certains sont en bas mais le numérotage est inversé.

    As-tu bien D7....D4 en 14...11, RS en 4 et E en 6?

    Autre piste un fil de liaison coupé entre l'afficheur et la carte.

    A+

  23. #22
    Rancis

    Re : probleme lcd alpha num

    Oui oui je suis sur du câblage, un peu plus de précision sur le sujet ne serait pas plus mal :

    Sur mon interface il y a donc deux afficheurs exactement pareil même câble même résistances de contrastes bref des jumeaux à ceci près qu'il n'affiche pas la même chose. Il n'y a pas d'inversion de fil car le câble va sur l'un ou l'autre afficheur sachant qu'un des deux marche très bien.

    Actuellement je fais des test avec un ancien afficheur plus petit (12x2) qui marche sur le PORT A, le truc c'est que j'ai réalisé un petit bout de cordon qui viens se mettre sur la nappe se branchant sur l'afficheur belliqueux (! vous m'avez suivis ?) pour vraiment mettre hors d'état de cause le câble, ce qui est fait.

    L'afficheur est câblé de la manière suivante :

    1- GND >> GND
    2- Vcc >> Vcc
    3- Vo >> pont diviseur pour réglage du contraste
    4- RS >> RA4
    5- R/W >> GND
    6- E >> RA5
    7- DB0 >> N.C
    8- DB1 >> N.C
    9- DB2 >> N.C
    10- DB3 >> N.C
    11- DB4 >> RA0
    12- DB5 >> RA1
    13- DB6 >> RA2
    14- DB7 >> RA3

    Sachant que le câblage est hors de cause et que le programme fonctionne sur l'autre afficheur et sur le petit afficheur que me reste il comme proposition ?

  24. #23
    invite03481543

    Re : probleme lcd alpha num

    Tu mesures quoi sur la pin de contraste directement sur l'afficheur quand tu fais varier le potentiomètre?
    Sinon il faut sortir le scope et regarder ce qui circule sur les datas et les signaux de commande.
    A+

    Edit: je n'avais pas vu que tu avais des carrés noirs donc oublies le contraste.

  25. #24
    invite03481543

    Re : probleme lcd alpha num

    Si l'afficheur est OK, que le câblage est OK, je ne vois plus qu'un problème de timing.
    Il faudrait utiliser le busy de l'affciheur plutôt que de mettre des tempo, le busy est ce qui devrait être toujours utilisé quand on pilote un afficheur LCD.
    Comme tu séquences sur les 2 afficheurs il est préférable que le busy soit l'arbitre du jeu.

  26. #25
    Rancis

    Re : probleme lcd alpha num

    j'ai la bonne tension sur la broche de contraste de l'afficheur soit 1,135 volt.

    Désolé mais là j'ai pas suivis ce que tu appelle le busy de l'afficheur, j'en comprend le sens bien sur mais où je trouve ça ?

  27. #26
    freepicbasic

    Re : probleme lcd alpha num

    decomp/=0x10;
    tu divise une variable qui n'est pas initialisée !
    A+, pat

  28. #27
    Rancis

    Re : probleme lcd alpha num

    Citation Envoyé par freepicbasic Voir le message
    decomp/=0x10;
    tu divise une variable qui n'est pas initialisée !
    Cf le message de ce matin à 8h32 :

    Pour la variable decomp, c'est une erreur de ma part en postant le message je l'avais modifié tout de suite après.

  29. #28
    freepicbasic

    Re : probleme lcd alpha num

    Code:
    	
    	decomp=(donnee >> 4 ) & 0x0F;
    	decomp |=0x10;
    
    	PORTA=decomp;
    	Delay10TCYx(20);
    	PORTAbits.RA4=0;
    	
    	decomp=donnee&0x0F;
    	decomp |=0x10;
    	
    	PORTA=decomp;
    	Delay10TCYx(20);
    	PORTAbits.RA4=0;
    A+, pat

  30. #29
    freepicbasic

    Re : probleme lcd alpha num

    Citation Envoyé par Rancis Voir le message
    Cf le message de ce matin à 8h32 :

    Pour la variable decomp, c'est une erreur de ma part en postant le message je l'avais modifié tout de suite après.
    oui mais le reste est faux aussi...
    A+, pat

  31. #30
    freepicbasic

    Re : probleme lcd alpha num

    plus sur comme ça;
    Code:
    	
    	PORTA=(donnee >> 4 ) & 0x0F;
    	PORTAbits.RA4=1;
    	Delay10TCYx(20);
    	PORTAbits.RA4=0;
    
    	Delay10TCYx(20);
    	
    	PORTA=donnee & 0x0F;
    	PORTAbits.RA4=1;
    	Delay10TCYx(20);
    	PORTAbits.RA4=0;
    A+, pat

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. [méthodes num] Problème instationnaire du 2e ordre
    Par invite9bbc6397 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 02/05/2007, 15h57
  2. Problème de confusion entre alpha et epsilon
    Par invitea9c37864 dans le forum Chimie
    Réponses: 4
    Dernier message: 26/04/2007, 11h10
  3. demande d'aide en métho de num
    Par invite7b27ab2f dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 08/12/2005, 16h54
  4. Plus de pavé num sous XP ?
    Par Opale68 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 29/09/2005, 11h58
Découvrez nos comparatifs produits sur l'informatique et les technologies.