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

Comment programmer un LCD avec le pic 16F877 ??



  1. #1
    taeway

    Comment programmer un LCD avec le pic 16F877 ??


    ------

    SVP mes amis comment peut je programmer un LCD pour que je peut afficher une donnée
    svp donner moi aussi sa datasheet de ce LCD et comment peut je l'utiliser au niveau de CCS et au niveau de ISIS
    SVP mes amis aider moi par des photos ou des exemples simples pour que je puise comprendre .

    Merciiiiiiiiiiiiiii d'avance mes amissssssssss.

    -----

  2. Publicité
  3. #2
    Gérard

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    As- tu demandé à ton ami Google ?

  4. #3
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Merci pour cette bonne réponse.

    svp je veux des sérieux

  5. #4
    Gérard

    Angry Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Citation Envoyé par taeway Voir le message
    Merci pour cette bonne réponse.

    svp je veux des sérieux
    ET CA : http://www.google.com/search?client=...UTF-8&oe=UTF-8

    C'EST PAS DU SERIEUX ????????

    Toi aussi il faut te mâcher le travail !

  6. #5
    mortaurat

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Salut,
    tout d'abord on ne programme pas un LCD, on le PILOTE.
    j'ai codé il y a quelques temps une librairie sous CCS pour le pilotage d'un LCD 2x20, voici le source:
    Code:
    ///////////////////////////////////////////////////////////////////////////
    ////                             LCD.C                                 ////
    ////                 Driver for common LCD modules                     ////
    ////                                                                   ////
    ////  lcd_init()   Must be called before any other function.           ////
    ////  lcd_display(c)  Will display c on the LCD.                       ////
    ////  lcd_clear ()  clear lcd display                                  ////
    ////  lcd_instruction(instruct)  send an instruction to lcd display    ////
    ////  lcd_data(data)  send a data to lcd display                       ////
    ////  void lcd_nl(); go to the next line                               ////
    ////  void lcd_home(); cursor back to home                             ////
    ///////////////////////////////////////////////////////////////////////////
    
    // As defined in the following structure the pin connection is as follows:
    //     E0 enable
    //     E2  rs
    //     E1  rw  
    //     D0  DATA0
    //     D1  DATA1
    //     D2  DATA2
    //     D3  DATA3
    //     D4  DATA4
    //     D5  DATA5
    //     D6  DATA6
    //     D7  DATA7
    //   To modify data pin connection, replace output_d by output_x
    
    //----------------------------------PIN------------------------
    #define rs PIN_E2
    #define rw PIN_E1
    #define e  PIN_E0
    
    
    void lcd_init();
    void lcd_clear ();
    void lcd_display(char*);
    void lcd_data(char);
    void lcd_instruction (char);
    void lcd_nl();
    void lcd_home();
    
    void lcd_init() {
        delay_ms(30);//le lcd se reveille
        output_low(rs);//command
        output_low(rw);//write
        output_low(e);//disable
        lcd_instruction(0x33);//LCD en mode 8 bits
        lcd_instruction(0x38);//mode 8 bits, 2 lignes, caractères 5x7
        lcd_instruction(0x0c);//pas de curseur
        lcd_instruction(0x06);//ecriture de gauche vers la droite
        lcd_instruction(0x01);//clear lcd
        delay_ms(10);
    }
    
    void lcd_display(char *data)
    {
       while(*data !='\0')
       {
       if(*data=='\n') lcd_nl();
       else lcd_data(*data);
       data++;
       }
    }
    
    void lcd_instruction (char x)
    {
       output_low(rs);                         //command. 
       output_low(rw);                         //write not read.  
       output_d(x);                      //data to bus.    
       output_high(e);                          //enable.
       delay_us(1);
       output_low(e);                         //disable. 
       delay_ms(10); //lcd busy protect
    }
    
    void lcd_data (char x)
    {  
       output_high(rs);                        //data  
       output_low(rw);                        //write not read.   
       output_d(x);                     //data to bus.       
       output_high(e);                         //enable. 
       delay_us(1);
       output_low(e);                         //disable. 
       delay_ms(10); //lcd busy protect
    }
    
    void lcd_clear ()
    {
       output_low(rs);                         //command. 
       output_low(rw);                         //write not read.  
       output_d(0x01);                      //data to bus.    
       output_high(e);                          //enable. 
       delay_us(1);
       output_low(e);                         //disable. 
       delay_ms(5); //lcd busy protect
    }
    
    void lcd_nl()
    {
    lcd_instruction(0xC0); //command to write to the second line
    }
    
    void lcd_home()
    {
    lcd_instruction(0x02);//comand to go back to home
    }
    voila si ca peut t'aider

  7. A voir en vidéo sur Futura
  8. #6
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    j'ai fait ce petit programme mais je sais pas pourquoi le LCD reste initialisé malgré que je veux qu'il m'affiche ready sur l'écran

    #include <16F877.h>
    #use delay(clock=4000000)
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #include <lcd.c>
    void main()
    {
    lcd_init()

    delay_ms(30);//le lcd se reveille
    printf(lcd_putc,"\Ready...\n") ; //affiché ready dans l'ecran de lcd
    }
    et voici quelque photos a partir de ISIS

    .
    Images attachées Images attachées
    Dernière modification par gienas ; 14/02/2010 à 13h41. Motif: Balises img supprimées car inutiles

  9. Publicité
  10. #7
    mortaurat

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Juste un indice:
    // RE0 enable
    // RE2 rs
    // RE1 rw
    // RD0 DATA0
    // RD1 DATA1
    // RD2 DATA2
    // RD3 DATA3
    // RD4 DATA4
    // RD5 DATA5
    // RD6 DATA6
    // RD7 DATA7
    Ton lcd n'est pas correctement branché, il fonctionne en mode 8bits, pas en 4 bits.

    deplus si tu utilise ma librairie, printf(lcd_putc,"\Ready...\n") ; n'existe pas.
    il faut utiliser lcd_display();

    essaye:
    Code:
    void main()
    {
    char ready="ready";
    lcd_init()
    lcd_display(ready);
    }

  11. #8
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    j'ai corrigger le fichier ISIS

    mais si j'exécute le programme il me montre beaucoup des erreurs
    excuser moi si j'ai beaucoup vous déranger mais je suis débutant

    #include <16F877.h>
    #use delay(clock=4000000)
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #include <lcd.c>
    void main()
    {
    char ready="ready";
    lcd_init()
    lcd_display(ready);
    }
    Images attachées Images attachées

  12. #9
    mortaurat

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Bonjour,
    j'ai fait une petite erreur, ta variable ready doit être un tableau.
    Donc tu dois faire char ready[]="ready";

    Ensuite tu dois faire #include "lcd.c" et non #include <lcd.c>, n'oublie pas de mettre ma librairie (sous le nom lcd.c) dans le dossier de ton fichier main.

    voici deux screen shot.
    Images attachées Images attachées

  13. #10
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    le pb persiste

    j'ai pas compris
    n'oublie pas de mettre ma librairie (sous le nom lcd.c) dans le dossier de ton fichier main.

  14. #11
    mortaurat

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    je ne vois pas comment expliquer plus clairement.
    Voici un screenshot.
    Images attachées Images attachées

  15. #12
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Citation Envoyé par mortaurat Voir le message
    je ne vois pas comment expliquer plus clairement.
    Voici un screenshot.

    svp mon ami j'ai tout essayer mais tjr il n'a pas fonctionner
    pouvais vous me donner les fichiers .c .hex .cof .... de votre essai qu'il a fonctionner
    vous pouvais me donner ces fichier en un seul fichier compréssé

    j'attend votre aide car vraiment j'ai essayer tout

    tout un jour pour fonctionner un lcd simple :'(

  16. Publicité
  17. #13
    mortaurat

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    j'ai fait le code pour un 16f877A, donc pour la simulation sous isis, met un 16f877A.
    Fichiers attachés Fichiers attachés

  18. #14
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Citation Envoyé par mortaurat Voir le message
    j'ai fait le code pour un 16f877A, donc pour la simulation sous isis, met un 16f877A.
    yééééééééy votre programme a fonctionné )

    vraiment mon ami tu es trés gentil et je suis trés heureux car vous m'avez résolut mon problème qui m'a parait difficile

    je vous remercie mon "Frère" pour votre aide
    svp j'ai quelques questions concernant la structure :

    1) pour cette instruction
    #include "E:\Documents and Settings\Administrateur\Bureau \test\main.h"
    quel est son effet exactement ?
    et comment avez vous crée un fichier portant le même nom que votre programme "main" mais avec une extension .h
    parce-que si je crée un nouveau projet et je l'enregistre il enregistre que les extension suivantes : .c , .cof , esym , .hex , .lst , .PJT , .sta , , .sym et .tre .
    donc il ne peut pas afficher cette extension .h pourquoi mon frére ?

    2) comment peux je afficher une chaine de caractère a partir d'une position donnée de mon LCD par exemple je veux que mon message sera afffiché a partir de la colonne 3 ou a partir de ligne 2 ?

    merciiiiiiiiiiii d'avance.

  19. #15
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    3) lcd.c j'ai pas trouvée cette code source dans mon logiciel est ce que je peux utiliser lcd.c que vous m'avez envoyer chaque fois que je veux utiliser un LCD est ce que je dois changer sa structure ou non si je change par exemple les port de d vers c ?

  20. #16
    mortaurat

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Pour aller à la ligne, c'est la fonction lcd_nl();
    Je n'est pas rendu possible le fait de pouvoir ecrire à partir d'une case donnée, mais tu peut ruser en fesant:
    Code:
    char buffer[]="   ton message";
    lcd_nl();
    lcd_display(buffer);
    pour
    Code:
    #include "E:\Documents and Settings\Administrateur\Bureau \test\main.h"
    c'est juste l'endroit où etait mon fichier main.h, ca n'a aucune importance.

  21. #17
    mortaurat

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Citation Envoyé par taeway Voir le message
    3) lcd.c j'ai pas trouvée cette code source dans mon logiciel est ce que je peux utiliser lcd.c que vous m'avez envoyer chaque fois que je veux utiliser un LCD est ce que je dois changer sa structure ou non si je change par exemple les port de d vers c ?
    Oui biensur, tout est expliqué dans la librairie.

  22. #18
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Citation Envoyé par mortaurat Voir le message
    Pour aller à la ligne, c'est la fonction lcd_nl();
    Je n'est pas rendu possible le fait de pouvoir ecrire à partir d'une case donnée, mais tu peut ruser en fesant:
    Code:
    char buffer[]="   ton message";
    lcd_nl();
    lcd_display(buffer);
    pour
    Code:
    #include "E:\Documents and Settings\Administrateur\Bureau \test\main.h"
    c'est juste l'endroit où etait mon fichier main.h, ca n'a aucune importance.
    oui j'ai compris mais j'ai pas pu crée une fonction d'extension .h comment avez vous crée cette extension ?

  23. Publicité
  24. #19
    mortaurat

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Lorsque je fais un nouveaux projet sous CCS c'est fait automatiquement.

  25. #20
    taeway

    Re : mes amis comment peut je programmer un LCD avec le pic 16F877 ??

    Citation Envoyé par mortaurat Voir le message
    Lorsque je fais un nouveaux projet sous CCS c'est fait automatiquement.
    quelle est votre version de CCS ?

  26. #21
    mortaurat

    Re : Comment programmer un LCD avec le pic 16F877 ??

    j'ai la version 4.088

Sur le même thème :

Discussions similaires

  1. programmer un afficheur lcd avec pic 16f877
    Par zamanu dans le forum Électronique
    Réponses: 5
    Dernier message: 08/05/2011, 20h49
  2. Réponses: 9
    Dernier message: 10/04/2009, 08h15
  3. Programation pic 16F877 en C avec Aff LCD
    Par kevinomont dans le forum Électronique
    Réponses: 8
    Dernier message: 01/02/2009, 12h45
  4. Driver LCD 2*16 avec PIC 16F877
    Par misstik dans le forum Électronique
    Réponses: 2
    Dernier message: 20/07/2007, 23h54
  5. Réponses: 0
    Dernier message: 18/03/2007, 16h43
Découvrez nos comparatifs produits sur l'informatique et les technologies.