PIC 16F88 et LCD 2X16
Répondre à la discussion
Affichage des résultats 1 à 30 sur 30

PIC 16F88 et LCD 2X16



  1. #1
    mgduc

    Question PIC 16F88 et LCD 2X16


    ------

    Bonjours, j'ai fais l’acquisition d'un écran LCD 2X16 model 1602A eone-1602a1.pdf et je galère depuis plus de 4 jours à essayer de le faire fonctionné. J'ai trouver sur les forum de futura un fichier inc fait par Gilles Chevalerias et modifier par Frank pour s'adapter a différente fréquence d'oscillation. J'ai tout essayer, j'ais l'impression d'avoir épuiser les ressource du net. J'ai eu une lueur d'espoir en appuyant plusieurs fois sur mon bouton reset quand j'ais vue le curseur clignoter.

    J'utilise l'oscillateur interne d'un pic 16F88. Est-ce qu'il y a quelque chose qui cloche dans mon code? Je ne comprend plus rien... J'ai penser à une mauvaise fréquence, des sortie mal configuré etc... mon code à changer plusieurs fois.

    Le voici.

    #include <p16f88.inc>

    __CONFIG _CONFIG1, _WDT_OFF & _PWRTE_ON & _INTRC_IO & _MCLR_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_PROTECT_OFF & _DEBUG_OFF & _CCP1_RB0 & _CP_OFF
    __CONFIG _CONFIG2, _FCMEN_OFF & _IESO_OFF


    INT_VAR UDATA_SHR
    LCDtmp res 1
    LCDtmp2 res 1
    LCDt1 res 1
    LCDt2 res 1
    LCDt3 res 1
    LCDt4 res 1
    D0 RES 1
    D1 RES 1
    STARTUP CODE 0x000
    bsf STATUS,RP0
    movlw B'01100000' ;4 mHz oscillateur
    movwf OSCCON
    call Tempo15ms.8MHz ;60 ms pour la stabilisation de l'oscillateur.
    call Tempo15ms.8MHz
    bcf STATUS,RP0
    banksel OPTION_REG
    movlw b'10000000';1 pullups off
    movwf OPTION_REG
    banksel ANSEL
    movlw b'00000000' ;tout digital
    movwf ANSEL
    banksel CMCON
    movlw b'00000111' ;comparateur off
    movwf CMCON
    goto start
    start
    call LCDinit
    tst
    goto tst

    goto start



    ; routines en mode 4 Bits avec afficheur à base de HD77480
    ; ecrite par Gilles Chevalerias
    ; E.mail:gilles.chevalerias@Ifra nce.com
    ;
    ; Pour utiliser cette routine ecrire #include LCD.asm je vous conseillle
    ; de placer cette ligne juste avant la directive END du programme principal
    ; la routine s'occupe de mettre en sortie les pins utilisées
    ; pour les pics 12XXX et 16xxx
    ; si vous n'avez pas besoin de lire dans l'afficheur, pour lire la position du curseur,
    ; par exemple, vous pouvez vous passer de LCD_RW qu'il suffit de relier à la masse,
    ; et de ne pas definir LCD_RW, le cas et prevue
    ;
    ; Les commandes:
    ; LCDinit : initialisation de l'afficheur
    ; LCDchar : envoi un caractere ( contenu dans w ) sur l'afficheur
    ; LCDins : envoi une commande ( contenue dans w) à l'afficheur
    ; LCDcls : efface l'afficheur
    ; LCDcls2 : efface la deuxieme ligne de l'afficheur
    ; LCDhome : renvoi le curseur en haut a gauche
    ; LCDlin1 : renvoi le curseur au debut de la ligne 1
    ; LCDlin2 : renvoi le curseur au debut de la ligne 2
    ;
    ; pour positionner le curseur sur la ligne 1 : movlw 0x80+offset
    ; call LCDins
    ;
    ; pour positionner le curseur sur la ligne 2 : movlw 0xC0+offset
    ; call LCDins
    ;
    ; variables à definir dans le programme principal:
    ;
    ; LCDtmp,LCDtmp2 ; LCD
    ; LCDt1,LCDt2,LCDt3,LCDt4 ; LCD
    ; D0, D1 ; Tempos
    ;
    ; à definir dans le programme principal:
    ; on peut choisir n'importe quelle E/S du pic
    ; pour les datas, (D7,D6,D5,D4), il nest pas necessaire que toutes les pins
    ; soient sur le meme port, ni quelles se suivent, idem pour E,RW,RS
    ; LEURS AFFECTATIONS SONT TOTALEMENT LIBRES
    ; attention à RA4 qui est en drain ouvert et que les pins choisies
    ; soient configurées en E/S numériques
    #DEFINE LCD_pin_D7 PORTB,7 ; E/S du pic ou est connectée la pin D7 de l'afficheur
    #DEFINE LCD_pin_D6 PORTB,6 ; " " " " D6 " " "
    #DEFINE LCD_pin_D5 PORTB,5 ; " " " " D5 " " "
    #DEFINE LCD_pin_D4 PORTB,4 ; " " " " D4 " " "
    #DEFINE LCD_E PORTB,3 ; " " " " E " " "
    #DEFINE LCD_RS PORTB,1 ; " " " " RS " " "
    #DEFINE LCD_RW PORTA,2 ; ne pas déclarer LCD_RW si vous ne voulez pas
    ; l'utiliser, le cas est prevue


    ; ****************************** ***
    ; * INSTRUCTIONS PROGRAMMEES *
    ; ****************************** ***

    LCDcls ; effacement de l'ecran
    movlw D'01'
    call LCDins
    call Tempo1.5ms.4MHz ; Tempo 1.5ms @4MHz
    ; call Tempo1.5ms.8MHz ; Tempo 1.5ms @8MHz
    retlw 0

    LCDcls2 ; effacement de la deuxieme ligne
    movlw D'16'
    movwf LCDtmp2
    movlw 0xC0
    call LCDins
    call Tempo1.5ms.4MHz ; Tempo 1.5ms @4MHz
    ; call Tempo1.5ms.8MHz ; Tempo 1.5ms @8MHz
    movlw ' '
    call LCDchar
    decfsz LCDtmp2,f
    goto $-3
    retlw 0

    LCDhome ; Positionne le curseur an haut a gauche du LCD
    movlw D'02'
    call LCDins
    call Tempo1.5ms.4MHz ; Tempo 1.5ms @4MHz
    ; call Tempo1.5ms.8MHz ; Tempo 1.5ms @8MHz
    retlw 0

    LCDlin1 ; positionne le curseur en debut de ligne 1
    movlw 0x80
    call LCDins
    call Tempo1.5ms.4MHz ; Tempo 1.5ms @4MHz
    ; call Tempo1.5ms.8MHz ; Tempo 1.5ms @8MHz
    retlw 0

    LCDlin2 ; Positionne le curseur en debut de ligne 2
    movlw 0xC0
    call LCDins
    call Tempo1.5ms.4MHz ; Tempo 1.5ms @4MHz
    ; call Tempo1.5ms.8MHz ; Tempo 1.5ms @8MHz
    retlw 0

    LCDchar ; Envoi caractere
    movwf LCDtmp
    call TEST_BF ; tempo 100µs ou teste de Busy Flag
    IFDEF LCD_RW
    bcf LCD_RW
    ENDIF
    bsf LCD_RS
    call LCD_envoie_octet
    retlw 0

    LCDins ; envoi instruction
    movwf LCDtmp
    call TEST_BF ; tempo 100µs ou teste de Busy Flag
    IFDEF LCD_RW
    bcf LCD_RW
    ENDIF
    bcf LCD_RS
    call LCD_envoie_octet
    retlw 0


    ; ****************************** ***
    ; * INITIALISATION DE L'AFFICHEUR *
    ; ****************************** ***

    LCDinit
    banksel H'85' ; on passe en bank1 valable pour les pics 16XXX et 12XXX
    bcf LCD_E ; on met en sortie toutes les pins utilisées
    bcf LCD_RS
    IFDEF LCD_RW
    bcf LCD_RW
    ENDIF
    bcf LCD_pin_D7
    bcf LCD_pin_D6
    bcf LCD_pin_D5
    bcf LCD_pin_D4
    banksel H'05' ; on revient en bank0
    bcf LCD_pin_D7
    bcf LCD_pin_D6
    bsf LCD_pin_D5
    bsf LCD_pin_D4
    bcf LCD_E
    bcf LCD_RS
    IFDEF LCD_RW
    bcf LCD_RW
    ENDIF
    call Tempo15ms.4MHz ; Tempo 15ms @4MHz
    ; call Tempo15ms.8MHz ; Tempo 15ms @8MHz
    bsf LCD_E
    ; nop ; NOP 500ns en mode8MHz pour arriver a 1µs en tout
    bcf LCD_E ; validation valeur H'3'
    movlw d'252'
    movwf LCDt1
    movlw D'04'
    call Tempo4ms.4MHz ; Tempo 4ms @4MHz
    ; call Tempo4ms.8MHz ; Tempo 4ms @8MHz
    bsf LCD_E
    ; nop ; NOP 500ns en mode8MHz pour arriver a 1µs en tout
    bcf LCD_E ; validation valeur H'3'
    call TEST_BF ; tempo 100µs ou teste de Busy Flag
    bsf LCD_E
    ; nop ; NOP 500ns en mode8MHz pour arriver a 1µs en tout
    bcf LCD_E ; validation valeur H'3'
    call TEST_BF ; tempo 100µs ou teste de Busy Flag
    bcf LCD_pin_D4
    bsf LCD_E
    ; nop ; NOP 500ns en mode8MHz pour arriver a 1µs en tout
    bcf LCD_E ; validation valeur H'2'
    movlw 0x028 ; Envoi de la commande Fonction 4-bit , Font, Nombre de lignes 0x028 original
    call LCDins
    movlw 0x008 ; display off
    call LCDins
    ; movlw 0x00C ; display on / Curseur off
    ; movlw 0x00E ; display on / Cursor on
    movlw 0x00F ; display on / curseur clignotant
    call LCDins
    movlw 0x006
    call LCDins
    retlw 0



    ; ****************************** ***
    ; * ROUTINE ENVOI OCTET *
    ; ****************************** ***

    LCD_envoie_octet
    bcf LCD_pin_D7 ; on met à 0 les sorties
    bcf LCD_pin_D6
    bcf LCD_pin_D5
    bcf LCD_pin_D4

    btfsc LCDtmp,7 ; on teste le bit 7 du caractere
    bsf LCD_pin_D7 ; il est à 1 donc sortie correspondante à 1
    btfsc LCDtmp,6
    bsf LCD_pin_D6
    btfsc LCDtmp,5
    bsf LCD_pin_D5
    btfsc LCDtmp,4
    bsf LCD_pin_D4
    bsf LCD_E
    ; nop ; Nop pour 1µs de duree de validation pour 8MHz
    bcf LCD_E ; validation du premier quartet

    bcf LCD_pin_D7 ; on remet à 0 les sorties
    bcf LCD_pin_D6
    bcf LCD_pin_D5
    bcf LCD_pin_D4

    btfsc LCDtmp,3
    bsf LCD_pin_D7
    btfsc LCDtmp,2
    bsf LCD_pin_D6
    btfsc LCDtmp,1
    bsf LCD_pin_D5
    btfsc LCDtmp,0
    bsf LCD_pin_D4
    bsf LCD_E
    ; nop ; Nop pour 1µs de duree de validation pour 8MHz
    bcf LCD_E ; validation du second quartet
    retLW 0



    ; ****************************** ***
    ; * TEMPORISATIONS *
    ; ****************************** ***

    Tempo100us.4MHz
    movlw D'33'
    movwf D0
    decfsz D0, f
    goto $-1
    retlw 0

    Tempo100us.8MHz
    movlw D'66'
    movwf D0
    decfsz D0, f
    goto $-1
    nop
    retlw 0

    Tempo1.5ms.4MHz
    movlw D'43'
    movwf D0
    movlw D'2'
    movwf D1
    decfsz D0, f
    goto $+2
    decfsz D1, f
    goto $-3
    nop
    nop
    retlw 0

    Tempo1.5ms.8MHz
    movlw D'87'
    movwf D0
    movlw D'3'
    movwf D1
    decfsz D0, f
    goto $+2
    decfsz D1, f
    goto $-3
    nop
    nop
    retlw 0

    Tempo4ms.4MHz
    movlw D'31'
    movwf D0
    movlw D'4'
    movwf D1
    decfsz D0, f
    goto $+2
    decfsz D1, f
    goto $-3
    nop
    nop
    retlw 0

    Tempo4ms.8MHz
    movlw D'63'
    movwf D0
    movlw D'7'
    movwf D1
    decfsz D0, f
    goto $+2
    decfsz D1, f
    goto $-3
    nop
    nop
    retlw 0

    Tempo15ms.4MHz
    movlw D'183'
    movwf D0
    movlw D'12'
    movwf D1
    decfsz D0, f
    goto $+2
    decfsz D1, f
    goto $-3
    nop
    nop
    retlw 0

    Tempo15ms.8MHz
    movlw D'111'
    movwf D0
    movlw D'24'
    movwf D1
    decfsz D0, f
    goto $+2
    decfsz D1, f
    goto $-3
    nop
    nop
    retlw 0


    ; ****************************** ***
    ; * TEST BUSY FLAG *
    ; ****************************** ***

    TEST_BF ; sous routine de test de Busy Flag
    IFDEF LCD_RW
    banksel H'85'
    bsf LCD_pin_D7
    bsf LCD_pin_D6
    bsf LCD_pin_D5
    bsf LCD_pin_D4
    banksel H'05'
    bcf LCD_RS
    bsf LCD_RW
    bsf LCD_E ; pour lire BF et 3 bits MSB de l'adresse
    nop
    btfsc LCD_pin_D7
    bcf LCD_E
    nop
    bsf LCD_E ; pour lire 4 bits LSB de l'adresse
    nop
    bcf LCD_E
    goto $-7
    bcf LCD_RW
    banksel H'85'
    bcf LCD_pin_D7
    bcf LCD_pin_D6
    bcf LCD_pin_D5
    bcf LCD_pin_D4
    banksel H'05'

    ELSE
    call Tempo100us.4MHz ; Tempo 100µs @4MHz
    ; call Tempo100us.8MHz ; Tempo 100µs @8MHz

    ENDIF
    return
    END

    -----

  2. #2
    cubitus_54

    Re : PIC 16F88 et LCD 2X16

    osccon = 0x6E pour 4 MHz
    osccon = 0x7E pour 8 MHz

    sinon par défaut tu es en 32kHz,

    à adapter à ton programme

    Bon courage

  3. #3
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Je suis désespéré, Si ce serais plus facile avec un 16F628A j'en est aussi en réserve alors je peux changer.
    Si seulement je pouvais avoir l'aide de gedonet (L'inventeur de la routine) ou Franck-026 (celui qui la modifier).

    Car j'ai l'impression de perdre mon temps, rien ne fonctionne.

  4. #4
    pilatomic

    Re : PIC 16F88 et LCD 2X16

    appelle LCDhome après LCDinit, pour etre sur que le curseur revienne bien en haut à gauche.

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

    Re : PIC 16F88 et LCD 2X16

    hélas ça ne fonctionne pas.

  7. #6
    pilatomic

    Re : PIC 16F88 et LCD 2X16

    Bien, éliminons tout d'abord les problèmes hardware. Ton LCD affiche bien une ligne de carré noirs à la mise sous tension ?

  8. #7
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Il affiche ça

    DSCN0390.jpg

    Je ne sais pas si c'est ce que tu pensais dire en me disent ligne noir dans mon cas mon LCD est blanc sur fond bleu.
    Images attachées Images attachées  

  9. #8
    pilatomic

    Re : PIC 16F88 et LCD 2X16

    D'habitude c'est plutôt une seule ligne de carrés, mais ça a l'air bon. Les broches D7 D6 D5 D4 sont bien reliées, et les pins adéquats définis dans le programme ?

  10. #9
    invite805ff73c

    Re : PIC 16F88 et LCD 2X16

    mais ça a l'air bon
    Non, à mon avis le contraste est au max, on ne vera jamais rien sur cet afficheur tant que ça ne change pas.

    @ mgduc
    Ton LCD doit avoir une entrée contraste, il y a quoi branché dessus?

  11. #10
    invite635643ae

    Re : PIC 16F88 et LCD 2X16

    Pourquoi tu n'essaye pas de le faire fonctionner en langage C dans un premier temps?

  12. #11
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Citation Envoyé par pilatomic Voir le message
    D'habitude c'est plutôt une seule ligne de carrés, mais ça a l'air bon. Les broches D7 D6 D5 D4 sont bien reliées, et les pins adéquats définis dans le programme ?
    Oui les pin sont bien relier et défini dans le programme. Quand le pic n'est pas sur le support il n'y a qu'une seule ligne et avec le pic il y en à deux.

    Et grosmatou75001, il y a un petit potentiomètre pour contrôler le contraste.

    paolo123, Je ne programme pas en C, je ne connais que l'assembleur. En C je ne m'y retrouve pas.

  13. #12
    invite635643ae

    Re : PIC 16F88 et LCD 2X16

    c'est vachement long a programmer en assembleur non?


    Une fois j'ai tenté de de gérer un afficheur sept segment avec un prog en assembleur (Je n'y connais rien en assembleur mais j'ai voulu essayer), ca m'a pris 3 jours! c'etait juste un défi, finalement j'ai réussi mais compte tenu du temps de développement pour si peu je me dis qu'il faut mieux l'utiliser pour des applications critiques, en C j'ai gérer mon afficheur en 15 Minutes top chrono

  14. #13
    pilatomic

    Re : PIC 16F88 et LCD 2X16

    Bah disons que pour utiliser l'assembleur faut connaître le fonctionnement du µC sur le bout des doigts, et forcément on ne dispose que des instructions du µC. Faire une multiplication ( sur un µC qui ne possède pas de multiplicateur hardware ) est déjà un travail conséquent, alors qu'en C, un simple opérateur, et le compilo gère tout. ( je pense d'ailleurs qu'il faut faire un peu d'assembleur avant de faire du C, ça permet d'optimiser ses programmes)

  15. #14
    invite07592ac2

    Re : PIC 16F88 et LCD 2X16

    bonsoir j'ai tv plasma 107CM LG 42PC55.
    je n'ai pas de son et pas d'image,mais quand je passe par la prise HDMI je reçois seulement l'image
    toujours pas de son.
    pouvez-vous m'aider

  16. #15
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Je connais bien l'assembleur et en cas de pépin je me réfère au datasheet du pic. Mais la je suis dans le néant...

  17. #16
    Gérard

    Re : PIC 16F88 et LCD 2X16

    Citation Envoyé par manuel77 Voir le message
    bonsoir j'ai tv plasma 107CM LG 42PC55.
    je n'ai pas de son et pas d'image,mais quand je passe par la prise HDMI je reçois seulement l'image
    toujours pas de son.
    pouvez-vous m'aider
    Et pourquoi n'ouvres-tu pas une nouvelle discussion pour ton problème ?

  18. #17
    pilatomic

    Re : PIC 16F88 et LCD 2X16

    Essaye de commenter la ligne
    #DEFINE LCD_RW PORTA,2
    et de relier directement la broche RW de l'afficheur vers la masse. C'est comme ça qu'on fait le plus souvent, pour ne pas s’embêter avec le busy flag.

  19. #18
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Citation Envoyé par pilatomic Voir le message
    Essaye de commenter la ligne
    #DEFINE LCD_RW PORTA,2
    et de relier directement la broche RW de l'afficheur vers la masse. C'est comme ça qu'on fait le plus souvent, pour ne pas s’embêter avec le busy flag.
    Daccord, j’essaye ça tout de suite.

  20. #19
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Super! Merci beaucoup pilatomic! Ça marche!

  21. #20
    pilatomic

    Re : PIC 16F88 et LCD 2X16

    Content d'avoir pu t'aider. =)

  22. #21
    invite805ff73c

    Re : PIC 16F88 et LCD 2X16

    Quand le pic n'est pas sur le support il n'y a qu'une seule ligne et avec le pic il y en à deux.
    Ok, une seule ligne sans le PIC c'est bon.

    Si ce n'est pas un pb de contraste il y a plusieurs possibilités quand on a 2 lignes noires: On envoye des données ou commandes à l'afficheur alors qu'il est encore occupé (peut-être parce que la lecture du busyflag ne marche pas?), on envoye des commandes invalides ou alors on mets à un moment ou un autre les broches de l'afficheur en sortie (RW=1) alors que sur le PIC le port est aussi configuré en sortie --> court-circuit. Le fait que ca marche avec RW à la masse sans busyflag et donc sans avoir les broches de l'afficheur en sortie laisse penser que c'est la dernière possibilité. Soit tu es content que ca marche et tu t'arrêtes là ou tu essaye de trouver où est le problème... Malheureusement je ne parle pas l'assembleur PIC.

    edit: En survolant le code j'ai vu que quand RW n'est pas défini la lecture du busyflag est remplacée par un délai. Ce pourrait donc aussi être la première hypothèse et non un court-circuit.

  23. #22
    pilatomic

    Re : PIC 16F88 et LCD 2X16

    Je me suis plongé dans le code, et malgré que mes notions d'assembleurs soient assez lointaines, j'ai bien peur d'avoir trouvé une boucle infinie dans la routine de test du busy flag :
    Code:
    ; ****************************** ***
    ; * TEST BUSY FLAG *
    ; ****************************** ***
    
    TEST_BF ; sous routine de test de Busy Flag
    IFDEF LCD_RW
    banksel H'85'
    bsf LCD_pin_D7
    bsf LCD_pin_D6
    bsf LCD_pin_D5
    bsf LCD_pin_D4
    banksel H'05'
    bcf LCD_RS
    bsf LCD_RW
    bsf LCD_E ; pour lire BF et 3 bits MSB de l'adresse
    nop
    btfsc LCD_pin_D7
    bcf LCD_E
    nop
    bsf LCD_E ; pour lire 4 bits LSB de l'adresse
    nop
    bcf LCD_E
    goto $-7
    bcf LCD_RW
    banksel H'85'
    bcf LCD_pin_D7
    bcf LCD_pin_D6
    bcf LCD_pin_D5
    bcf LCD_pin_D4
    banksel H'05'
    
    ELSE
    call Tempo100us.4MHz ; Tempo 100µs @4MHz
    ; call Tempo100us.8MHz ; Tempo 100µs @8MHz
    
    ENDIF
    return
    END
    mgduc, tu peux confirmer ?

  24. #23
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Effectivement, Le goto envoi 7 adresse en arrière mais il n'y a rien pour sortir de la...

  25. #24
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Je vais juste laisser une petite photo pour montrer que ça fonctionne...

    Nom : DSCN0391.jpg
