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

init LCD



  1. #1
    pldra26

    init LCD


    ------

    Bonjour, j'ai un soucis pour l'initialisation de mon LCD.

    BIT_RS=0;

    PORTB=0x33;
    delay(10);
    BIT_E=1;
    delay(10);
    BIT_E=0;
    delay(10);

    sa ds une boucle for repeter 3fois

    idem pour les codes:

    0Ch : affichage en fonction, pas de curseur
    06h : le curseur se déplace vers la gauche
    01h : on efface l'afficheur

    mais sur l'afficheur rien ne se passe il et tjrs avec ses bandes noir ou clair, il ne s'efface ou s'initialise pas.

    -----

  2. Publicité
  3. #2
    maxic31

    Re : init LCD

    Bonjour,
    pas assez d'informations...
    marque ? type ? datasheet ?

    Sois plus précis si tu veux que quelqu'un puisse t'aider

  4. #3
    pldra26

    Re : init LCD

    c un 44780a00 4x16 lignes.
    j'utilise un 16f887 pour le faire fonctionner sousmplab.
    j'utilise cc5x pour la compilation.
    il est en mode 8bits.

  5. #4
    maxic31

    Re : init LCD

    Tu devrais suivre le manuel à la Table 13, ils y a un exemple assez bien décrit.

    Table 13 8-Bit Operation, 8-Digit ´ 2-Line Display Example with Internal Reset
    Step Instruction
    No. RS R/: DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Display Operation
    1 Power supply on (the HD44780U is initialized by the internal
    reset circuit)
    Initialized. No display.
    2 Function set
    0 0 0 0 1 1 1 0 * *
    Sets to 8-bit operation and
    selects 2-line display and 5 ´ 8
    dot character font.
    3 Display on/off control
    0 0 0 0 0 0 1 1 1 0
    _ Turns on display and cursor. All
    display is in space mode
    because of initialization.
    4 Entry mode set
    0 0 0 0 0 0 0 1 1 0
    _ Sets mode to increment the
    address by one and to shift the
    cursor to the right at the time of
    write to the DD/CGRAM.
    Display is not shifted.
    5 Write data to CGRAM/DDRAM
    1 0 0 1 0 0 1 0 0 0
    H_ Writes H. DDRAM has already
    been selected by initialization
    when the power was turned on.
    The cursor is incremented by
    one and shifted to the right.
    6 ·
    ·
    ·
    ·
    ·
    ·
    ·
    ·
    ·
    ·
    7 Write data to CGRAM/DDRAM
    1 0 0 1 0 0 1 0 0 1
    HITACHI_ Writes I.
    à quoi correspond ton 0x33 et ton BIT_E ??


    voir aussi page 212
    Dernière modification par maxic31 ; 05/10/2009 à 15h06.

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    pldra26

    Re : init LCD

    le code 33h correspond au mode de fonctionnement en 8 bits.
    le E c'est la pate E de enable, 3eme patte de lcd. active sur un front montant d'au moinq 450ns; pour pouvoir passer les donner rentree sur les port db0 à db7.

    J'vais aller me chercher la doc d'hitachi sur le lcd, tu m'as donner une idee. J'y avais pas penser. lol ! {^_^} !!!

  9. #6
    Cl3MENTE

    Re : init LCD

    Bonjour,
    Es-tu confiant dans le réglage du contraste? Je m'explique j'ai pas vu la datasheet mais si le contraste se règle par une pin, alors il doit faloir mettre un pont diviseur entre l'alim et la masse sur cette pin, dans le cas ou ce n'est pas fait tu verras au choix soit tout blanc soit des carrés noirs, c'est selon. C'est peut -être une piste.
    Voilou.

  10. Publicité
  11. #7
    pldra26

    Re : init LCD

    Oui tout a fait, j'ai fait ce que tu as dis c'est la broche 3 qui est le retroeclairage, mais çà, sa marche impec. lol.
    C'est vraiment mon programme je crois que je n'ai pas les bon codes pour l'initialiser.

  12. #8
    maxic31

    Re : init LCD

    Si j'étais toi, je suivrais exactement l'exemple de la datasheet. Si ça ne marche pas, tu pourras peut être découvrir un problème électronique... sait-on jamais

  13. #9
    pldra26

    Re : init LCD

    voici mon programme :

    TRISB=0;
    TRISC=0;

    /* initialisation 8bits */

    PORTC.2=0; /* RS =0 */
    PORTC.3=0; /* R/W = 0 */

    PORTB.0=0;
    PORTB.1=0;
    PORTB.2=0;
    PORTB.3=0;
    PORTB.4=1;
    PORTB.5=1;
    PORTB.6=0;
    PORTB.7=0;
    delay(5); /* en ms */

    PORTB.0=0;
    PORTB.1=0;
    PORTB.2=0;
    PORTB.3=0;
    PORTB.4=1;
    PORTB.5=1;
    PORTB.6=0;
    PORTB.7=0;
    delay(1);

    PORTB.0=0;
    PORTB.1=0;
    PORTB.2=0;
    PORTB.3=0;
    PORTB.4=1;
    PORTB.5=1;
    PORTB.6=0;
    PORTB.7=0;
    delay(1);

    /* fin de l'initialisation 8bits */

    /* display on*/

    PORTB.0=0;
    PORTB.1=1;
    PORTB.2=1;
    PORTB.3=1;
    PORTB.4=0;
    PORTB.5=0;
    PORTB.6=0;
    PORTB.7=0;

    /* entry mode */

    PORTB.0=0;
    PORTB.1=1;
    PORTB.2=1;
    PORTB.3=0;
    PORTB.4=0;
    PORTB.5=0;
    PORTB.6=0;
    PORTB.7=0;

    /* write data */

    PORTC.1=1; /* E=1 */
    PORTC.2=1;
    PORTC.3=0;

    PORTB.0=0;
    PORTB.1=0;
    PORTB.2=0;
    PORTB.3=1;
    PORTB.4=0;
    PORTB.5=0;
    PORTB.6=1;
    PORTB.7=0;

    PORTC.1=1;
    delay(5); /* superieur a 450ns pour valider par E */
    PORTC.1=0;

  14. #10
    Kissagogo27

    Re : init LCD

    Citation Envoyé par pldra26 Voir le message
    Oui tout a fait, j'ai fait ce que tu as dis c'est la broche 3 qui est le retroeclairage, mais çà, sa marche impec. lol.
    C'est vraiment mon programme je crois que je n'ai pas les bon codes pour l'initialiser.
    rétroeclairage ? le contraste est dépendant d'un réglage par l'intermédiaire d'un potentiomètre sur une pin a part , qui peut nécessiter une tension négative si elle n'est pas générée sur le module LCD lui même. ce qui est totalement différent du rétroéclairage ..

  15. #11
    marvinc

    Smile Re : init LCD

    salut, j'ai aussi eu un projet avec un LCD HD44780. J'ai failli le jeter par la fenetre !
    C'est très très sensible au timing.
    #code
    void send_LCD(unsigned char octet, unsigned char mode)
    {
    LCD_RS = mode; //0: instruction, 1:donnée

    Nop() Nop()

    LCD_E = 1; //ecriture sur LCD en cours

    LCD_DATA = octet; //donnée sur le port d'envoie

    Nop() Nop() Nop()

    LCD_E = 0; //fin de l'ecriture
    }
    #code

    l'init
    #code
    void init_LCD(void)
    {

    Delay1KTCYx(181); //attendre 15ms après power up (15.08)

    send_LCD(0x30, 0); //1ere commande init

    Delay1KTCYx(50); //attendre 4.1ms (4.167)

    send_LCD(0x30, 0); //2eme commande init

    Delay100TCYx(13); //attendre 100µs (108.3)

    send_LCD(0x30, 0); //3eme commande init

    Delay10TCYx(48); //(40µ)

    send_LCD(0x38, 0); //mode 8bits, mode 1 ligne, 5*8

    Delay10TCYx(48); //(40µ)

    send_LCD(0x0C, 0); //display on, Curseur off, blink off

    Delay10TCYx(48); //(40µ)

    send_LCD(0x01, 0); //display clear

    Delay100TCYx(184); //(1,533ms)

    send_LCD(0x06, 0); //mode curseur
    Delay10TCYx(48); //(40µ)

    RX.USB.LCD_command = 1;
    sprintf(RX.USB.LCD,"__________ __________");
    write_LCD(); //affiche message

    RX.USB.LCD_command = 2;
    sprintf(RX.USB.LCD," M4rV1nC USB CARD ");
    write_LCD(); //affiche message

    RX.USB.LCD_command = 3;
    sprintf(RX.USB.LCD," 2009 ");
    write_LCD(); //affiche message

    RX.USB.LCD_command = 4;
    sprintf(RX.USB.LCD,"__________ __________");
    write_LCD(); //affiche message
    }
    #code

  16. #12
    maxic31

    Re : init LCD

    Hello,
    à la place de ça :
    Citation Envoyé par pldra26 Voir le message
    PORTB.0=0;
    PORTB.1=0;
    PORTB.2=0;
    PORTB.3=0;
    PORTB.4=1;
    PORTB.5=1;
    PORTB.6=0;
    PORTB.7=0;
    tu devrais utiliser plutôt une assignation direct sur le PORT entier
    ex:
    Code:
    PORTB = 0b00110000;
    il se peut que ton LCD n'apprécie pas les changements séquentiels

    ton delay() correspond à quoi ? des millisecondes ? Comme le dit justement marvinc les LCD sont sensibles aux timmings

  17. Publicité

Discussions similaires

  1. pic 18f init a la place de pause
    Par EmKa69 dans le forum Électronique
    Réponses: 2
    Dernier message: 06/04/2009, 20h02
  2. 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, 12h32
  3. init lcd en 4 bit
    Par sdow dans le forum Électronique
    Réponses: 10
    Dernier message: 23/11/2007, 20h27
  4. [Brun] sortir menu init televiseur Thomson black diva
    Par blaize dans le forum Dépannage
    Réponses: 6
    Dernier message: 30/12/2006, 16h33
  5. TVSony KV-32FC60Z chassis AE5: pb. init–Platine M
    Par dace44 dans le forum Dépannage
    Réponses: 13
    Dernier message: 10/11/2004, 17h45
Découvrez nos comparatifs produits sur l'informatique et les technologies.