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

Afficheur LCD mikroC



  1. #1
    Tidus1707

    Afficheur LCD mikroC


    ------

    Bonjour,
    Dans le cadre d'un projet "télémètre à ultrason" j'ai besoin d'afficher sur un écran LCD une distance calculée auparavant.
    J'aimerai pour cela créer une fonction afficher où l'on rentre ce que l'on veut afficher. J'ai consulté l'aide de MikroC et voilà mon code :
    Code:
    int dist = 3400;
         Lcd_Init();                        // Initialisation
         Lcd_Cmd(_LCD_CLEAR);               // Efface
         Lcd_Cmd(_LCD_CURSOR_OFF);          // On éteint le curseur
    
         Lcd_Out(1,1,dist);
         delay_ms(10000);
    J'aimerai bien afficher la VALEUR de dist.
    Évidemment on pourrait écrire Lcd_Out(1,1,"3400"); mais notre valeur de dist est ma valeur calculée par une autre fonction.

    C'est un problème tout bête mais je tourne en rond.
    En espérant avoir été clair
    Merci d'avance

    -----

  2. Publicité
  3. #2
    amoniaque

    Re : Afficheur LCD mikroC

    Hello,

    Tu peux utiliser une chaîne de caractères avec sprintf() et y formater ta valeur.

    A+

  4. #3
    Tidus1707

    Re : Afficheur LCD mikroC

    Cette fonction est elle vraiment compatible avec les PIC et les écrans LCD ? Ce n'est pas uniquement pour afficher dans la console ?
    Merci

  5. #4
    amoniaque

    Re : Afficheur LCD mikroC

    Citation Envoyé par Tidus1707 Voir le message
    Cette fonction est elle vraiment compatible avec les PIC et les écrans LCD ? Ce n'est pas uniquement pour afficher dans la console ?
    Merci
    Hi,

    Elle permet de copier une chaîne dans un tableau de char dans laquelle il peut y avoir des variable que tu formateras au style voulu : http://www.cplusplus.com/reference/c...stdio/sprintf/.

    ++

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

    Re : Afficheur LCD mikroC

    Je ne sais pas si cette fonction est implantée dans les librairies pour PIC.

    Sinon, pour une fois ce n'est pas compliqué de réinventer la roue :
    Si ton nombre a 4 chiffres maximum, par exemple 1234 :

    Lcd_Out(1,1,dist/1000); // Affiche 1
    Lcd_Out(1,1,dist/100 - 10*(dist/1000)); // Affiche 12 - 10*1 = 2
    etc...

    Si ta fonction n'attend qu'un char alors que tu as un chiffre tu fais :
    int chiffre = 7;
    Lcd_Out(1, 1, '0' + chiffre);

  8. #6
    amoniaque

    Re : Afficheur LCD mikroC

    Citation Envoyé par Blue Sn4ke Voir le message
    Je ne sais pas si cette fonction est implantée dans les librairies pour PIC.
    Hi,

    Elle est incluse dans la stdio.h qui est juste une librairie que tu trouves partout en C et même dans les PIC (personnellement utilisée sur du PIC18 et du MSP430).

    Par contre si "1,1" de Lcd_Out() correspond bien à la ligne/colonne de l'afficheur alors à chaque passage tu écrases l'ancien caractère, ne pas oublier d'incrémenter à la colonne suivante.
    Et puis si par exemple tu avais envie d'afficher ta variable en hexa', ou en binaire , en signé ou non , en float avec 3 chiffres significatifs ...? Merci sprintf ! () .

    ++

  9. Publicité
  10. #7
    Tidus1707

    Re : Afficheur LCD mikroC

    Merci d'abord pour vos réponses.

    Je pense utilisé sprintf car j’apprends le C donc de nouvelles fonctions c'est toujours bon à prendre.
    Par contre on dirait que mikroC ne la connait pas. Faut il rajouter une librairie ? Et ensuite je ne vois pas comment utiliser la fonction même s'il y a un exemple sur la page que vous m'avez envoyé. Pourriez vous me donner un exemple ? Je dois quand même utiliser Lcd_Out après non ?

    Merci

  11. #8
    amoniaque

    Re : Afficheur LCD mikroC

    Citation Envoyé par Tidus1707 Voir le message
    Merci d'abord pour vos réponses.

    Je pense utilisé sprintf car j’apprends le C donc de nouvelles fonctions c'est toujours bon à prendre.
    Par contre on dirait que mikroC ne la connait pas. Faut il rajouter une librairie ? Et ensuite je ne vois pas comment utiliser la fonction même s'il y a un exemple sur la page que vous m'avez envoyé. Pourriez vous me donner un exemple ? Je dois quand même utiliser Lcd_Out après non ?

    Merci
    Hi,

    Regardes dans l'aide de ton compilateur, il devrait t'aider à propos du sprintf.

    Sinon pour un exemple basique :
    Code:
    char str[16]; 
    float fl=12.34; 
    
    void main () 
    { 
    sprintf(str,"Value is: %f ",fl);
    
    Lcd_Out(1,1,str);
    }
    Ça affichera "Value is: 12.34".
    Le principe c'est que la valeur de fl est mise à la place de "%" au format flottant ("f") dans la chaîne "Value is: " copié dans le tableau str.

  12. #9
    Tidus1707

    Re : Afficheur LCD mikroC

    Oki excelente cette fonction. Merci beaucoup pour votre aide je vais tester ca sur ISIS en tout cas c'est super sympa. Vous travaillez dans l'informatique ?
    Bonne journée

  13. #10
    amoniaque

    Re : Afficheur LCD mikroC

    Citation Envoyé par Tidus1707 Voir le message
    Oki excelente cette fonction. Merci beaucoup pour votre aide je vais tester ca sur ISIS en tout cas c'est super sympa. Vous travaillez dans l'informatique ?
    Bonne journée
    À voir : http://www.mikroe.com/pdf/mikroc/mikroc_manual.pdf, page 364.

    Je travaille dans l'électronique.

  14. #11
    Tidus1707

    Re : Afficheur LCD mikroC

    Arf il ne connais pas la fonction :s. J'ai lu ca sur le doc que vous m'avez envoyé : sprintf function is not supported for p12 and p16 PIC MCU families.

    Donc à mon avis ... c'est foutu non ?

  15. #12
    Blue Sn4ke

    Re : Afficheur LCD mikroC

    Citation Envoyé par amoniaque Voir le message
    Hi,

    Elle est incluse dans la stdio.h qui est juste une librairie que tu trouves partout en C et même dans les PIC (personnellement utilisée sur du PIC18 et du MSP430).

    Par contre si "1,1" de Lcd_Out() correspond bien à la ligne/colonne de l'afficheur alors à chaque passage tu écrases l'ancien caractère, ne pas oublier d'incrémenter à la colonne suivante.
    Et puis si par exemple tu avais envie d'afficher ta variable en hexa', ou en binaire , en signé ou non , en float avec 3 chiffres significatifs ...? Merci sprintf ! () .

    ++
    Salut,
    en effet sprintf est incluse dans stdio.h. J'avais suggéré l'idée d'isoler chaque chiffre et de les écrire un à un pour éviter au PIC d'exécuter cette fonction qui est probablement assez lourde par rapport aux ressources dont il dispose.

    Sinon oui il faut bien incrémenter la colonne à chaque fois, bien sûr

    Edit: mais je reconnais qu'il est nettement plus simple d'écrire un entier non signé en décimal qu'un float avec x chiffres significatifs

  16. Publicité
  17. #13
    Tidus1707

    Re : Afficheur LCD mikroC

    Pas d'idée ? C'est bizarre quand même. Si vous avez une illumination éclairer moi ^^. Bonne soirée à vous .

  18. #14
    amoniaque

    Re : Afficheur LCD mikroC

    Citation Envoyé par Tidus1707 Voir le message
    Pas d'idée ? C'est bizarre quand même. Si vous avez une illumination éclairer moi ^^. Bonne soirée à vous .
    Dur ... Va falloir que tu fasses comme Blue Sn4ke a dit alors . Comme quoi les bonnes réponses sont toujours les premières !

  19. #15
    Tidus1707

    Re : Afficheur LCD mikroC

    Mais c'est intéressant quand même merci

  20. #16
    Tidus1707

    Re : Afficheur LCD mikroC

    J'ai trouvé .
    Une fonction magique qui convertit int en string : IntToString ^^.
    C'est un peu le même rôle que sprintf non ?
    Et ca affiche tout nickel.
    Merci à vous deux en tout cas
    Bonne semaine

  21. #17
    Tidus1707

    Re : Afficheur LCD mikroC

    J'ai trouvé .
    Une fonction magique qui convertit int en string : IntToString ^^.
    C'est un peu le même rôle que sprintf non ?
    Et ca affiche tout nickel.
    Merci à vous deux en tout cas
    Bonne semaine

  22. #18
    amoniaque

    Re : Afficheur LCD mikroC

    Citation Envoyé par Tidus1707 Voir le message
    J'ai trouvé .
    Une fonction magique qui convertit int en string : IntToString ^^.
    C'est un peu le même rôle que sprintf non ?
    Et ca affiche tout nickel.
    Merci à vous deux en tout cas
    Bonne semaine
    Hello,

    Très certainement identique, et tu as le choix du type de formatage ? En hexa, décimal, flottant, binaire...?
    C'est une fonction de chez MikroC ?

    ++

  23. Publicité
  24. #19
    Thetimax

    Re : Afficheur LCD mikroC

    Bonjour!

    Hello,

    Très certainement identique, et tu as le choix du type de formatage ? En hexa, décimal, flottant, binaire...?
    C'est une fonction de chez MikroC ?

    ++
    Oui effectivement elle est presque identique a la difference que l'on ne peut pas formater l'affichage (comme sprintf).

    Elle fonctionne ainsi :

    Code:
    int input;
    char output[10];
    
    IntToStr(input, output);
    Lcd_Out(1,1, output);
    Il existe aussi:

    ByteToStr
    ShortToStr
    WordToStr
    IntToStr
    LongToStr
    LongWordToStr
    FloatToStr

    Voila...

    (Merci Vede )

    Ps: elle est beaucoup moins gourmande en ROM que la fonction sprintf

Sur le même sujet


Discussions similaires

  1. Afficheur LCD
    Par wiwi777 dans le forum Électronique
    Réponses: 2
    Dernier message: 22/03/2011, 17h24
  2. mikroC PIC16F688 et écran LCD 2x16
    Par mic-elec dans le forum Électronique
    Réponses: 0
    Dernier message: 17/01/2010, 16h25
  3. programation LCD 4bits avec mikroC
    Par Bernibernouille dans le forum Électronique
    Réponses: 1
    Dernier message: 24/10/2009, 13h43
  4. afficheur lcd en afficheur 7 segment
    Par tictic01 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/02/2008, 10h43
  5. CAN et afficheur LCD
    Par chefi dans le forum Électronique
    Réponses: 1
    Dernier message: 15/07/2007, 15h33
Découvrez nos comparatifs produits sur l'informatique et les technologies.