Initialiser LCD
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. #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 ...

  3. #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

  4. #4
    invite1469b964

    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

  5. A voir en vidéo sur Futura
  6. #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 ?

  7. #6
    invite1469b964

    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'.

  8. #7
    invite1469b964

    Re : Initialiser LCD

    Mais apparement, tu as mis le bon

  9. #8
    invite1469b964

    Re : Initialiser LCD

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

  10. #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

  11. #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

  12. #11
    invite1469b964

    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

  13. #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

  14. #13
    invite1469b964

    Re : Initialiser LCD

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

  15. #14
    Toufinet

    Re : Initialiser LCD

    fixe..

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

  16. #15
    invite1469b964

    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

  17. #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 invite565767eb dans le forum Électronique
    Réponses: 2
    Dernier message: 02/12/2010, 23h01
  2. [Brun] Lcd Benq Alimentation d'un ecran LCD!!! [résolu]
    Par invitec87978c8 dans le forum Dépannage
    Réponses: 19
    Dernier message: 17/06/2008, 15h25
  3. Compilateur CCS C - initialiser struct bit à bit ?
    Par invite14089c50 dans le forum Électronique
    Réponses: 4
    Dernier message: 26/11/2007, 15h37
  4. Récuper le logiciel "wifi" sans ré initialiser...
    Par inviteba546a19 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 08/08/2007, 12h45
  5. Tv LCD versus Moniteur LCD avec tunner tv
    Par invite12faae6c dans le forum Électronique
    Réponses: 1
    Dernier message: 10/03/2007, 17h39
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...