Afficheur LCD 2*16 microcontroleur PIC
Répondre à la discussion
Affichage des résultats 1 à 23 sur 23

Afficheur LCD 2*16 microcontroleur PIC



  1. #1
    Benq720

    Afficheur LCD 2*16 microcontroleur PIC


    ------

    Bonjour,

    Je viens de faire un montage pour tester un afficheur LCD 2*16 (HD44780) avec un PIC 16F877A. J'ai donc programmé le pic avec un exemple de MicroBasic simplifié pour LCD. Cela fonctionne mais pas correctement, dès fois l'afficheur affiche bien ce que je souhaite mais la plus part du temps il m'affiche l'ecran de reset. Je vois pas d'où le problème peut venir. Si quelque pourrait m'aider sa serait sympa ?

    Cordialement

    -----
    Images attachées Images attachées

  2. #2
    sin92

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Tu maintiens constamment l'alim du LCD on est d'accord?

    T'appel quoi l'ecran de reset?

    Tu fou ton LCD en mode 4 bits ou 8 bits?

    J'imagine que tu n'a acces qu'au fichier .hex et non au fichier .asm ou .c?

  3. #3
    gabuzo

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Les seize petits carrés sur la ligne du haut ça indique souvent un afficheur qui ne reçoit plus de données ou des données qu'il ne comprend pas, un problème de soft sans doute...

    Essaie de nous envoyer ton code.
    Je suis Charlie

  4. #4
    Benq720

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Oui l'alimentation du LCD est constante et il est en mode 4 bits. L'ecran de reset c'est pour moi l'ecran qui affiche juste la ligne du haut quand on l'alimente juste. Pour le schéma, je l'ai pris sur ce site la : http://dessoudeurs-ex.lebonforum.com...-afficheur-lcd mais j'utilise un quartz de 8 MHz avec ses condos de 24 pF. Pour la programmation je me sert de mikroBasic Pro dont voici le code :

    '*
    ' * Nom du projet:
    ' Lcd_Test
    ' * Configuration:
    ' MCU: PIC16F877A
    ' Oscillator: HS, 08.0000 MHz
    ' Ext. Modules: Character LCD 2x16
    ' *

    program Lcd

    dim LCD_RS as sbit at RB4_bit
    LCD_EN as sbit at RB5_bit
    LCD_D4 as sbit at RB0_bit
    LCD_D5 as sbit at RB1_bit
    LCD_D6 as sbit at RB2_bit
    LCD_D7 as sbit at RB3_bit

    LCD_RS_Direction as sbit at TRISB4_bit
    LCD_EN_Direction as sbit at TRISB5_bit
    LCD_D4_Direction as sbit at TRISB0_bit
    LCD_D5_Direction as sbit at TRISB1_bit
    LCD_D6_Direction as sbit at TRISB2_bit
    LCD_D7_Direction as sbit at TRISB3_bit


    dim txt1 as char[8]
    txt2 as char[7]
    i as byte

    main:
    TRISB = 0
    PORTB = 0xFF
    TRISB = 0xFF

    txt1 = "Ceci est"
    txt2 = "un test"

    Lcd_Init()
    Lcd_Cmd(_LCD_CLEAR)
    Lcd_Cmd(_LCD_CURSOR_OFF)
    Lcd_Out(1,6,txt1)
    Lcd_Out(2,6,txt2)
    Delay_ms(2000)
    Lcd_Cmd(_LCD_CLEAR)
    end.

    PS: Sinon doit on préciser au PIC la fréquence du quartz, si oui comment fait-on ?

    Merci de vos réponse.
    Dernière modification par Benq720 ; 14/06/2012 à 17h00.

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

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Tu peux envoyer le code de Lcd_init() stp ?
    Et Lcd_Cmd() merci

  7. #6
    invitefaaca50b

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Question bete: les timings d'initialisation sont bons? et aussi la broche R/W est elle reliee a quelque chose? masse? +VCC???

  8. #7
    zotchi52

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Salutation,
    En regardant tes photos, je me suis rappelé d'un problème que j'avais y a pas longtemps. Je testais moi aussi un LCD et de la même manière que toi avec une plaque d'essai identique à la tienne, parfois ça affiche parfois non... J'ai changé de plaque mais cette fois avec des soudures et ça a marché !

  9. #8
    sin92

    Re : Afficheur LCD 2*16 microcontroleur PIC

    De toute facon si c'est un exemple le fichier marche niquel ca doit être un probleme de connexion comme le dis zotchi ou franck

  10. #9
    invitefaaca50b

    Re : Afficheur LCD 2*16 microcontroleur PIC

    +1 faux contacts comme dit zotchi ou broche R/W non mise a la masse comme preconisé dans les datasheet le R/W sert a fixer le sens de dialogue de l'afficheur et de memoire, on utilise la broche a la masse, mais je peux me tromper.... en tout cas si on se trompe, l'afficheur ne sera pas configuré. +1 R/W doit etre relié a la masse, je viens de verifier...

  11. #10
    sin92

    Re : Afficheur LCD 2*16 microcontroleur PIC

    T'es sur de ton coup franck?

    J'ai programmer le HD machin sous 4 bits et donc jle connais un peu par coeur : RW à 0 pour un cycle d'ecriture donc t'envoie la commande MAIS RW à 1 pour un cycle de lecture notamment pour tester le busy flag (et voir si le driver du LCD n'est pas occupé) donc RW doit etre utiliser enfin jregarde ca de plus pret demain jdois filer la

  12. #11
    invitefaaca50b

    Re : Afficheur LCD 2*16 microcontroleur PIC

    ok je viens de verifier, on peut tres bien ne pas utiliser r/w en la mettant a la masse. l'afficheur recevra uniquement les commandes et datas. mais on ne pourra rien avoir de lui.
    Images attachées Images attachées  

  13. #12
    sin92

    Re : Afficheur LCD 2*16 microcontroleur PIC

    exact mais le truc c'est que lors de l'ecriture d'une instruction il faut tester le busy flag voir si le driver n'est pas occupé et pret a recevoir la commande , ca sert notamment pour foutre le lcd en mode 4 bits apres des temporisations de 15 ms entre chaque commande de mémoire.
    Techniquement et si tu veux faire ca propre le RW doit etre relier a une sortie digitale de ton pic d'ailleurs regarde le fichier .c (ou autre) de ta fonction LCD_cmd() ou cmd_Lcd() techniquement il doit tester le busy flag dont mettre le RW à 1 a un moment donné.

    Bref pour en revenir au sujet initial, c'est un problème de connexion à 90%.

  14. #13
    invitefaaca50b

    Re : Afficheur LCD 2*16 microcontroleur PIC

    oui, pour etre parfaitement cadré dans la norme, on utilise une sortie pour piloter R/W. Mais dans la pratique, on ne s'en preoccupe pas. J'attend toujours de savoir ou est raccordé R/W sur le montage du requerant...
    Capeut aussi etre un soucis de duree mini des timings lors des sequences d'initialisation... des fois si on est un peu court, ca suffit pour tout planter...
    En plus, la plupart des routines pour les LCD sont en 4MHz, a savoir si elle a ete adaptee pour un quartz a 8MHz...

  15. #14
    sin92

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Hm oui et non pour la pratique il est clairement spécifié dans la doc du driver qu'il faut tester le busy flag (donc RW à 1 ) avec une boucle while pour être certain que ton driver accepte la commande.
    Tu peux faire sans pas de problème mais c'est pas propre.


    Voici mon code d'initialisation si ca te dis bien sur il marche :

    Code:
    void init_LCD()
    {
    	VCC=1;                   //allumage du LCD
    	tempo_N_ms(50);
    	PORTD=0x83;      //RS et RW à 0
    	E=1;
    	E=0;
    	tempo_N_ms(30);
    	PORTD=0x83;
    	E=1;
    	E=0;
    	tempo_N_ms(30);
    	PORTD=0x83;
    	E=1;
    	E=0;
    	tempo_N_ms(30);     //ici on tourne en 4 bits 
    	PORTD=0x82;
    	E=1;
    	E=0;
    	tempo_N_ms(30); //on a besoin du 2 ou non? quand j'enleve ca marche aussi
    
    	cmd_LCD(0x28); //4 bits 2lignes font 5*7
    	cmd_LCD(0x0C); //display on cursor off blinking off
    	cmd_LCD(0x01); //clear display
    	cmd_LCD(0x06); 
    	tempo_N_ms(30);
    }
    Oui il faut que tu check tes temporisations logicielles voir pour quel type de quartz elles sont faites.
    Dernière modification par sin92 ; 15/06/2012 à 10h28.

  16. #15
    invitefaaca50b

    Re : Afficheur LCD 2*16 microcontroleur PIC

    oui voir les routines pour la compatibilité 8MHz vu ici j'avais pas revé:

    '*
    ' * Nom du projet:
    ' Lcd_Test
    ' * Configuration:
    ' MCU: PIC16F877A
    ' Oscillator: HS, 08.0000 MHz
    ' Ext. Modules: Character LCD 2x16
    ' *

  17. #16
    Benq720

    Re : Afficheur LCD 2*16 microcontroleur PIC

    La broche R/W est reliée a la masse et j'ai testé avec un autre LCD mais le résultat est le même toujours juste la ligne du haut. Pour le langage je suis en basic et non en c donc comment je fais pour gérer RW en basic. Quand je bouge le circuit il arrive parfois que le texte s'affiche, cela vient sans doute des contact. Pour répondre à Franck-026 j'ai repris un exemple dans mikroBasic pour contrôler un LCD avec une platine easypic et un quartz de 8 MHz avec les library de base qui, je pense sont adaptées pour ce quartz, mon montage a réussi a afficher un texte pendant quelques instants donc je ne croie pas que les library ne sont pas correct mais je me trompe peut être.
    Je pense que cela viens de la plaque sans soudure alors je vais de suite souder le tout et j'espère que ça vas mieux marcher je vous tiens au courant du résultat.

  18. #17
    invitefaaca50b

    Re : Afficheur LCD 2*16 microcontroleur PIC

    donc pour reprendre:

    rw a la masse, ca ne gene pas en fait, si les tempos sont correctes et meme un peu plus longues, ca marchera nickel, mais gerer le RW serait mieux.
    8MHz semble conforme
    A verifier quand meme le cablage.. 4 bits, on utilise les 4 entrees poids fort de l'afficheur...

    Euh, gaffe quand meme avec microbasic... je prefere quand meme travailler en ASM et le C est aussi adapté, car les timings sont reglables au petits oignons...

  19. #18
    gabuzo

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Avec la librairie fournie par Mikrobasic pro rw doit être relié à la masse ainsi que db0 à db3 en mode 4 bit. La vitesse du quartz a bien sûr son importance, dans la fenêtre de Mikrobasic il faut allet dans project/edit project/oscillator frequency et afficher la fréquence du quartz que tu utilises. Ne pas oublier non plus de choisir la bonne option dans "oscillator selection".
    Je suis Charlie

  20. #19
    Benq720

    Re : Afficheur LCD 2*16 microcontroleur PIC

    j'ai vérifie mon montage, j'utilise bien les 4 bits de poids fort mais j'ai remarquer un truc plutôt bizarre, j'alimente le circuit par usb et quand je le branche sa fait rien mais si je touche la masse du pc et que je pose l'autre main sur le bureau a coté du circuit le texte s'affiche bien a l’écran mais avec quelques que petit raté, sa clignote a moitié aléatoirement et des caractères s'affiche de temps en temps un peu n'importe ou. D'où cela pourrait venir ?

  21. #20
    invitefaaca50b

    Re : Afficheur LCD 2*16 microcontroleur PIC

    ca sent le MCLR en l'air... on parie???

    ta broche reset du PIC est cablee comment?

  22. #21
    Benq720

    Re : Afficheur LCD 2*16 microcontroleur PIC

    Oui c'est exacte, je ne l'ai pas câbler. Je suis vraiment désolé de vous déranger pour on connerie comme ça.
    Je viens de corriger et ça fonctionne impeccable. Merci beaucoup et encore dsl

  23. #22
    invitefaaca50b

    Re : Afficheur LCD 2*16 microcontroleur PIC

    warf ca arrive. tu soude une resistance de 10K entre Vcc et MCLR, et un condo de 100nF 50V entre MCLR et masse, comme ca ton PIC tournera moins carré...
    Vicieuse la panne, autant que simple... Ca arrive...

  24. #23
    Benq720

    Re : Afficheur LCD 2*16 microcontroleur PIC

    oui c'est fait est ça marche très bien maintenant j'y penserai la prochaine fois ^^
    Merci à vous

Discussions similaires

  1. Afficheur LCD et Pic 16F877
    Par invite47ad6754 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/06/2010, 21h44
  2. Microcontrôleur et afficheur LCD
    Par invite25e183a5 dans le forum Électronique
    Réponses: 25
    Dernier message: 20/06/2010, 12h38
  3. CAN du pic et afficheur LCD
    Par invite1382cb9f dans le forum Électronique
    Réponses: 7
    Dernier message: 20/04/2010, 13h38
  4. Afficheur LCD KS0070B et PIC 16f628
    Par mmarc2007 dans le forum Électronique
    Réponses: 7
    Dernier message: 16/08/2009, 11h21
  5. Réponses: 4
    Dernier message: 01/04/2008, 20h15
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...