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

Initialiser LCD



  1. #1
    Toufinet

    Initialiser LCD


    ------

    Yop !

    Bon, alors j'essaie de programmer un PIC pour afficher des trucs sur un LCD.

    1ière étape : initialisation du LCD -> j'y arrive pô
    PS : PIC 16F876A à 16 MHz

    Voici le code que j'utilise :


    call tempo_init;
    bcf PORTC,0; PORTC,0 = ENABLE
    bcf PORTC,1; PORTC,1 = R/Wbar
    bcf PORTC,2; PORTC,2 = RS
    movlw 0x33; J'envoie 33h 3 fois, je ne sais pas pourquoi
    movwf PORTB; j'ai trouvé ça dans un tuto
    call enable;
    call tempo_init;
    call enable; 2ième fois
    call tempo_init;
    call enable; 3ième fois
    call tempo_init;
    movlw 0x38; J'envoie 38h, je ne sais pas pourquoi
    call enable; j'ai trouvé ça dans un tuto
    call tempo_init;
    movlw b'000001111';
    movwf PORTB;
    call enable; J'envoie cette valeur => mise en marche du LCD, affichage du curseur, clignotage du curseur
    call tempo_init;
    movlw 0x06;
    movwf PORTB; J'envoie 0x06, je ne sais pas pourquoi
    call enable; j'ai trouvé ça dans un tuto
    call tempo_init;
    movwf 0x01;
    call enable; Je reset l'écran du LCD
    call tempo_init;
    binfi
    goto binfi; Boucle infinie
    Et voici les routines enable et tempo_init :
    enable
    bsf PORTC,0;
    call tempo_init;
    bcf PORTC,0;
    call tempo_init;
    return


    tempo_init
    movlw 0xFF
    movwf cpt1
    tp2 decfsz cpt1,1
    goto tp2
    return
    Résultat de ce programme : l'écran ne change pas d'état .. il y a toujours la ligne du haut allumée, et la ligne du bas éteinte.

    Quelqu'un peut-il m'aider ?
    Au passage, je n'ai pas trouver de site expliquant réellement bien l'initialisation, donc si vous en avez un dans votre poche, il sera le bienvenu dans la mienne

    Voilà, merci à qui saura me filer un cou'd'main

    -----

  2. Publicité
  3. #2
    Toufinet

    Re : Initialiser LCD

    Bon je crois avoir pigé 2-3 trucs, donc je met mon programme actualisé :

    call tempo_init;
    bcf PORTC,0; PORTC,0 = ENABLE
    bcf PORTC,1; PORTC,1 = R/Wbar
    bcf PORTC,2; PORTC,2 = RS

    movlw b'00111000'; Mode 8 bits, 2 lignes, caractères 5*7
    movwf PORTB;
    call enable;
    call tempo_init;
    movlw b'00001111'; Affichage ON, curseur ON, clignotement curseur ON
    movwf PORTB;
    call enable;
    call tempo_init;
    movlw b'00010100'; Déplace le curseur vers la gauche
    movwf PORTB;
    call enable;
    call tempo_init;
    movwf b'00000001'; Reset de l'écran
    call enable;
    call tempo_init;
    binfi
    goto binfi; Boucle infinie




    enable
    bsf PORTC,0;
    call tempo_init;
    bcf PORTC,0;
    call tempo_init;
    return


    tempo_init
    movlw 0x30;
    movwf cpt2
    tp1 decf cpt2,1
    movlw 0xFF
    movwf cpt1
    tp2 decfsz cpt1,1
    goto tp2
    movf cpt2,1
    btfss STATUS,Z
    goto tp1
    return
    mais toujours rien ...

  4. #3
    Toufinet

    Re : Initialiser LCD

    c'est encore moi

    Bon alors .. surprise de taille !
    Lorsque j'envoie le programme ( avec IC-Prog ), à la fin de l'envoie, il me dit "Device successfully verified" ( vérification de l'envoie simultané ) ..
    Puis, par curiosité, je fais une lecture , et surprise : je n'obtient QUE des 00 !!!

    Alors si quelqu'un a déjà eu ça et qu'il sait d'où ça vient, un gros bisous d'avance, car moi je n'en ai absolument aucune idée

  5. #4
    nams2590

    Cool Re : Initialiser LCD

    Salut,

    J'ai fait un site qui explique justement la programmation d'un afficheur LCD avec un PIC 16F876A. Jette un coup d'oeuil. Tu devrais trouver tout ce qu'il te faut. Et si tu as des choses que tu comprend pas, tu peux me redemander.

    les pages du site : http://fabien.parriaux.club.fr/AfficheurLCD.htm

    et

    http://fabien.parriaux.club.fr/carte%20fille%20LCD.htm

    nams2590 : http://fabien.parriaux.club.fr

  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
    Toufinet

    Re : Initialiser LCD

    Salut, merci, ton site me sera bien utile !

    Ceci dit, mon tout premier problème vient de la programmation du PIC.

    Qu'as tu mis comme config ?
    Es-ce que
    list P=16F876A
    #include <p16f876A.inc>
    __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC

    convient ?

  9. #6
    nams2590

    Re : Initialiser LCD

    Il suffit simplement de mettre :

    LIST p=16F876A
    #include <p16F876A.inc>
    __CONFIG _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC.

    Ce que les PIC n'aiment pas trop, c'est de configurer le mauvais oscillateur.
    _LP_OSC Oscillateur quartz basse vitesse
    _XT_OSC Oscillateur quartz moyenne vitesse
    _HS_OSC Oscillateur quartz grande vitesse
    _RC_OSC Oscillateur à réseau RC

    Si tu utilise un 16 MHz, tu devrais mettre 'HS'.

  10. Publicité
  11. #7
    nams2590

    Re : Initialiser LCD

    Mais apparement, tu as mis le bon

  12. #8
    nams2590

    Re : Initialiser LCD

    Est-ce que tu fais une lecture et une comparaison des buffers lu et écrit après avoir programmé ton PIC?

  13. #9
    Toufinet

    Re : Initialiser LCD

    Voici ce que je fais :

    J'envoie mon programme ( Programme.hex ) en mode "Vérification pendant la programmation"
    ->

    Puis ( pour vérifier ), je lis le pic
    ->

    Et en effet, lorsque je met le pic sur la carte .. nothing happens

  14. #10
    Toufinet

    Re : Initialiser LCD

    Tiens .. les images ne passent pas ...
    après programmation : http://www.chezlacrevette.com/pic/envoi_prog.JPG

    après lecture :
    http://www.chezlacrevette.com/pic/apres_lecture.JPG

  15. #11
    nams2590

    Re : Initialiser LCD

    Utilise-tu le mode Windows API?

    Moi, avec windows XP, j'ai quand j'utilise le mode Windows API, ça me fais comme toi, et quand j'utilise le mode Direct IO, ça fonctionne bien.

    Essai peut être avec le mode Direct IO. Et vérifie si tu as bien coché l'option WindowsXP dans Misc

  16. #12
    Toufinet

    Re : Initialiser LCD

    J'étais bien en Direct IO ...

    J'ai testé en Windows API, et cette fois, lorsque je lis, j'ai que des FF au lieu des 00 ..

    J'y comprend plus rien lol

  17. Publicité
  18. #13
    nams2590

    Re : Initialiser LCD

    Est-ce que tu utilise un PC portable ou un fixe?

  19. #14
    Toufinet

    Re : Initialiser LCD

    fixe..

    J'ai plusieurs fois programmé des 16F628 sans avoir aucun souci ... :/

  20. #15
    nams2590

    Re : Initialiser LCD

    Eh ben, je sais pas tro comment t'aider. Moi, ça fonctionne très bien avec un fixe, mais totalement impossible avec mon portable. Alors je comprend pas trop. Je sais pas quelle version de IC prog tu as, mais essai peut être la version 1.05D disponible sur :

    http://www.ic-prog.com/index1.htm

  21. #16
    Toufinet

    Re : Initialiser LCD

    1.05D ...

    Bon ... J'essaierais demain à mon école avec un meilleur programmateur de pic, je verrais bien.

    Bonne soirée, merci de ton aide

Discussions similaires

  1. [LCD] info sur LCD graphique LM6300 ?
    Par c_est_den dans le forum Électronique
    Réponses: 2
    Dernier message: 02/12/2010, 22h01
  2. [Brun] Lcd Benq Alimentation d'un ecran LCD!!! [résolu]
    Par acidburn62 dans le forum Dépannage
    Réponses: 19
    Dernier message: 17/06/2008, 14h25
  3. Compilateur CCS C - initialiser struct bit à bit ?
    Par branqueira dans le forum Électronique
    Réponses: 4
    Dernier message: 26/11/2007, 14h37
  4. Récuper le logiciel "wifi" sans ré initialiser...
    Par distefano1 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 08/08/2007, 11h45
  5. Tv LCD versus Moniteur LCD avec tunner tv
    Par marcris dans le forum Électronique
    Réponses: 1
    Dernier message: 10/03/2007, 16h39
Découvrez nos comparatifs produits sur l'informatique et les technologies.