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

Pb Afficheur (2*16) GDM1602A + PIC16f876



  1. #1
    freedom144

    Unhappy Pb Afficheur (2*16) GDM1602A + PIC16f876

    Bonjour à tous,

    Voici mon problème, j'ai développé une carte comprenant un pic16f876 et un écran LCD (2*16) GDM1602A. Je joint le schéma de la carte....

    Mais je n'arrive pas à afficher quelque chose sur mon écran LCD. Il affiche juste des carrés noir sur toute la 1er ligne. Je pense que le problème vient du soft car j'ai 2 écrans du même type a disposition et c'est la même chose.

    De plus, il y a quelque temps que j'ai réalisé la carte et elle fonctionné très bien. mais j'ai perdu mon ancien programme donc je suis repartis de presque 0.

    Schema de la carte

    Le programme en C

    Par avance Merci

    -----


  2. Publicité
  3. #2
    cherwam07

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Quand il y a des carrés noirs sur la première ligne, c'est que l'écran n'est pas configuré.

    Sinon j'ai survolé ton programme, et j'ai vu dans le main :
    Code:
    while(1);
    Enlève le point virgule sinon ca tourne en rond sur le while(1)

  4. #3
    freedom144

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Citation Envoyé par cherwam07 Voir le message

    Enlève le point virgule sinon ca tourne en rond sur le while(1)
    Merci;
    Je viens de le faire sa n'a rien changé, de toute façon je fais l'initiation avant la boucle.

  5. #4
    cherwam07

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    int data : 4;
    Et ca, ca veut dire quoi. Je veux parler du "deux points 4" ??

  6. #5
    freedom144

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Ca veut dire que la variable data est sur 4 bits

  7. A voir en vidéo sur Futura
  8. #6
    freedom144

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    j'ajoute le datsheet du GDM1602A et u site qui aide beaucoup

    http://elmicro.com/files/lcd/gdm1602a_datasheet.pdf

    http://www.aurel32.net/elec/lcd.php

  9. Publicité
  10. #7
    cherwam07

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Code:
    void lcd_strobe( n )
    Tu ne précise pas quel est le type de n.

    Du coup quand tu fais ca :

    Code:
    lcd.data = n;
    Qui te dis que quelques bits ne sont pas écris dans ce qui suit le champ data.....donc sur rs et en ??

  11. #8
    freedom144

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Je le déclare juste en dessus
    Code:
    BYTE n,z;
    Donc n est déclaré en tant que variable comportant 8 bit

  12. #9
    freedom144

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    J'ai encore modifier mon Programme

    Pg Afficheur

    De plus je pense que mon probleme provient d'une mauvaise initialisation de mon afficheur, mais après avoir étudié et réétudié la doc je ne trouve pas le probleme. Normalement la structure même du programme doit être bonne car je l'ai déjà utilisé et elle fonctionné parfaitement.
    Dernière modification par freedom144 ; 05/03/2008 à 21h02.

  13. #10
    cherwam07

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Donc n est déclaré en tant que variable comportant 8 bit
    Ah oui je n'avais pas vu ca.

    M'enfin c'est pas très joli comme facon de coder.

    Et puis donc c'est bien ce que je disais....
    Code:
    lcd.data = n;
    En faisant ca tu affecte une un nombre de 8 bits dans une variable data que tu me dis étant sur 4 bits... Il y a un problème non ?

  14. #11
    freedom144

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Je ne connais pas une autre manière de le déclarer, de plus comme je l'ai dit dans un précédent post. J'ai déjà mis en oeuvre cette carte et ce programme (qui provient d'un livre d'exemple), la seule chose que j'ai perdu c'est les paramètres pour l'initialisation du LCD.

  15. #12
    Seb.26

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Citation Envoyé par freedom144 Voir le message
    Je ne connais pas une autre manière de le déclarer
    Code:
    struct demi_donnee
       {
         int     data : 4;        //4 bits en poids faibles  de portB
                 BOOLEAN en;      //enable en B4
                 BOOLEAN rs;      //selection de registes en B5
                 BOOLEAN unused;  //B6, B7 inutiles à la structure
        }lcd;                     //la structure est nommée "LCD" ...
    Pourquoi pas du genre :

    Code:
    struct demi_donnee
    {
         unsigned data : 4;    //4 bits en poids faibles  de portB
         unsigned en : 1;      //enable en B4
         unsigned rs : 1;      //selection de registes en B5
         unsigned : 2;         //B6, B7 inutiles à la structure
    }lcd;                      //la structure est nommée "LCD" ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  16. Publicité
  17. #13
    freedom144

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    avec mon compilateur les int sont automatiquement des unsigned

    donc j'ai suivis ton conseil et j'ai écrit :
    Code:
    struct demi_donnee
       {
         int data : 4;    //4 bits en poids faibles  de portB
         int en : 1;      //enable en B4
         int rs : 1;      //selection de registes en B5
         int : 2;    //B6, B7 inutiles à la structure
        }lcd;                     //la structure est nommée "LCD" ...
    et j'obtient toujours la même chose des carré noir sur la 1er ligne de mon afficheur

  18. #14
    Seb.26

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Citation Envoyé par freedom144 Voir le message
    avec mon compilateur les int sont automatiquement des unsigned
    Regarde dans les .h de ton compilo comment il declare les structures de bit pour les registres de config ...

    Car je trouve ça bizarre de mettre "int" et ":4" sur la même ligne ...

    Mais c'est peut être ton compilo qui veut ça ... ???

    Et puis si ça marche ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  19. #15
    cherwam07

    Re : Pb Afficheur (2*16) GDM1602A + PIC16f876

    Tes paramètres d'initialisation du LCD sont bons.

    La raison est certainement qu'ils ne parviennent pas jusqu'à l'écran.

    Je ne sais pas ce que c'est comme livre d'exemple, mais ils ont une facon affreuse d'écrire du C.
    Va voir CE POST , j'ai mis en pièce jointe des fonctions pour LCD qui fonctionnent.

    C'est pour du 8 bits donc il te faudra adapter un poil. Mais ca marche.

Sur le même thème :

Discussions similaires

  1. PIC16F876 en I2C
    Par janialbe dans le forum Électronique
    Réponses: 3
    Dernier message: 16/09/2007, 15h38
  2. montage pic16f876
    Par aenur dans le forum Électronique
    Réponses: 1
    Dernier message: 21/04/2007, 10h28
  3. connexion un gsm avec pic16F876
    Par rad1 dans le forum Électronique
    Réponses: 3
    Dernier message: 25/02/2007, 13h49
  4. Pic16f876
    Par smartise73 dans le forum Électronique
    Réponses: 1
    Dernier message: 02/05/2006, 17h48
  5. PIC16F876
    Par Blacky dans le forum Électronique
    Réponses: 1
    Dernier message: 04/02/2004, 12h56