Pb commande LCD
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Pb commande LCD



  1. #1
    LTHOMAS

    Angry Pb commande LCD


    ------

    Bonjour, j'ai acheté un écran LCD ayant ces caractéristiques :

    ICI

    Je le pilote avec un PIC. J'ai écris un programme de gestion en C testé sur un petit écran LCD "standard", ça fonctionne.
    Par contre dès que je connecte ce nouvel écran, ça ne marche plus.

    Le problème vient soit de la méthode de commande, soit de l'initialisation de l'LCD je pense.

    Dans la doc on peut lire
    Drive Method: 1/16 Duty , 1/5 Bias
    Qu'est ce que cela signifie ?

    La commande s'effectue en 4bits, l'écran étant connecté sur le PORTD0->PORTD.3

    Voici un bout de programme (envoi de commandes, en 4 bits), la fonction delai_us n'étant pas copiée ici, elle fonctionne parfaitement :
    Code:
    #define DELAY 20
    #define NBLIG 4		// Nombre de lignes
    #define NBCOL 20	// Nombre de colonne
    #define RS PORTE.0	// Connexion RS
    #define E PORTE.1	// Connexion E
    
    void register_screen(char c)
    {
    	char tmp;
    	RS = 0;	// Envoi de commandes
    
    	tmp = c>>4;	// Envoi des 4 bits de poids fort
    	tmp |= 0xF0;
    	PORTD = PORTD&0xF0;
    	PORTD |= tmp;
    	E = 1;	// Impulsion valitation
    	delai_us(DELAY);
    	E = 0;
    	delai_us(DELAY);
    
    	tmp = c|0xF0;	// Envoi des 4 bits de poids faible
    	PORTD = PORTD&0xF0;
    	PORTD |= tmp;
    	E = 1;	// Impulsion validation
    	delai_us(DELAY);
    	E = 0;
    	delai_us(DELAY);
    	delai_us(DELAY);
    }
    Et voici l'initialisation. On trouve énormément de procédures d'initialisation sur internet, on ne sais plus ce qui est juste ou pas :

    Code:
    void init_afficheur(void)
    {
    	curlig = 0; curcol = 0;
    	delai_ms(15);
    	register_screen(0x33); 
    	delai_ms(10);
    	register_screen(0x33); 
    	delai_ms(10);
    	register_screen(0x33); // besoin 1 fois pour redemarrer 
    	delai_ms(10);
    	
    	// Configuration 4 bits :
    	register_screen(0x32);  
    	register_screen(0x06); 
    	register_screen(0x18);  
    	register_screen(0x0F);  
    	register_screen(0x28);
    	register_screen(0x01);
    	register_screen(0x08);
    	delai_ms(5);
    	register_screen(0x0C);	// Curseur off
    }
    La question est : pourquoi ces codes fonctionnent -ils avec un écran et pas avec l'autre dont la doc est donnée ci dessus ?

    Je ne sais pas si quelqu'un peux me répondre, mais je ne sais plus trop quoi tester sur mon montage...

    Merci

    @+
    Thomas

    -----

  2. #2
    invite819d0622

    Re : Pb commande LCD

    Bonjour,

    Quelle est la référence de cet afficheur? Disposez-vous de sa documentation?

    Cordialement,

    Michel

  3. #3
    LTHOMAS

    Re : Pb commande LCD

    Bonjour, je n'ai rien mis à part l'annonce donnée dans le #1.
    Les drivers sont des HD44780 d'après l'annonce...

    @+
    Thomas

  4. #4
    invite819d0622

    Re : Pb commande LCD

    Bonjour,

    Je suis un peu étonné de voir que cet afficheur est piloté par un HD44780. D'après les documents dont je dispose ce circuit est paramétrable pour un afficheur à 1 ou 2 lignes, le votre en a 4...

    Est-ce que absolument rien ne s'affiche sur l'écran? Avez-vous câblé un potentiomètre de réglage du contraste?

    Cordialement,

    Michel

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

    Re : Pb commande LCD

    De plus pour moi l'écran de l'annonce se commande sur 8 bits et non 4 bits... essaie d'envoyer une commande de 8 bits plutot pour voir

  7. #6
    invite819d0622

    Re : Pb commande LCD

    Non, non, la documentation spécifie: "LCD Driver: 4-or 8-bit paralled."

    Michel

  8. #7
    LTHOMAS

    Re : Pb commande LCD

    Merci pour vos réponses.

    A la mise sous tension, 2 lignes de l'afficheur sont "noires", normal pour tous les afficheurs. Ensuite, au démarrage du pic, ces lignes s'éffacent pour laisser place au curseur qui clignotte.
    Par contre, dès que j'essaye d'écrire un caratère, 'A' par exemple, le 'A' ne s'affiche pas mais le curseur passe à la position 2e ligne, 4e colonne par exemple, ou des fois il ne se passe rien du tout...

    Pour le contraste c'est ok, j'ai relié la patte à la masse : contraste maximum

    Mais c'est surtout l'initialisation où je ne suis pas très sûr de mon code.

    Je vais tenter une commande 8 bits pour voir...

    merci pour votre aide

  9. #8
    umfred

    Re : Pb commande LCD

    DB0 to DB3 4 I/O MPU Four low order bidirectional tristate data bus pins.
    Used for data transfer and receive between the
    MPU and the HD44780U.
    These pins are not used during 4-bit operation.
    As-tu bien connecté ton port sur les DB7 à DB4 de l'afficheur ?

  10. #9
    LTHOMAS

    Re : Pb commande LCD

    Oui :
    RD0->DB4
    RD1->DB5
    RD2->DB6
    RD3->DB7

Discussions similaires

  1. [LCD] info sur LCD graphique LM6300 ?
    Par invite565767eb dans le forum Électronique
    Réponses: 2
    Dernier message: 02/12/2010, 23h01
  2. Moteur DC : commande en PWM ou commande linéaire?
    Par invite5735c9fd dans le forum Électronique
    Réponses: 8
    Dernier message: 03/03/2009, 12h01
  3. [Brun] Lcd Benq Alimentation d'un ecran LCD!!! [résolu]
    Par invitec87978c8 dans le forum Dépannage
    Réponses: 19
    Dernier message: 17/06/2008, 15h25
  4. commande de LCD
    Par invite5396f733 dans le forum Électronique
    Réponses: 7
    Dernier message: 28/12/2007, 19h53
  5. Convertir une commande tension en commande courant
    Par invite83d9e951 dans le forum Électronique
    Réponses: 11
    Dernier message: 29/03/2007, 08h45
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...