Affichages : 181
Taille : 291,0 Ko

    Pour la boucle sans fin je ne sais pas, il doit sûrement manquer quelque chose qui fais sortir de la boucle.

    Quel avantage j'aurais à utiliser le busy flag?

  26. #25
    pilatomic

    Re : PIC 16F88 et LCD 2X16

    L'utilisation du busy flag permet de savoir exactement quand le LCD à finit de traiter l'instruction. Sans le busy flag, on utilise les durées worstcase fournies dans la doc constructeur. En résumé, avec le busy flag, tu pilote le LCD légèreement plus rapidement, car tu sais précisément quand il est prêt à traiter l'instruction suivante. Sans, tu attends juste assez longtemps entre 2 instructions pour être certain qu'il aura fini la précédente quand il recevra la nouvelle. Honnêtement, j'ai toujours fait sans ^^

  27. #26
    mgduc

    Re : PIC 16F88 et LCD 2X16

    daccord merci beaucoup

  28. #27
    invite092cb13c

    Re : PIC 16F88 et LCD 2X16

    Bonjour
    Je suis l'auteur de la routine LCD, le goto $-7 renvoie à un test de présence du busy flag.
    Il faut comprendre qu'il y a deux methodes utilisables avec cette routine, soit avec la pin RW, dans ce cas on ettend la confirmation que le LCD a fini de traiter une donnée, soit on n'utilise pas la pin RW et dans ce cas on travaille avec des tempos.
    Le programme utilise les lignes pour chaque methode en faisant de l'assemblage conditionnel. La condition est la definition ou non de LCD_RW.

    Pour d'autres infos, on peut me contacter en changeant dans mon mail le Ifrance.com par free.fr.

    Pour mgduc j'ai aussi ecris un fichier maquette pour le PIC16F88, on le trouve sur le site de Bigonoff troisième sujet dans la rubrique "Trucs, astuces, et aides" ou sur mon site: http://gedonet.free.fr/aide_pic/aide_pic.htm
    Dans ce fichier on trouve toutes les explications sur les oscillateurs.

    Gilles

  29. #28
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Merci beaucoup gedonet, ta routine m'a été de grande aide. Pour le goto $-7, comment la routine fais pour ne pas y revenir et d'étre encore envoyer au test? Pourquoi ça ne fonctionnais pas quand je branchais le RW?

  30. #29
    invite092cb13c

    Re : PIC 16F88 et LCD 2X16

    Citation Envoyé par mgduc Voir le message
    Merci beaucoup gedonet, ta routine m'a été de grande aide. Pour le goto $-7, comment la routine fais pour ne pas y revenir et d'étre encore envoyer au test? Pourquoi ça ne fonctionnais pas quand je branchais le RW?
    Bonjour
    Il me semble que tu as trouvé un bug, bravo, il va falloir que je corrige, il faut probablement ecrire un goto en dessous du test qui pointe pour sortir de la boucle, un truc du genre
    Code:
    	banksel	H'05'
    	bcf	LCD_RS
    	bsf	LCD_RW
    	bsf	LCD_E		; pour lire BF et 3  bits MSB de l'adresse
    	nop 
    	btfsc	LCD_pin_D7
    	goto	$+5
    	nop
    	bsf	LCD_E		; pour lire 4  bits LSB de l'adresse
    	nop
     	goto	$-5
    	bcf	LCD_E	
    	nop	
    	bcf	LCD_RW
    	banksel	H'05'
    Si tu as l'occasion de tester cette modif, tiens moi au courrant.
    J'utilise cette routine sans RW, le problème ne se pose pas et il y a longtemps que je l'ai ecrite, je n'avais même pas de LCD pour la tester.

    Gilles

  31. #30
    mgduc

    Re : PIC 16F88 et LCD 2X16

    Bonjours, je l'est tester, désolé, l'écran devient vide (sans aucune ligne) mais le programme ne fonctionne plus, j'ai ressouder RW à la mass.

    Merci beaucoup, je vais essayer de me pencher sur le problème et si je trouve quelque chose je t'en ferais part.

    Je pense modifier mon circuit pour passer RW à la mass et et au pic sans modif, J'ai penser à un petit interrupteur.

Discussions similaires

  1. Brancher LCD 2x16
    Par invite2f6724a6 dans le forum Électronique
    Réponses: 7
    Dernier message: 17/03/2013, 20h35
  2. lcd 2x16 PIC 16F84
    Par inviteadf3bc10 dans le forum Électronique
    Réponses: 4
    Dernier message: 02/08/2012, 18h44
  3. Aide Code en C Pic 16F88 - LCD HD44780
    Par invitec1a2f24b dans le forum Électronique
    Réponses: 6
    Dernier message: 26/10/2010, 21h08
  4. Routine LCD 2X16
    Par invite55fe29e6 dans le forum Électronique
    Réponses: 28
    Dernier message: 07/06/2007, 20h40
  5. LCD 2x16 caractères
    Par invite5d44ee6f dans le forum Électronique
    Réponses: 1
    Dernier message: 22/05/2004, 15h33
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...