ecran lcd
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

ecran lcd



  1. #1
    invite9157dec4

    ecran lcd


    ------

    salut a tous,
    je suis nouveau ds le domaine de la programmation des PIC, alors j'ai une question:

    j'ai pu afficher un entier ds un ecran lcd mais je voudrais que cette entier change lorsque j'appuie sur le bouton poussoir.

    merci pour votre reponse!

    -----

  2. #2
    invitee351bd95

    Re : ecran lcd

    Dans la theorie il suffit de regarder en permanence l'etat de ton poussoir et d’incrémenter ton entier quand tu a un changement d'etat
    Ou le cablé sur un entré qui genere une interuption sur front.

    Dans la pratique attention aux rebonds , il faut ABSOLUMENT les filtré par soft ou par un filtre RC.

  3. #3
    HAYAC

    Re : ecran lcd

    Bonjour,

    Première question, "
    je voudrais que cette entier change
    " en incrémental, Aléatoirement, ... ?
    Deuxième question, quel sont vos outils de développements (Hard, Soft, Langage) ?

    Pour ce qui est de l'anti rebonds effectivement il est nécessaire, pour ce qui est de la détection de l'action sur le poussoir il y à plusieurs possibilités dont les interruptions, tout dépends de l'approche choisie.

    Cordialement,

  4. #4
    invite9157dec4

    Re : ecran lcd

    pour les outils que j'utilise:

    isis proteus
    Mikorc

    j'espere avoir repondu avos question.
    concesrnant le bouton pousoir, je voudrais que l'entier qui est deja affiche dans l'ecran soit incrementer a chaque appuie sur le bouton.
    c ca qui me blocs...

    cordialement

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

    Re : ecran lcd

    Bonjour,

    Tu fais un test (Pour savoir si on appuyé sur le BP) puis dans la boucle de test, tu fais tes opérations sur l'entier que tu veux changer et à la fin, faut que tu utilises la fonction intToStr de mikroC afin de changer ton entier en une chaine de caractères qui sera par la suite affichée sur le LCD.

    Bon courage

  7. #6
    invite9157dec4

    Re : ecran lcd

    tout dabor merci de votre aide,

    j'ai essaye avec la structure inttostr ca affiche now mais j'ai tjr des problem pour incrementation de l'entier sur l'ecran.
    voici le code que j'utilise, je ne sais pas si vous pouvez m'aider?

    Code:
    sbit LCD_RS at RB0_bit;
    sbit LCD_EN at RB1_bit;
    sbit LCD_D4 at RB2_bit;
    sbit LCD_D5 at RB3_bit;
    sbit LCD_D6 at RB4_bit;
    sbit LCD_D7 at RB5_bit;
    
    // Pin direction
    sbit LCD_RS_Direction at TRISB0_bit;
    sbit LCD_EN_Direction at TRISB1_bit;
    sbit LCD_D4_Direction at TRISB2_bit;
    sbit LCD_D5_Direction at TRISB3_bit;
    sbit LCD_D6_Direction at TRISB4_bit;
    sbit LCD_D7_Direction at TRISB5_bit;
    
    bit oldstate;
    char *Rame = "M101";
    int KM= 10000 ;
    char *Kilo[7];
    
    void main()
    {
         Lcd_Init();
         Lcd_cmd(_Lcd_clear);
         Lcd_cmd(_Lcd_cursor_off);
         intToStr(KM,Kilo);
    
         Lcd_out(1,1,Rame);
     PORTA=0;
      TRISA0_bit = 1;                                                      
      TRISB = 0x00;                                                             
      PORTB = 0xAA;                                                                
      oldstate = 0;
    do {
               if (Button(&PORTA, 0, 1, 1))                                        
               {
    
                  oldstate = 1;                                                    
               }
               if (oldstate && Button(&PORTA, 0, 1, 0))                             
               {
    
                  PORTB= ~PORTB;
                  intToStr(KM,Kilo);
                  KM=Kilo+1;
                  Lcd_out(2,1,Kilo);
                  oldstate = 0;
               }
       }
           while(1);
    
    }
    merci de bien vouloir m'aider!
    Dernière modification par Antoane ; 19/02/2015 à 08h12. Motif: Ajout balises Code.

  8. #7
    invite2d7c3f34

    Re : ecran lcd

    Bonjour,

    Essaye de faire l'incrémentation avant le IntToStr. Bon courage.

  9. #8
    invite9157dec4

    Re : ecran lcd

    merci Lol92, j'ai pu realiser le circuit et la simu fonctionne a merveille

  10. #9
    invite2d7c3f34

    Re : ecran lcd

    Citation Envoyé par bhl Voir le message
    merci Lol92, j'ai pu realiser le circuit et la simu fonctionne a merveille
    Y a pas de quoi

  11. #10
    invite9157dec4

    Re : ecran lcd

    salut a tous,

    pouvez vous m'aider sur un point svp

    voila je fait une boucle dans la quelle une data et une heure comme je ne metrise pas les composant qui affiche automatiquement ca alors les secondes s'incremente avec un delay de 1000ms, mais en meme temps il iya un bouton poussoir qui controle l'incrementation du kilometrage,
    le probleme que je rencontre c'est que quand je clic sur le bp, je dois laisser mon doigt pendant une seconde pour que le km s'incremente, mais quand je mets pas de delay sur les seconde l'incrementation du km est normale.

    alors je c pas si quelqu'un peut m'aider avec ce probleme.

    voici le code:



    Code:
    sbit LCD_RS at RB0_bit;
    sbit LCD_EN at RB1_bit;
    sbit LCD_D4 at RB2_bit;
    sbit LCD_D5 at RB3_bit;
    sbit LCD_D6 at RB4_bit;
    sbit LCD_D7 at RB5_bit;
    
    // Pin direction
    sbit LCD_RS_Direction at TRISB0_bit;
    sbit LCD_EN_Direction at TRISB1_bit;
    sbit LCD_D4_Direction at TRISB2_bit;
    sbit LCD_D5_Direction at TRISB3_bit;
    sbit LCD_D6_Direction at TRISB4_bit;
    sbit LCD_D7_Direction at TRISB5_bit;
    
    char *Heure = "Hr:";
    char *Jour = "Jr:";
    char *Numram = "Num:";
    char *Kilometrage = "KM:";
    char *Rame = "M101";
    
    int KM= 10000 ;
    char *Kilo[10];
    int Hr= 0;
    char *heu[10];
    int Minute=0;
    char *Minu[10];
    unsigned int Seconde=3;
    char *seco[10];
    int da=30;
    int totalda;
    char *days[10];
    int m=12;
    char *mois[10];
    int y=2015;
    char *years[10];
    bit oldstate;
     void delay_ms(const unsigned long time_in_ms);
    void main() 
    {
      PORTD=0;
      TRISD0_bit = 1;
    
      TRISB = 0x00;
      PORTB = 0xAA;
      oldstate=0;
      Lcd_Init();
      Lcd_cmd(_Lcd_CLEAR);
      Lcd_cmd(_Lcd_CURSOR_OFF);
    
      while(1)
     {
     
      Lcd_out(1,5,Rame);
      Lcd_out (1,1,"Num:");
      inttostr(KM,Kilo);
      Lcd_out (2,1,"KM:");
      Lcd_out(2,5,Kilo);
      
      inttostr(da,days);
      inttostr(m,Mois);
      inttostr(y,years);
      inttostr(Hr,heu);
      inttostr(Minute,Minu);
      inttostr(Seconde,seco);
    
      Lcd_out(3,9,years);
      Lcd_out(3,10,"/");
      Lcd_out(3,4,mois);
      Lcd_out(3,7,"/");
      Lcd_out(3,1,days);
      Lcd_out (3,1,"Jr:");
    
      Lcd_out(4,7,Seco);
      Lcd_out(4,10,":");
      Lcd_out(4,4,Minu);
      Lcd_out(4,7,":");
      Lcd_out(4,1,Heu);
      Lcd_out(4,1,"Hr:");
    
    
          if (seconde<60)
           {
             Seconde=seconde+1;
             delay_ms(1000);
    
           }
          if (Seconde>59)
           {
             Seconde=0;
             Minute=Minute+1;
           }
          if (Minute>59)
           {
              Minute=0;
              Hr=Hr+1;
           }
          if (Hr>23)
           {
             Hr=0;
             da=da+1;
           }
            if (m>12)
           {
             m=1;
             y=y+1;
           }
          if (m==1)
           {
             totalda=31;
           }
          else if (m==3)
           {
             totalda=31;
           }
          else if (m==5)
           {
             totalda=31;
           }
          else if (m==7)
           {
             totalda=31;
           }
          else if (m==8)
           {
             totalda=31;
           }
          else if (m==10)
           {
             totalda=31;
           }
          else if (m==12)
           {
             totalda=31;
           }
          else if (m==4)
           {
             totalda=30;
           }
          else if (m==6)
           {
             totalda=30;
           }
          else if (m==9)
           {
             totalda=30;
           }
          else if (m==11)
           {
             totalda=30;
           }
          else if (m==2)
           {
             totalda=28;
           }
          if (da>totalda)
           {
             da=1;
             m=m+1;
           }
           
            if (Button(&PORTD, 0, 1, 1))
                {
                    oldstate = 1;
                }
            if (oldstate && Button(&PORTD, 0, 1, 0))
                {
                    KM=KM+1;
                    inttostr(KM,Kilo);
                    oldstate=0;
                }
    
      }
    }
    Dernière modification par Antoane ; 22/02/2015 à 22h42. Motif: Ajout balises code.

Discussions similaires

  1. Echange écran sous-toiture par écran isolant thermo-réfléchissant ? Prix ?
    Par invite995b1ceb dans le forum Bricolage et décoration
    Réponses: 0
    Dernier message: 28/09/2014, 18h15
  2. HELP! capture d'écran (impr.ecran) ne marche pas sur gmail mais RAS pour word-paint-etc
    Par invite30312cb5 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 16
    Dernier message: 14/06/2013, 14h11
  3. Mon nouvel ordinateur ne veut pas de mon tout grand écran plat comme second écran
    Par invite234d9cdb dans le forum Matériel - Hardware
    Réponses: 14
    Dernier message: 20/07/2010, 20h39
  4. [Brun] Ecran PHILIPS 170S: extinction de l'ecran apres une vingtaine de minutes
    Par inviteb47b8ab9 dans le forum Dépannage
    Réponses: 3
    Dernier message: 08/03/2009, 20h22
  5. utilisation d'un lcd en clone comme 2eme ecran et impossible d'avoir une image ecran
    Par invite4de9a5ac dans le forum Matériel - Hardware
    Réponses: 6
    Dernier message: 10/04/2008, 15h06
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...