Aide en programation language C
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Aide en programation language C



  1. #1
    olivpod

    Aide en programation language C


    ------

    Bonjour tous le monde.
    Je buche depuis quelque heurs sur ce probleme et je j'arrive pas a me decider de la solution voila les detailles:

    J'ai un ecran LCD de 2 lignes pour 16 caracteres, Je doit definire " les ligne de controle " les lignes de control sont bien annoter dans les image si dessous.
    Cepandant, dans le programmes, je ne voit pas comment les notée?? conversion de decimal vers binnaire??? hexa???




    Voila le programme:
    #ifndef __XLCD_H
    #define __XLCD_H
    #include <delays.h> // temporisation pour afficheur LCD


    /* ------------------ Début de la partie à compléter ------------------ */


    // Définition du type d'interface : 8 bits ou 4 bits
    // Pour un fonctionnement sur 8 bits, décommenter la ligne #define BIT8
    // #define BIT8


    // Pour un fonctionnement en 4 bits, indiquer si les données sont sur les quatres bits
    // de poids fort ou de poids faible du PORT utilisé par le PIC
    // Si elles sont sur les poids faibles, commenter la ligne #define UPPER
    #define UPPER


    // Définition du PORT utilisé pour les lignes de données
    // DATA_PORT indique le port sur lequel les lignes de données du LCD sont connectées.
    // TRIS_DATA_PORT indique le registre de direction correspondant
    #define DATA_PORT /* à compléter */
    #define TRIS_DATA_PORT /* à compléter */

    // Définitions des lignes du PIC sur lesquelles les lignes de contrôle du LCD sont connectées.
    // Pour chaque signal RW, RS et E :
    // - la définition _PIN indique la ligne du PIC utilisée
    // - la définition TRIS_ indique le bit du registre de direction correspondant
    #define RW_PIN /* à compléter */
    #define TRIS_RW /* à compléter */
    #define RS_PIN /* à compléter */
    #define TRIS_RS /* à compléter */
    #define E_PIN /* à compléter */
    #define TRIS_E /* à compléter */


    /* ------------------ Fin de la partie à compléter ------------------ */


    // Définitions des commandes ON/OFF
    #define DON 0b00001111 /* Display on */
    #define DOFF 0b00001011 /* Display off */
    #define CURSOR_ON 0b00001111 /* Cursor on */
    #define CURSOR_OFF 0b00001101 /* Cursor off */
    #define BLINK_ON 0b00001111 /* Cursor Blink */
    #define BLINK_OFF 0b00001110 /* Cursor No Blink */
    #define CLEAR_DISP 0b00000001 /* Clear Display */
    #define RET_HOME 0b00000010 /* Return Home */


    // Définitions pour le curseur et le décalage de l'affichage (shift)
    #define SHIFT_CUR_LEFT 0b00010011 /* Cursor shifts to the left */
    #define SHIFT_CUR_RIGHT 0b00010111 /* Cursor shifts to the right */
    #define SHIFT_DISP_LEFT 0b00011011 /* Display shifts to the left */
    #define SHIFT_DISP_RIGHT 0b00011111 /* Display shifts to the right */


    // Définitions pour le choix du mode de fonctionnement
    #define FOUR_BIT 0b00101100 /* 4-bit Interface */
    #define EIGHT_BIT 0b00111100 /* 8-bit Interface */
    #define LINE_5X7 0b00110000 /* 5x7 characters, single line */
    #define LINE_5X10 0b00110100 /* 5x10 characters */
    #define LINES_5X7 0b00111000 /* 5x7 characters, multiple line */


    #define PARAM_SCLASS auto
    #define MEM_MODEL far /* Change this to near for small memory model */

    /* OpenXLCD
    * Configures I/O pins for external LCD
    */
    void OpenXLCD(PARAM_SCLASS unsigned char);

    /* SetCGRamAddr
    * Sets the character generator address
    */
    void SetCGRamAddr(PARAM_SCLASS unsigned char);

    /* SetDDRamAddr
    * Sets the display data address
    */
    void SetDDRamAddr(PARAM_SCLASS unsigned char);

    /* BusyXLCD
    * Returns the busy status of the LCD
    */
    unsigned char BusyXLCD(void);

    /* ReadAddrXLCD
    * Reads the current address
    */
    unsigned char ReadAddrXLCD(void);

    /* ReadDataXLCD
    * Reads a byte of data
    */
    char ReadDataXLCD(void);

    /* WriteCmdXLCD
    * Writes a command to the LCD
    */
    void WriteCmdXLCD(PARAM_SCLASS unsigned char);

    /* WriteDataXLCD
    * Writes a data byte to the LCD
    */
    void WriteDataXLCD(PARAM_SCLASS char);

    /* putcXLCD
    * A putc is a write

    -----

  2. #2
    olivpod

    Re : Aide en programation language C

    Bon j'ai chercher un peut plus loin que mes cahier ( merci google )
    Et je serais maintenant tenter de dire :

    // Définition du PORT utilisé pour les lignes de données
    // DATA_PORT indique le port sur lequel les lignes de données du LCD sont connectées.
    // TRIS_DATA_PORT indique le registre de direction correspondant
    #define DATA_PORT PORTDbits.RB/* à compléter */
    #define TRIS_DATA_PORT PORTDbits.RB/* à compléter */

    // Définitions des lignes du PIC sur lesquelles les lignes de contrôle du LCD sont connectées.
    // Pour chaque signal RW, RS et E :
    // - la définition _PIN indique la ligne du PIC utilisée
    // - la définition TRIS_ indique le bit du registre de direction correspondant
    #define RW_PIN PORTDbits.RD5 /* à compléter */
    #define TRIS_RW PORTDbits.RD5=0 /* à compléter */
    #define RS_PIN PORTDbits.RD6 /* à compléter */
    #define TRIS_RS PORTDbits.RD6=0/* à compléter */
    #define E_PIN PORTDbits.RD7 /* à compléter */
    #define TRIS_E PORTDbits.RD7=0 /* à compléter */

  3. #3
    sdec25

    Re : Aide en programation language C

    Salut,
    C'est presque ça, mais pour le port il ne faut pas donner de bit mais le port entier : DATA_PORT = PORTx et TRIS_PORT = TRISx
    En effet, on n'active pas les bits 1 par 1 mais tous ensemble.
    Pour le reste c'est bon mais en sortie il vaut mieux utiliser LATx au lieu de PORTx

  4. #4
    olivpod

    Re : Aide en programation language C

    Citation Envoyé par sdec25 Voir le message
    Salut,
    C'est presque ça, mais pour le port il ne faut pas donner de bit mais le port entier : DATA_PORT = PORTx et TRIS_PORT = TRISx
    En effet, on n'active pas les bits 1 par 1 mais tous ensemble.
    Pour le reste c'est bon mais en sortie il vaut mieux utiliser LATx au lieu de PORTx
    Ha supper
    Donc sa donne :
    // Définition du PORT utilisé pour les lignes de données
    // DATA_PORT indique le port sur lequel les lignes de données du LCD sont connectées.
    // TRIS_DATA_PORT indique le registre de direction correspondant
    #define DATA_PORT = PORTD/* à compléter */
    #define TRIS_DATA_PORT= TRISD/* à compléter */

    // Définitions des lignes du PIC sur lesquelles les lignes de contrôle du LCD sont connectées.
    // Pour chaque signal RW, RS et E :
    // - la définition _PIN indique la ligne du PIC utilisée
    // - la définition TRIS_ indique le bit du registre de direction correspondant
    #define RW_PIN PORTDbits.RD5 /* à compléter */
    #define TRIS_RW PORTDbits.RD5=0 /* à compléter */
    #define RS_PIN PORTDbits.RD6 /* à compléter */
    #define TRIS_RS PORTDbits.RD6=0/* à compléter */
    #define E_PIN PORTDbits.RD7 /* à compléter */
    #define TRIS_E PORTDbits.RD7=0 /* à compléter */
    J'avais pas fait attention à la subtiliter PORT"bits" effectivement vue comme sa ... ^^
    Donc tel quelle cette partie du programme devrais tourné?
    J'ai pas envie de me retrouver planter au lycée demain avec mon prof qui ouvre grand les yeux sur un programme ecrit par d'autre prof et qui marche pas ^^
    C'est pour mon bac, epreuve oral coef 9
    J'ai tout un theme à mettre en dossier.

    Ha oui,je n'ai jamais etudier la commande "LAT" à quoi sert telle? Pourquoi est t'elle avantageuse?
    Dernière modification par olivpod ; 22/03/2010 à 20h01.

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

    Re : Aide en programation language C

    Non pas de = dans les #define :
    Code:
    #define DATA_PORT PORTD
    Et TRIS_xx correspond à un bit d'un registre TRIS, pas PORT.
    Pour la différence entre PORT et LAT, fais une recherche sur le forum, certains ont eu des problèmes à cause de ça. C'est plus sûr d'utiliser LAT en sortie à la place de PORT.
    Choix entrée/sortie : TRIS
    En entrée : PORT
    En sortie : PORT ou LAT

    Pour plus de détails : voir des cours sur les PIC ou la datasheet de ton PIC section I/O

Discussions similaires

  1. beaucoup des exercices de language c je chercher des solution aide moi
    Par invite4acbe4f8 dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 25/04/2012, 21h23
  2. aide sur la programation des pic avec C
    Par invite5e2e894b dans le forum Électronique
    Réponses: 2
    Dernier message: 14/07/2008, 09h59
  3. aide pour programation scilab svp
    Par invite84a9083d dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 27/05/2008, 12h11
  4. aide pour programation pic18f8722 (I2C)
    Par invite07331be8 dans le forum Électronique
    Réponses: 3
    Dernier message: 23/05/2008, 07h45
Découvrez nos comparatifs produits sur l'informatique et les technologies.