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

Problème initialisation Lcd + Pic 16F877



  1. #1
    polkii

    Problème initialisation Lcd + Pic 16F877


    ------

    Bonsoir, c'est la première fois que je poste sur ce forum, mais je m'y suis souvent référencé par le passé. Cependant c'est un problème assez ennuyeux qui me pousse à poser ma question aujourd'hui, je m'explique.

    Je dois réaliser un montage qui doit permettre l' affichage de caractères sur un écran Lcd (16x2 162d displaytech) à partir d'un pic 16f877.

    J'ai terminé le cablage et ça va faire maintenant plus de trois jours que je me casse la tête à chercher une solution pour réussir à initialiser l' écran.

    Le cablage est propre et j'ai du le vérifier au moins quatre fois donc le problème doit venir du programme (en pièce jointe). J'ai essayé tout les exemples trouvables d'initialisation sur le net, sans succès.

    Je précise que le bus de données de l'écran est connecté sur le port D et que je ne peux que écrire sur le LCD parce que le R/W est à la masse . Les bits E et RS sont connectés sur le port A.0 et A.1.

    Je souhaite une configuration en 8 bits.
    Au démarrage du circuit , la ligne du haut est noire et reste ainsi alors qu'elle devrait être effacé en attendant un caractère à afficher.


    voila les datasheets :
    LCD http://docs-europe.origin.electrocom...6b806dda17.pdf
    PIC http://ww1.microchip.com/downloads/e...Doc/30292c.pdf

    J'espère que quelqu'un pourra m'aider parce que là je suis vraiment coincé et je ne sait plus quoi faire. En vous remerciant d'avance pour vos réponse.

    Code:
    #include<16F877.h>
    #include<defines.h>
    #USE delay(clock=20000000)
    #BIT E=PORTA.0
    #BIT RS=PORTA.1
    #BIT LED=PORTE.1
    #BYTE LCD=PORTD
    
    void init_PIC();
    void init_LCD();
    void E_front();
    
    void main()
    {
    	init_PIC();
    	init_LCD();
    	while(1)
    	{	
    		init_LCD();
    		RS=1;
    		LED=~LED;
    		LCD=0x02;     //display ON
            E_front();
    	 	delay_ms(500);
    	}
    }
    
    
    
    void init_PIC()
    {
    	TRISA=0x00;
    	TRISE=0x0F;
    	TRISD=0x00;
    }
    
    void init_LCD()
    {     
         delay_ms(500);
    	 LCD=0x30;     //demmarage
         RS=0;        //Selected command register
    	 E_front();
    	 delay_ms(5);
    	 E_front();
    	 delay_us(150);
    	 E_front();
    	 delay_us(100);
    
    	 LCD=0x38;     // 2 Line, 8-bit, 5x7 dots
         E_front();
    	 delay_us(100);
    
    	 LCD=0x0F;     //display ON
         E_front();
    	 delay_us(100);
    	
    	 LCD=0x01;     //display CLEAR
         E_front();
    	 delay_ms(2);
    
    	 LCD=0x06;     //mode set increase et no shift
         E_front();
    	 delay_us(100);
    }
    
    void E_front()
    {
    	E=1;
    	delay_us(1);
    	E=0;
    }
    Bonsoir polkii et tout le groupe

    Bienvenue sur le forum.

    J'ai supprimé le fichier .txt, et rapatrié le listing entre les balises code, comme c'est l'usage.

    .

    -----
    Dernière modification par gienas ; 29/03/2010 à 21h30. Motif: Placé le source dans le corps du message

  2. Publicité
  3. #2
    polkii

    Re : Problème initialisation Lcd + Pic 16F877

    ah, désolé de ne pas avoir respecté l'usage et merci pour la rectification .

    Sinon j'ai oublié de préciser que je programme sous mplab avec le compilateur c CCS .

  4. #3
    F1TVB

    Re : Problème initialisation Lcd + Pic 16F877

    Bonjour
    Il me semble que le port A n'est pas déclaré en mode digital.

  5. #4
    polkii

    Re : Problème initialisation Lcd + Pic 16F877

    Salut , merci de ta réponse.
    Mais je ne comprend pas , l'instruction TRISA=0x00; est sensée configurer le port en sortie.
    Pourrais tu être plus clair ou alors me donné l'instruction manquante ?

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

    Re : Problème initialisation Lcd + Pic 16F877

    Bon je sais que le port a peut être configuré en entrée analogique pour une CAN, je vais changer de port je vous tiens au courant.

  8. #6
    polkii

    Re : Problème initialisation Lcd + Pic 16F877

    Toujours rien ... Je pense que le problème est dans la tempo.
    Quelqu'un aurait une idée ?

  9. Publicité
  10. #7
    Gérard

    Re : Problème initialisation Lcd + Pic 16F877

    Citation Envoyé par polkii Voir le message
    Bon je sais que le port a peut être configuré en entrée analogique pour une CAN, je vais changer de port je vous tiens au courant.
    Tu dois écrire ADCON1 = 7 pour que le port A soit en numérique, par défaut, il est en analogique.

  11. #8
    polkii

    Re : Problème initialisation Lcd + Pic 16F877

    Merci gérard pour ta précision, malheureusement l'écran ne s'initialise toujours pas, je commence à perdre espoir.

  12. #9
    polkii

    Re : Problème initialisation Lcd + Pic 16F877

    Mon problème est résolu : L'impulsion sur E de 1us n'est pas suffisante 2 l'est par contre (sur la datasheet il est marqué 450 ns étrange non ?).

    Merci à F1TVB et gérard, vous m'avez appris plus sur le porta et à tous ceux qui ont ouvert le sujet .
    à bientôt

Discussions similaires

  1. Pic 16f877 et lcd lm016l
    Par beautifulmaria dans le forum Électronique
    Réponses: 4
    Dernier message: 07/03/2010, 09h41
  2. Comment programmer un LCD avec le pic 16F877 ??
    Par taeway dans le forum Électronique
    Réponses: 20
    Dernier message: 15/02/2010, 21h41
  3. Programation pic 16F877 en C avec Aff LCD
    Par kevinomont dans le forum Électronique
    Réponses: 8
    Dernier message: 01/02/2009, 12h45
  4. Driver LCD 2*16 avec PIC 16F877
    Par misstik dans le forum Électronique
    Réponses: 2
    Dernier message: 20/07/2007, 23h54
  5. Pic 16f877 + Lcd (m6222 + Lc7930 )
    Par Toufinet dans le forum Électronique
    Réponses: 1
    Dernier message: 23/05/2006, 02h27
Découvrez nos comparatifs produits sur l'informatique et les technologies.