Lcd 16*2 affiche un seul ligne
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Lcd 16*2 affiche un seul ligne



  1. #1
    inviteac07b6ba

    Exclamation Lcd 16*2 affiche un seul ligne


    ------

    Bonjour, je vais fais un projet. il m'arche bien dans Isis.
    Mais en réalisation le LCD s'affiche un seul ligne,
    le pic 16F877A est bien programmer.
    SVP, aider moi car je dois présenter ce projet dans la plus proche
    Voila l'image du lcd

    -----
    Images attachées Images attachées  

  2. #2
    invite1d577638

    Re : Lcd 16*2 affiche un seul ligne

    Salut,

    Jette un oeil sur ce fil : http://forums.futura-sciences.com/el...aracteres.html

    Tu trouveras peut être une explication !

  3. #3
    invite5c0d525e

    Re : Lcd 16*2 affiche un seul ligne

    La photo est un peu (je suis gentil) floue mais j'ai l'impression que les broches inutilisées (db0 à db3 et probablement rw) ne sont pas reliées à la masse. Je commencerais déjà par ça.
    Ensuite ça peut aussi venir du programme (sorties mal configurées ou tempo non respectées).

  4. #4
    invite1f39ae77

    Re : Lcd 16*2 affiche un seul ligne

    Salut, il nous faudrait le schéma, et la partie de ton programme ou tu indique sur qu'elle broche est relié le LCD.

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

    Re : Lcd 16*2 affiche un seul ligne

    Voila le Schema Isis, Ares et le programme
    *****************
    -> Lien supprimé, pas de lien autorisés vers des serveurs externes

    Merci d'avance d'aider Moi SVP

    Merci de lire ici pour poster vos fichiers -> http://forums.futura-sciences.com/electronique/163927-conseils-poster-images-forum-pieces-jointes-pj-sabonner.html

  7. #6
    invite5637435c

    Re : Lcd 16*2 affiche un seul ligne

    De plus tout le monde n'ayant pas Isis, il serait judicieux de poster un jpeg de votre schéma si vous voulez être aidé par le plus grand nombre.

  8. #7
    invite5637435c

    Re : Lcd 16*2 affiche un seul ligne

    Bonjour,

    Votre afficheur en fait n'affiche rien du tout, la ligne noire du bas indique juste qu'il est sous tension.
    Votre problème semble (en attendant de voir votre schéma) que le controleur de votre afficheur n'est tout bonnement pas initialisé ou mal initialisé, donc il ne voit rien arriver sur les lignes d'adresses.
    @+

  9. #8
    inviteac07b6ba

    Re : Lcd 16*2 affiche un seul ligne

    Je suis désolé, car je suis nouveau de forums et je ne sais pas que les liens externes sont interdis
    Voila l'image du schéma et du programme
    Merci d'avance d'aider moi
    Images attachées Images attachées

  10. #9
    inviteac07b6ba

    Re : Lcd 16*2 affiche un seul ligne

    et Voila schéma en ares
    Images attachées Images attachées

  11. #10
    invitefaaca50b

    Re : Lcd 16*2 affiche un seul ligne

    Comme toujours, sur Isis ca fonctionne, mais pas dans la vraie vie. Il faut reverifier toute la chaine d'initialisation, et respecter les minima dans les delais, sous peine de mal initialiser l'afficheur.
    Mais un afficheur fonctionne parfaitement bien avec A0-A3 en l'air, par contre, la broche RW ne doit jamais etren l'air.

  12. #11
    invite5c0d525e

    Re : Lcd 16*2 affiche un seul ligne

    Je ne connais pas mikroC mais s'il fait appel à des bibliothèques il faut sans doute veiller à respecter le brochage et tu ne peux pas configurer les connections de l'afficheur à ta convenance. j'ai eu le même soucis avec Mikrobasic.

    La bonne configuration c'est celle là:

    sbit LCD_RS at RB4_bit;
    sbit LCD_EN at RB5_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 TRISB4_bit;
    sbit LCD_EN_Direction at TRISB5_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;

  13. #12
    invite5637435c

    Re : Lcd 16*2 affiche un seul ligne

    Oui on peut configurer les ports a sa convenance sous reserve d'utiliser la bonne librairie, puisqu'il y en a deux tout depend de la version de mikroC.
    Sur la derniere il n'y en a qu'une et en 4 bits seulement, c'est pas un progres....
    Donc moralite faite vos propres librairies ca evite ce genre de desagrements.

    Neanmoins pour votre probleme il faudrait poster un code et pas juste une photo floue tres peu pratique a analyser.

  14. #13
    inviteac07b6ba

    Re : Lcd 16*2 affiche un seul ligne

    Voila le code
    Code:
    int temp_res;
    char temp[12];
    unsigned int rtemp=10;
    char ntemp[10];
    
    sbit LCD_RS at RB2_bit;
    sbit LCD_EN at RB3_bit;
    sbit LCD_D4 at RB4_bit;
    sbit LCD_D5 at RB5_bit;
    sbit LCD_D6 at RB6_bit;
    sbit LCD_D7 at RB7_bit;
    
    sbit LCD_RS_Direction at TRISB2_bit;
    sbit LCD_EN_Direction at TRISB3_bit;
    sbit LCD_D4_Direction at TRISB4_bit;
    sbit LCD_D5_Direction at TRISB5_bit;
    sbit LCD_D6_Direction at TRISB6_bit;
    sbit LCD_D7_Direction at TRISB7_bit;
      Lcd_Cmd(_LCD_FIRST_ROW);
      void adc()
      {
      temp_res = ADC_Read(2);   // Get 10-bit results of AD conversion
      temp_res =  (temp_res *5)/10;
      IntToStr(temp_res,temp);
      }
      void print()
      {
    
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,1,"Temp Reel") ;
    
      lcd_out(2,1,"Cons temp") ;
    
      }
      void test()
      {
      if(temp_res>rtemp)
      {
      PORTC=0b00000101; //cool
      }
      if(temp_res<rtemp)
      {
     PORTC=0b00001010;//hot
      }
     if(temp_res==rtemp)
      {
     PORTC=0x00;
      }
      }
    
      void main()
      {
    
      TRISA =0b10;
      TRISD =0x11;
      TRISC =0x00;
    
      Lcd_Init();
      Lcd_Cmd(_LCD_CURSOR_OFF);
      delay_ms(5);
      ////////////////////////////////
      lcd_out(1,4,"Controle") ;
      lcd_out(2,1,"de Temperature") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Realise par") ;
      lcd_out(2,4,"Hadoudi") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Chouklati") ;
      lcd_out(2,4,"Farissi") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Encadre Par:") ;
      lcd_out(2,4,"Benboujemaa") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Souhane") ;
      lcd_out(2,4,"2011/2012") ;
      delay_ms(1500);
      print();
      do
        {
        IntToStr(rtemp,ntemp);
        lcd_out(2,10,ntemp);
        delay_ms(200);
        lcd_out(1,10,temp) ;
        delay_ms(200);
        test();
        if(portd.f1==0 && rtemp>0)
        {
             rtemp--;
    
             delay_ms(200);
         }
         if(portd.f0==0&&rtemp<=100)
         {
            rtemp++;
    
            delay_ms(200);
    
           }
            adc();
           }
        while(1);
    
         return;
        }

  15. #14
    invite5637435c

    Re : Lcd 16*2 affiche un seul ligne

    Merci de mettre les balises CODE quand vous postez un code

    L'usage est le suivant:

    [CODE]

    ici vous avez votre code
    .........
    {/CODE] il faut bien entendu remplacer la parenthese par [ sans quoi vous n'auriez pas pu voir ce texte.

  16. #15
    invite5637435c

    Re : Lcd 16*2 affiche un seul ligne

    Je doute que ce code fonctionnait avec Isis, ou alors il faut d'urgence le laisser tomber...

    Quelques corrections mais il me manque les affectations de vos ports (A, C et D), j'ai besoin de savoir ce que vous branchez dessus.
    Il faut prendre la bonne habitude de le renseigner dans le code.
    Dans votre schema 1 il y a des erreurs comme par exemple le point median du potentiometre a la masse... et le schema 2 est pour moi illisible car trop petit.
    Donc repostez le schema correspondant exactement a votre maquette a une echelle lisible.

    Dans un code il faut des commentaires, il n'y a rien d'explicite dans le votre.
    Verifiez et confirmez que la ligne R/W est bien reliee a la masse sur votre maquette.

    Code:
    int temp_res;
    char temp[12];
    unsigned int rtemp=10;
    char ntemp[10];
    sbit LCD_RS at RB2_bit;
    sbit LCD_EN at RB3_bit;
    sbit LCD_D4 at RB4_bit;
    sbit LCD_D5 at RB5_bit;
    sbit LCD_D6 at RB6_bit;
    sbit LCD_D7 at RB7_bit;
    sbit LCD_RS_Direction at TRISB2_bit;
    sbit LCD_EN_Direction at TRISB3_bit;
    sbit LCD_D4_Direction at TRISB4_bit;
    sbit LCD_D5_Direction at TRISB5_bit;
    sbit LCD_D6_Direction at TRISB6_bit;
    sbit LCD_D7_Direction at TRISB7_bit;
    
    //  Lcd_Cmd(_LCD_FIRST_ROW);  -> inutile et qu'est ce que ca fait la???
    
      void adc()
      {
      temp_res = ADC_Read(2);   // Get 10-bit results of AD conversion
      temp_res =  (temp_res *5)/10;  // il aurait ete preferable de declarer temp_res en float...
      IntToStr(temp_res,temp);
      }
      
      void print()
      {
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,1,"Temp Reel") ;
      lcd_out(2,1,"Cons temp") ;
      }
      
      void test()
      {
      if(temp_res>rtemp)
       {
       PORTC=0b00000101; //cool
       }
      if(temp_res<rtemp)
       {
       PORTC=0b00001010;//hot
       }
      if(temp_res==rtemp)
       {
       PORTC=0;
       }
      }
      void main()
      {
     // TRISA =0b10;  c'est quoi ca??
      TRISA = 0x10;
      PORTA = 0;
      TRISD = 0x11;
      PORTD = 0;
      TRISC = 0;
      PORTC = 0;
      Lcd_Init();
      Lcd_Cmd(_LCD_CURSOR_OFF);
      delay_ms(5);
      ////////////////////////////////
      lcd_out(1,4,"Controle") ;
      lcd_out(2,1,"de Temperature") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Realise par") ;
      lcd_out(2,4,"Hadoudi") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Chouklati") ;
      lcd_out(2,4,"Farissi") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Encadre Par:") ;
      lcd_out(2,4,"Benboujemaa") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Souhane") ;
      lcd_out(2,4,"2011/2012") ;
      delay_ms(1500);
      print();
      do
        {
        IntToStr(rtemp,ntemp);
        lcd_out(2,10,ntemp);
        delay_ms(200);
        lcd_out(1,10,temp) ;
        delay_ms(200);
        test();
        if(portd.f1==0 && rtemp>0)  
         {
          rtemp--;
          delay_ms(200);
         }
         if(portd.f0==0 && rtemp<=100)
           {
            rtemp++;
            delay_ms(200);
           }
           adc();
         }
         while(1);
      //   return;      inutile et on arrive jamais ici puisque le while(1) est au dessus...
        }

  17. #16
    inviteac07b6ba

    Re : Lcd 16*2 affiche un seul ligne

    Voila le code :
    Code:
    int temp_res;
    char temp[12];
    unsigned int rtemp=10;
    char ntemp[10];
    
    sbit LCD_RS at RB2_bit;
    sbit LCD_EN at RB3_bit;
    sbit LCD_D4 at RB4_bit;
    sbit LCD_D5 at RB5_bit;
    sbit LCD_D6 at RB6_bit;
    sbit LCD_D7 at RB7_bit;
    
    sbit LCD_RS_Direction at TRISB2_bit;
    sbit LCD_EN_Direction at TRISB3_bit;
    sbit LCD_D4_Direction at TRISB4_bit;
    sbit LCD_D5_Direction at TRISB5_bit;
    sbit LCD_D6_Direction at TRISB6_bit;
    sbit LCD_D7_Direction at TRISB7_bit;
      Lcd_Cmd(_LCD_FIRST_ROW);
      void adc()
      {
      temp_res = ADC_Read(2);   // Get 10-bit results of AD conversion
      temp_res =  (temp_res *5)/10;
      IntToStr(temp_res,temp);
      }
      void print()
      {
      delay_ms(5);
      Lcd_Cmd(_LCD_CLEAR);
      delay_ms(5);
      lcd_out(1,1,"Temp Reel") ;
      delay_ms(5);
      lcd_out(2,1,"Cons temp") ;
       delay_ms(5);
      }
      void test()
      {
      if(temp_res>rtemp)
      {
      PORTC=0b00000101; //cool
      }
      if(temp_res<rtemp)
      {
     PORTC=0b00001010;//hot
      }
     if(temp_res==rtemp)
      {
     PORTC=0x00;
      }
      }
    
      void main()
      {
    
      TRISA =0b10;
      TRISD =0x11;
      TRISC =0x00;
    
      Lcd_Init();
      delay_ms(50);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      delay_ms(50);
      ////////////////////////////////
      lcd_out(1,4,"Controle") ;
      delay_ms(50);
      lcd_out(2,1,"de Temperature") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Realise par") ;
      delay_ms(50);
      lcd_out(2,4,"Hadoudi") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Chouklati") ;
      delay_ms(50);
      lcd_out(2,4,"Farissi") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Encadre Par:") ;
      delay_ms(50);
      lcd_out(2,4,"Benboujemaa") ;
      delay_ms(1500);
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,4,"Souhane") ;
      delay_ms(50);
      lcd_out(2,4,"2011/2012") ;
      delay_ms(1500);
      print();
      do
        {
        IntToStr(rtemp,ntemp);
        lcd_out(2,10,ntemp);
        delay_ms(200);
        lcd_out(1,10,temp) ;
        delay_ms(200);
        test();
        if(portd.f1==0 && rtemp>0)
        {
             rtemp--;
    
             delay_ms(200);
         }
         if(portd.f0==0&&rtemp<=100)
         {
            rtemp++;
    
            delay_ms(200);
    
           }
            adc();
           }
        while(1);
    
         return;
        }

Discussions similaires

  1. [Brun] TV LCD Samsung LE32S86BD 82 cm : s'arrête seul...
    Par invite869d5051 dans le forum Dépannage
    Réponses: 3
    Dernier message: 01/10/2011, 20h32
  2. [Brun] TV LCD LG model:37LF66-ZE : affiche signal faible !
    Par inviteeaac2fd8 dans le forum Dépannage
    Réponses: 7
    Dernier message: 15/01/2011, 22h13
  3. [Brun] TV Funay LCD-C2007 : affiche une partie d'image !
    Par invitea4cbfb23 dans le forum Dépannage
    Réponses: 3
    Dernier message: 01/02/2010, 10h49
  4. [Brun] TV LCD Sony Bravia KDLl-37V55 : affiche mcode exposition magasin !
    Par invite09525229 dans le forum Dépannage
    Réponses: 2
    Dernier message: 22/10/2009, 08h40
  5. écran LCD s'éteint tout seul
    Par invite71395be6 dans le forum Matériel - Hardware
    Réponses: 15
    Dernier message: 12/01/2007, 02h17
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...