[Outils/Fab/Comp] utilisation d'afficheur 2x16
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 50

utilisation d'afficheur 2x16



  1. #1
    davidif

    utilisation d'afficheur 2x16


    ------

    Bonjour ,

    je dois utiliser un simple afficheur, de ce style :
    http://fr.rs-online.com/web/p/affich...35383836303826

    Seulement, j'ai un légé doute sur sont mode d'utilisation, à savoir que ça réf est : EA DOGM162L-A et d'après la doc il ne nécessiterai pas de backlight si j'ai bien compris ?
    http://docs-europe.electrocomponents...6b8143c96e.pdf

    Au quel cas, je n'ai pas besoin d'alimenter les pin A1, C1 et A2, C2 ? sur le tableau il est indiqué NC ....

    Merci pour votre aide

    -----

  2. #2
    invite03481543

    Re : utilisation d'afficheur 2x16

    Bonjour,

    de ce que je comprends de cette doc insipide est que la dalle de backlight est montable en option sous le LCD.
    Donc au niveau de l'afficheur tu n'as pas à raccorder A1/C1 & A2/C2 mais au niveau de la dalle seulement sur les broches dédiées.
    Le tout est de savoir comment les 2 se montent ensemble l'un sur l'autre.
    Beurk!

  3. #3
    DAUDET78

    Re : utilisation d'afficheur 2x16

    Citation Envoyé par davidif Voir le message
    Au quel cas, je n'ai pas besoin d'alimenter les pin A1, C1 et A2, C2 ? sur le tableau il est indiqué NC ....
    Tu as deux modèles utilisables sans backlight ( à voir ... au propre et au figuré)
    J'aime pas le Grec

  4. #4
    davidif

    Re : utilisation d'afficheur 2x16

    Merci pour vos info, en effet la docs est succin , mais j'ai pris cette affichage car il fonctionne déjà sur un autre montage , j'ai donc pris la même série qui est monté sur un backlight en reprenant le même cablage, seulement la réf de l'afficheur n'est pas inscrit dessus et je croyais avoir pris le même.
    ce doit être le EA-DOGMXXE-A puisqu'il est monté sur un backligh, le modèle que j'ai pris est un EA-DOGMXXL-A donc pas besoin de backlight a priori.

    ça veut dire que le modèle que j'ai pris n'a pas besoin de backlight et donc pas besoin de relier le A1, C1, A2, C2 , par précaution j'ai quand même prévu l'option backligh sur ma carte que je câblerais si besoin.

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

    Re : utilisation d'afficheur 2x16

    Bonjour,

    Je reviens car j'ai mes cartes que je dois rendre fonctionnelles et évidemment je me pose des questions (vous me direz, il est tant (: )
    notamment sur les branchement du port SPI.

    Car je l'utilise en SPI et 5v, ce qui correspond à une configuration de cablage en page 4, seulement j'ai un doute à savoir ou devrais-je connecter mon SI, SO de mon pic ?

    Je pense mettre planté et serai bon pour couper des pistes car j'ai mis

    pic --> Afficheur

    SI --> d7
    SO --> RS

    Là j'ai moins de doute

    sck --> D6

    d'après le processus d'initialisation page 7, il ne parle pas de CSB mais R/W qui reste à 0
    que dois je faire de CSB ?

    Merci pour votre aide
    Dernière modification par davidif ; 23/06/2016 à 15h17.

  7. #6
    James072

    Re : utilisation d'afficheur 2x16

    Bonjour,

    A priori, CSB = Chip Select, à mettre à l'état bas pour utiliser cet afficheur s'il y a plusieurs afficheurs sur ton bus SPI.

    https://fr.wikipedia.org/wiki/Serial...eral_Interface

  8. #7
    paulfjujo

    Re : utilisation d'afficheur 2x16

    bonjour,

    il est vrai que la doc est pourrave au niveau des renseignement mode SPI

    je verra plutot
    pic --> Afficheur
    MOSI --> d7
    Sclk --> D6
    MISO entree SPI du MCU not connected ? car ecriture seulement sur le LCD ?
    CSB au 0V .. selectionné en permanence , si il n'y a rien d'autre sur le bus SPI
    RS sur une autre sortie ( choix Commande ou data ) ou non conneté ?
    PSB au Gnd

  9. #8
    davidif

    Re : utilisation d'afficheur 2x16

    Merci pour vos infos, effectivement je suis bon pour couper quelques pistes

  10. #9
    paulfjujo

    Re : utilisation d'afficheur 2x16

    je viens de regarder la specsheet
    ST7036 V1.1 2003/12/24 55/72
    z 4-wire SPI interface

    il me semble qu'un SPI hardware risque de ne pas convenir
    donc imposerait un simili SPI 100% software
    pour pouvoir gerer RS

  11. #10
    davidif

    Re : utilisation d'afficheur 2x16

    Citation Envoyé par paulfjujo Voir le message
    je viens de regarder la specsheet
    ST7036 V1.1 2003/12/24 55/72
    z 4-wire SPI interface

    il me semble qu'un SPI hardware risque de ne pas convenir
    donc imposerait un simili SPI 100% software
    pour pouvoir gerer RS
    En fait , RS peut rester à 0 , d'après l'initialisation et le fonctionnement de l'afficheur.
    J'ai rien d'autre sur mon bus spi

  12. #11
    davidif

    Re : utilisation d'afficheur 2x16

    Bonjour,

    je souhaite donc initialiser mon afficheur via SPI et juste pour le principe j'aimerai savoir si je dois bien faire comme ça

    Code:
    void init_afficheur(void)
    {
        
        SPI_Exchange8bit(0x39);  //Fonction set
        //tempo de 26.3us
        SPI_Exchange8bit(0x1C);  //Bias set    
        //tempo de 26.3us
        SPI_Exchange8bit(0x52);  //power control
            //tempo de 26.3us
        SPI_Exchange8bit(0x69);  //follow controle
            //tempo de 26.3us
        SPI_Exchange8bit(0x74);  //contraste
            //tempo de 26.3us
        SPI_Exchange8bit(0x38);  //fonction set 
            //tempo de 26.3us
        SPI_Exchange8bit(0x0F);  //Dysplay
            //tempo de 26.3us
        SPI_Exchange8bit(0x01);  //clear
            //tempo de 1.08ms
        SPI_Exchange8bit(0x06);  //Entry mode
        
    }
    Je n'ai pas encore mis les tempos, mais juste savoir si je suis dans le bon par rapport à mon interprétation de la documentation

    Merci

  13. #12
    davidif

    Re : utilisation d'afficheur 2x16

    Bonjour,

    Mon afficheur fonctionne bien.
    Maintenant, je me demande quel serait la meilleur façon d'afficher mes données, c'est à dire est-ce que je dois rafraîchir régulièrement l'affichage toutes les ms par exemple ou dois modifier l'affichage de l'ensembles seulement lors d'un changement de valeurs à afficher.

    Je me pose cette question car lors de affranchissement régulier j'observe un affichage avec un balayage apparent, c'est à dire que je fais continuellement un clear puis ré affiche à nouveau.

    Merci de vos suggestion

  14. #13
    paulfjujo

    Re : utilisation d'afficheur 2x16

    bonjour,


    Code:
     est-ce que je dois rafraîchir régulièrement l'affichage toutes les ms par exemple ou dois modifier l'affichage de l'ensembles seulement lors d'un changement de valeurs à afficher.
    modifier l'affichage de l'ensembles seulement lors d'un changement de valeurs à afficher.[
    OUI ...
    c'et l'afficheur qui s'occupe tout seul du rafraichissement
    si tu le rafraichis toi meme tres rapidement, il aura des problemes de trainées ou perturbation
    à cause des frequences differentes de rafriachissement par ton programme et celle de l'afficheur .


    ce n'est pas le meme cas , lorsque tu gere un affichage 7 segments à plusieurs digits
    ou là; il faut imperativement gerer le rafraichissement toutes les x mS
    Dernière modification par paulfjujo ; 13/08/2016 à 13h40.

  15. #14
    davidif

    Re : utilisation d'afficheur 2x16

    Merci de ta réponse rapide paulfjujo, c'est noté et effectivement j'ai pu constaté les perturbations en pensant devoir rafraîchir seulement je n'était pas sûr de la cause et je pensais que c'était plutôt dû à ma fréquence trop basse.

    Par contre, si je dois modifier l'affichage d'une valeur, je suis obligé de faire un clear (effacer tout l'afficheur) pour tout ré-afficher ? c'est bien ça

  16. #15
    paulfjujo

    Re : utilisation d'afficheur 2x16

    Par contre, si je dois modifier l'affichage d'une valeur, je suis obligé de faire un clear (effacer tout l'afficheur) pour tout ré-afficher ?
    Oui, cest preferable , sauf si tu ecris à chaque fois un message de 16 cars (qui remplis donc toute la ligne)
    sinon, si il est plus court ,il resterait les caracteres du message precedent.

    Une alternative au LCD_CLS est d'effacer que la ligne concernée .. si on ne veut pas effacer l'autre ligne

    algoritme
    RAS _Ligne(x) :
    mettre le curseur sur le N° de ligne x concernée et en position 1
    ecrire 16 caracateres "blancé ( code 0x20 ou 32)
    remettre le curseur en posion N° Ligne, 1

  17. #16
    DAUDET78

    Re : utilisation d'afficheur 2x16

    Citation Envoyé par paulfjujo Voir le message
    Oui, cest preferable , sauf si tu ecris à chaque fois un message de 16 cars (qui remplis donc toute la ligne)
    sinon, si il est plus court ,il resterait les caracteres du message precedent.
    J'avais souvenir qu'on pouvait mettre le curseur où on voulait et changer le caractère pointé .
    Le curseur s'incrémente et on peut changer le suivant .
    J'aime pas le Grec

  18. #17
    paulfjujo

    Re : utilisation d'afficheur 2x16

    Citation Envoyé par DAUDET78 Voir le message
    J'avais souvenir qu'on pouvait mettre le curseur où on voulait et changer le caractère pointé .
    Le curseur s'incrémente et on peut changer le suivant .
    exact, mais il faut que la valeur à afficher ait un format constant.

    exemple:
    si la trame fixe se présente ainsi sur lal igne 1 du LCD :
    TEMPERATURE XXXX

    Code:
    // --- Copie le texte depuis ROM vers RAM
    void strConstRamCpy(char *dest, const char *source) {
      while(*source) *dest++ = *source++ ;
      *dest = 0 ;    // terminateur
    }
    
    char txt[17];
    
    // on ecrit une seule fois la trame de fond
    strConstRamCpy(txt,"TEMPERATURE ....");
    LCD_OUT(1,1,txt);
    
    //... boucle ...
    // on supposera que temp contient la valeur à afficher
    // on rafraichit ensuite que la valeur 
    
    LCD_OUT(1,13,temp);  // avec la valeur temp sur 4 caracteres asccii + terminateur=0

  19. #18
    davidif

    Re : utilisation d'afficheur 2x16

    Citation Envoyé par paulfjujo Voir le message
    Oui, cest preferable , sauf si tu ecris à chaque fois un message de 16 cars (qui remplis donc toute la ligne)
    sinon, si il est plus court ,il resterait les caracteres du message precedent.

    Une alternative au LCD_CLS est d'effacer que la ligne concernée .. si on ne veut pas effacer l'autre ligne

    algoritme
    RAS _Ligne(x) :
    mettre le curseur sur le N° de ligne x concernée et en position 1
    ecrire 16 caracateres "blancé ( code 0x20 ou 32)
    remettre le curseur en posion N° Ligne, 1
    OK merci , effectivement en faisant cette méthode il n'est donc pas nécessaire de tout ré-écrire mais seulement une donnée.
    Je vois ça

  20. #19
    davidif

    Re : utilisation d'afficheur 2x16

    Bonjour,

    Je souhaite pouvoir afficher une variable, seulement je peux qu'afficher des caractères :

    Pour le moment je fais ça

    Code:
        if (val.Gdome!=old_val.Gdome)
        {  
            
        clear_lcd ();
        
        xy_lcd (1,1);
        aff_txt(val.Gdome);
        
        //xy_lcd (4,2);
        //aff_txt("bienvenue");
        
        old_val.Gdome=val.Gdome;
        
        }
    dès que ma valeur change, je viens l'afficher, seulement si je fait ça

    xy_lcd (4,2);
    aff_txt("bienvenue");

    ça fonctionne, mais si je souhaite afficher une valeur numérique qui varie, j'ai un légé problème

    Je souhaiterai afficher la valeur numérique de val.Gdome

    sachant, que ma fonction d'écriture est

    Code:
    void write_lcd (uint8_t c)
    {
        uint8_t  tempo;
        tempo=200;
        
    
        RS_AFF_SetHigh();
        
    
    
        SPI_Exchange8bit(c); 
        while(tempo!=0){  
        tempo--;}
        //tempo=200;
        
    }
    et également
    Code:
    void aff_txt(uint8_t *message)
    {
        while(*message!= '\0')
        { 
            if(*message=='\r')
            xy_lcd(1,2);
            else
            write_lcd (*message); //écriture sur le LCD d'un caractère du message.
            message++;
        };
    }

    dois-je convertir ma valeur avant de l'afficher ?

    Merci de votre aide
    Dernière modification par davidif ; 14/08/2016 à 18h05.

  21. #20
    paulfjujo

    Re : utilisation d'afficheur 2x16

    Code:
       if (val.Gdome!=old_val.Gdome)
        {  
            
        clear_lcd ();
        
        xy_lcd (1,1);
        aff_txt(val.Gdome);
        
        //xy_lcd (4,2);
        //aff_txt("bienvenue");
        
        old_val.Gdome=val.Gdome;
        
        }

    si tu fais clear_lcd (); ça ne sert à rien de vouloir afficher ta valeur au bon endroit ..
    le but etait bien d'eviter Clear_Lcd ?

    xy_lcd (4,2);
    aff_txt("bienvenue");

    c'est bien un LCD 2 lignes de 16 cars ?
    Pourquoi afficher bienvenue à partir de la 4em position 2em Ligne ?

    quelle est le domaine de variation de ta valeur 1 unsigned char ou Byte (0 à 255) ou un unsigned Int (0 à 65535) ou autre ?
    à quel endoit veuxètu afficher cette valeur ?
    avec du texte en trame fixe ?
    voir exemple precedent
    Code:
    //Positioner le curseur en debut de ligne 
    //Afficher au moins 1 fois la trame fixe ...
    aff_txt("TEMPERATUR XXXXX");      // taille 16 cars
    valeur XXXXX exemple un entier representé sur 5 cars pour afficher par exemple la valeur brute de l'ADC 0 à 1023
    il faut alors convertir ta valeur en ascii
    genre
    itoa(valeur,txt); (en C18)

    positionner le curseur en 12 sur la ligne considerée
    tu dois bien avoir une fonction pour cela ...
    et envoyer ensuite aff_txt(txt);

    tu programmes en XC8 ?

    je suis avec mikroC puisque C18 fini !
    Dernière modification par paulfjujo ; 14/08/2016 à 18h28.

  22. #21
    davidif

    Re : utilisation d'afficheur 2x16

    j'utilise le PIC18F26K20 et les histoires du clear n'est pas véritablement un problème majeur mais connaitre la méthodologie en fait, mais plutôt le fait de pouvoir afficher une variable comme :

    val.Gdome qui varie entre 0 et 100 par pas de 5 (affiché entre 0 et 10 par pas de 0.5)
    val.Pdome qui varie entre 0 et 100 par pas de 5 (affiché entre 0 et 10 par pas de 0.5)
    val.tempo qui varie entre 0 et 60 par pas de 1 (affiché entre 0 et 60 par pas de 1)

    Je programme sous MPLABX IDE V3.30 avec xc8

    Mon affichage serai de ce style

    Corps:XXXX Temps
    Jambes:YYYY ZZ


    XXXX : entre 00.0 et 10.0 pas de 00.5
    YYYY :entre 00.0 et 10.0 pas de 00.5
    ZZ: entre 00 et 60 pas de 01

    Mon affichage est un 2X16 caractères

    Je vais vérifier demain tout ça , merci

  23. #22
    davidif

    Re : utilisation d'afficheur 2x16

    Bonjour,

    J'ai essayé la fonction itoa() comme tel :
    Code:
    char buffer[20];
    
        if (val.Gdome!=old_val.Gdome)
        {  
            
        clear_lcd ();
            
        itoa(val.Gdome,buffer,10);
        xy_lcd (4,1);
        aff_txt(buffer);
        
        //xy_lcd (4,2);
        //aff_txt("bienvenue");
        
        old_val.Gdome=val.Gdome;
        
        }
    mais rien ne s'affiche

  24. #23
    satinas

    Re : utilisation d'afficheur 2x16

    Salut,
    tu as du avoir des warnings à la compilation, dont il faut tenir compte.
    essaye itoa(buffer, val.Gdome, 10);

  25. #24
    davidif

    Re : utilisation d'afficheur 2x16

    Citation Envoyé par satinas Voir le message
    Salut,
    tu as du avoir des warnings à la compilation, dont il faut tenir compte.
    essaye itoa(buffer, val.Gdome, 10);
    Yes , ça marche !! effectivement l'emplacement du buffer n'était par au bonne endroit

    pourtant, sur le net il le mettait autrement
    http://www.cplusplus.com/reference/cstdlib/itoa/

  26. #25
    satinas

    Re : utilisation d'afficheur 2x16

    y a le net et puis y a :

    cd "\Program Files\microchip\xc32"
    findstr /s /c:itoa *.h

  27. #26
    davidif

    Re : utilisation d'afficheur 2x16

    Citation Envoyé par satinas Voir le message
    y a le net et puis y a :

    cd "\Program Files\microchip\xc32"
    findstr /s /c:itoa *.h
    Oui merci

    un détaille que je comprend pas , voici mon code

    Code:
        if (val.Gdome!=old_val.Gdome)
        {  
            
        clear_lcd ();
            
        itoa(buffer,val.Gdome,10);
    
        xy_lcd (1,1);
        aff_txt("Corps:");
        
        xy_lcd (6,1);
        aff_txt(buffer);
        
        old_val.Gdome=val.Gdome;
        
        }
    Sur mon affichage j'obtient ça

    Corps:àXXX avec évidemment les XXX qui varie de 0 à 100 par pas de 5

    d'ou vient le "à" ? pourtant quand j'affiche individuellement "corps" et XXX ça s'affiche correctement.

  28. #27
    davidif

    Re : utilisation d'afficheur 2x16

    Bon en fait, j'ai avancé un peu (:

    après quelques recherches et essai , voici mon code :

    Code:
     
    
    char message1[16]="";
    char message2[16]="";
    char message3[16]="";
    char corps[10]="Corps";
    char jambes[10]="Jambes";
    char temps[10]="temps";
    
    
       if (val.Gdome!=old_val.Gdome)
        {  
    
        clear_lcd ();
            
    
        sprintf (message1,"%s:%4d %s",corps,val.Gdome,temps);
        xy_lcd (1,1);
        aff_txt(message1);
        
          
        old_val.Gdome=val.Gdome;
        
        }
    ok ça fonctionne, mon texte et valeurs s'affiche correctement
    Seulement quand je souhaite afficher autre choses à un autre emplacement (sur la 2 ième ligne ), ça ne fonctionne plus et l'affiche à la suite

    Code:
       if (val.Gdome!=old_val.Gdome)
        {  
    
            
        clear_lcd ();
            
    
        sprintf (message1,"%s:%4d %s",corps,val.Gdome,temps);
        xy_lcd (1,1);
        aff_txt(message1);
        
    
        sprintf (message2,"%s:%4d  %d",jambes,val.Pdome,val.tempo);
        xy_lcd (1,2);
        aff_txt(message2);
      
        
        old_val.Gdome=val.Gdome;
        
        }
    je ne perçois pas la 2 ième ligne , je n'est que la première d'afficher

  29. #28
    davidif

    Re : utilisation d'afficheur 2x16

    avoir un affichage comme ça

    Corps:XXXX Temps
    Jambes:YYYY ZZ

    avec seulement les valeurs qui varie, seulement pour le moment je n'arrive qu'à afficher soit la première ligne soit la deuxième mais pas les deux

  30. #29
    satinas

    Re : utilisation d'afficheur 2x16

    source de xy_lcd() ?
    respectes-tu le temps d'attente après chaque instruction lcd conformément à la doc ?

  31. #30
    paulfjujo

    Re : utilisation d'afficheur 2x16

    bonjour,



    revoir la taille à 17 pour les messages1 2 et 3
    16 caracteres + terminateur 0

    char message1[17]="";
    char message2[17]="";
    char message3[17]="";

    nota: tu peux utiliser une seule table message pour tous les textes à afficher !
    à moins d'en avoir besoin par ailleurs
    Code:
    char message[17]="";
    
    char corps[10]="Corps";
    char jambes[10]="Jambes";
    char temps[10]="temps"
    
    if (val.Gdome!=old_val.Gdome)
     {  
      clear_lcd ();
    
    //calibre tes affichages sur 16 cars
    // 1234567890123456
    //"Corps:XXXX Temps"  <-  16 cars 
        sprintf (message,"%s:%4d %s",corps,val.Gdome,temps);
        xy_lcd (1,1);
        aff_txt(message);
        
    //"Jambes: YYYY  ZZ"  <- 16 cars
       sprintf (message,"%s: %4d  %2d",jambes,val.Pdome,val.tempo);
        xy_lcd (1,2);
        aff_txt(message);
         
        old_val.Gdome=val.Gdome;
     }

    Je vois que tu conserve l'effacement total du LCD ???
    Dernière modification par paulfjujo ; 15/08/2016 à 11h34.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Afficheur LCD 2X16 COG
    Par foudefoot dans le forum Électronique
    Réponses: 12
    Dernier message: 20/09/2012, 09h25
  2. Affichage répeté sur mon afficheur LCD 2x16 ?!
    Par badr-MOB dans le forum Électronique
    Réponses: 4
    Dernier message: 22/02/2012, 15h07
  3. Afficheur LCD 2x16 caractères
    Par invite958adb57 dans le forum Électronique
    Réponses: 9
    Dernier message: 22/02/2012, 12h00
  4. Afficheur lcd 2x16 programmation
    Par invite960f35e5 dans le forum Électronique
    Réponses: 32
    Dernier message: 29/08/2008, 22h51
  5. Afficheur LCD 2x16
    Par Roukben dans le forum Électronique
    Réponses: 4
    Dernier message: 01/02/2006, 15h11
Découvrez nos comparatifs produits sur l'informatique et les technologies.