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

Afficher une valeur sur un LCD / AVR



  1. #1
    joey57

    Afficher une valeur sur un LCD / AVR


    ------

    Salut tout le monde

    Je galère à trouver la méthode pour afficher une valeur provenant de l'ADC.

    Donc ma valeur sur 10 bits va de 0 à 1024 pour une tension allant de 0 à 5V.
    Ca c'est OK j'ai réussi.

    Moi j'ai besoin de mesurer une tension allant de 0V à 15V avec un chiffre après la virgule ( donc peut être pas besoin de 10 bits ).

    Si j'ai ADCW = 900, cela devrait me donner une valeur de 4.1V mais comment faire pour séparer les chiffres ?

    Merci et bonne soirée.

    -----

  2. Publicité
  3. #2
    schizophrene

    Re : Afficher une valeur sur un LCD / AVR

    Bonsoir,

    Déjà, ta valeur analogique est convertie dans une plage allant de 0 à 1023 (et non 1024, pour un total de 1024 valeurs).

    Si tu fais une bête division, tu obtiens la précision: 5V / 1023 = 4.8mV (grosso modo)

    Si ta conversion analogique -> numérique te donne 900, 900*4.8mV = 4.4V (quasiment)

  4. #3
    joey57

    Re : Afficher une valeur sur un LCD / AVR

    Merci ! effectivement je prenais comme valeur 1024 ...

    Mais mon problème c'est comment afficher cette valeur ?

    Je voudrais l'obtenir sous la forme X,Y.

    X=4 , Y=4

  5. #4
    ftorama

    Re : Afficher une valeur sur un LCD / AVR

    Citation Envoyé par joey57 Voir le message
    Merci ! effectivement je prenais comme valeur 1024 ...

    Mais mon problème c'est comment afficher cette valeur ?

    Je voudrais l'obtenir sous la forme X,Y.

    X=4 , Y=4
    Tu prends la partie entière de ta variable, tu as le 4 des unités.

    Tu multiplies par 10, et tu fais un modulo 10, tu aurais tes dixièmes...

    Il reste à passer ça au simulateur pour s'assurer que les transtypages se font correctement et éventuellement les forcer.

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

    Re : Afficher une valeur sur un LCD / AVR

    Citation Envoyé par ftorama Voir le message
    Tu prends la partie entière de ta variable, tu as le 4 des unités.

    Tu multiplies par 10, et tu fais un modulo 10, tu aurais tes dixièmes...

    Il reste à passer ça au simulateur pour s'assurer que les transtypages se font correctement et éventuellement les forcer.
    Merci, j'ai essayé mais je ne comprends pas bien ton raisonnement...

    Si j'ai 4,2 par ex, je prends la partie entière donc 4 ca OK ca fonctionne.

    Ce que je multiplie par 10 c'est quoi ? 0,2 ?

  8. #6
    ftorama

    Re : Afficher une valeur sur un LCD / AVR

    Citation Envoyé par joey57 Voir le message
    Merci, j'ai essayé mais je ne comprends pas bien ton raisonnement...

    Si j'ai 4,2 par ex, je prends la partie entière donc 4 ca OK ca fonctionne.

    Ce que je multiplie par 10 c'est quoi ? 0,2 ?
    Effectivement, je suis allé un peu vite. C'est bien ça, tu fais la variable moins sa partie entière avant de faire la multiplication par 10.

    C'était pour voir si tu suivais

  9. Publicité
  10. #7
    schizophrene

    Re : Afficher une valeur sur un LCD / AVR

    En gros, tu multiplies le dixième pour avoir une valeur entière, considérée comme un nombre à part entière et indépendant du "4" (dans l'exemple).

  11. #8
    joey57

    Re : Afficher une valeur sur un LCD / AVR

    Oui oui je suis

    Mais ca fonctionne pas ... il m'affiche toujours " 0 " donc à mon avis quand il reste " 0,2 " par exemple, il doit pas comprendre le nombre à virgule.

    Du moins seul le premier chiffre bouge mais pas les dixièmes...

  12. #9
    ftorama

    Re : Afficher une valeur sur un LCD / AVR

    Citation Envoyé par joey57 Voir le message
    Oui oui je suis

    Mais ca fonctionne pas ... il m'affiche toujours " 0 " donc à mon avis quand il reste " 0,2 " par exemple, il doit pas comprendre le nombre à virgule.

    Du moins seul le premier chiffre bouge mais pas les dixièmes...
    Si ton compilateur transforme ton 0,2 en entier, tu as....0

    D'ou l'intérêt de passer au simulateur pour vérifier les transtypages et ajouter les casts qui vont bien....C'est avec des détails comme ça que l'on regrette le Pascal

  13. #10
    joey57

    Re : Afficher une valeur sur un LCD / AVR

    Voilà ça fonctionne !
    C'est quand tu m'a parlé de modulo que ca m'a fait " tilt "
    Merci

    Code:
      void affichage (void)
    {
    Val = ADCW / 20;
    
    unite = (Val  / 10) + 48;
    dixieme = (Val % 10) + 48;
    
    lcd_gotoxy(13,2);
    lcd_putsf(",");
    
    lcd_gotoxy(12,2);
    lcd_putchar(unite);
    
    lcd_gotoxy(14,2);
    lcd_putchar(dixieme);
    }
    Images attachées Images attachées  

  14. #11
    adelmed

    Re : Afficher une valeur sur un LCD / AVR

    j'ai besoin d'un prog qui afficher une valeur provenant de l'ADC
    mon code ne marche pas sur mickroc (mon pic est 16f876)
    /*
    * Project name:
    ADC_on_LCD (Displaying ADC result on LCD)
    * Copyright:
    (c) Mikroelektronika, 2005.
    * Description:
    This code demonstrates how to use library function ADC_read, and library
    procedures and functions for LCD display (4 bit interface).
    * Test configuration:
    MCU: PIC16F877A
    Dev.Board: EasyPIC4
    Oscillator: HS, 08.0000 MHz
    Ext. Modules: LCD
    SW: mikroC v5.0
    * NOTES:
    None.
    */
    // LCD module connections

    sbit LCD_RS at RC2_bit;
    sbit LCD_EN at RC3_bit;
    sbit LCD_D4 at RB0_bit;
    sbit LCD_D5 at RB1_bit;
    sbit LCD_D6 at RB2_bit;
    sbit LCD_D7 at RB3_bit;
    sbit LCD_RS_Direction at TRISC2_bit;
    sbit LCD_EN_Direction at TRISC3_bit;
    sbit LCD_D4_Direction at TRISB0_bit;
    sbit LCD_D5_Direction at TRISB1_bit;
    sbit LCD_D6_Direction at TRISB2_bit;
    sbit LCD_D7_Direction at TRISB3_bit;
    // End LCD module connections

    // End LCD module connections



    unsigned char ch;
    unsigned int t;
    char a[17], *tc;
    long tlong;

    void main() {
    INTCON = 0; // disable all interrupts
    LCD_Init(); // initialize (4-bit interface connection)
    Lcd_Cmd(_LCD_CLEAR); // CLEAR display
    Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
    OPTION_REG = 0x80;
    ADCON1 = 0x82; // configure VDD as Vref, and analog channels
    TRISA = 0xFF; // designate porta as input
    tc = "voltage:"; // assign text to string a
    while (1) {
    t = ADC_read(0); // get ADC value from 2nd channel
    LCD_Out(2,1,tc); // print string a on LCD, 2nd row, 1st column

    tlong = t * 5000; // use (int) multiplication instead of (long)
    asm { // and fill the upper two bytes manually
    MOVF STACK_2,W
    MOVWF _tlong+2
    MOVF STACK_3,W
    MOVWF _tlong+3
    }
    t = tlong >> 10;

    ch = t / 1000; // prepare value for diplay
    LCD_Chr(2,9,48+ch); // write ASCII at 2nd row, 9th column
    LCD_Chr_CP('.');

    ch = (t / 100) % 10;
    LCD_Chr_CP(48+ch);

    ch = (t / 10) % 10;
    LCD_Chr_CP(48+ch);

    ch = t % 10;
    LCD_Chr_CP(48+ch);
    LCD_Chr_CP('V');

    Delay_ms(1);
    }
    }//~!

  15. #12
    pableur

    Re : Afficher une valeur sur un LCD / AVR

    Bonjour
    Je vois bien que la discussion a été arrêter depuis longtemps mais j'ai aussi un problème avec un atmega et un écran LCD, je n'arrive pas a afficher une variable.
    Pour la fonction : lcd_putchar(unite);
    en quoi faut-il déclarer unite ? en int, char ....

  16. Publicité
  17. #13
    pableur

    Re : Afficher une valeur sur un LCD / AVR

    Bonjour
    Je vois bien que la discussion a été arrêter depuis longtemps mais j'ai aussi un problème avec un atmega et un écran LCD, je n'arrive pas a afficher une variable.
    Pour la fonction : lcd_putchar(unite);
    en quoi faut-il déclarer unite ? en int, char ....

Discussions similaires

  1. afficher la valeur d'une variable sur un lcd
    Par kevin8z dans le forum Électronique
    Réponses: 12
    Dernier message: 19/01/2011, 19h48
  2. Afficher sur une dalle LCD a partir d'un signal DVI VGA RCA
    Par Natures dans le forum Électronique
    Réponses: 1
    Dernier message: 15/11/2009, 18h47
  3. Afficher sur un LCD des données séries, RS232 vers LCD
    Par crocu dans le forum Électronique
    Réponses: 0
    Dernier message: 27/03/2009, 13h32
  4. Afficher la valeur d'une variable sur un lcd
    Par cotendingue dans le forum Électronique
    Réponses: 5
    Dernier message: 27/03/2008, 19h02
  5. Afficher une image sur un écran LCD
    Par Virtuaprod dans le forum Électronique
    Réponses: 5
    Dernier message: 05/06/2007, 22h28
Découvrez nos comparatifs produits sur l'informatique et les technologies.