Afficheur lcd 2x16 programmation
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 33

Afficheur lcd 2x16 programmation



  1. #1
    invite960f35e5

    Afficheur lcd 2x16 programmation


    ------

    bonjour à tous

    vu que je suis pas très très doué en programmation et que s est la 1 ere fois que je programme sur les PORTA, j aurais aimer que quelqu un m aide

    donc voici le schema :



    voici mon fichié lcd, je sais pas du tout si il est bon donc si vous pouvez voir la config

    donc ce que j aimerais , c est un simple truc , genre :

    Robot
    C'est parti

    voila donc si y avais moyen que quelqu un me face ca, sa serait super sympa

    Code:
    /*	PORTB bits 0-3 connectés au LCD data bits 4-7 (high nibble)
     *	PORTC bit 7 = LCD RS input (register select)
     *	PORTC bit 6 = LCD EN bit (enable)
     */
    #include <pic18.h>
    #include	"lcd.h"
    #include	"delay.h"
    
    static bit LCD_RS  @ ((unsigned)&PORTA*8+4);	// Register select
    static bit LCD_EN  @ ((unsigned)&PORTA*8+5);	// Enable
    //static bit LCD_RS;
    //static bit LCD_EN;
    //#define LCD_RS  RA4;
    //#define LCD_EN  RA5;
    
    
    #define	LCD_STROBE	((LCD_EN=1),(LCD_EN=0))
    
    void lcd_write(unsigned char c)					//envoi d'instruction rs=0
    {
    	PORTA = (PORTA & 0xF0) |  (c >> 4);		//masque des lsb et décalage droite
    	LCD_STROBE;											
    	PORTA = (PORTA & 0xF0) |  (c & 0x0F);	//masque 
    	LCD_STROBE;
    	delay_us(400);// je remplace 40 par 400
    }
    /*Clear and home the LCD*/
    void lcd_clear(void)
    {
    	LCD_RS = 0;
    	lcd_write(0x1);
    	delay_ms(20);// je remplace 2 par 20
    }
    /* write a string of chars to the LCD */
    void lcd_puts(const char * s)
    {
    	LCD_RS = 1;					// write characters
    	while(*s)
    		lcd_write(*s++);
    }
    /* write one character to the LCD */
    void lcd_putch(char c)
    {
    	LCD_RS = 1;	// write characters
    	PORTA = (PORTA & 0xF0) |  (c >> 4);
    	LCD_STROBE;
    	PORTA = (PORTA & 0xF0) |  (c & 0x0F);
    	LCD_STROBE;
    	delay_us(400);// je remplace 40 par 400
    }
    /*Place le curseur en position pos*/
    void lcd_goto(unsigned char pos)
    {
    	LCD_RS = 0;
    	lcd_write(0x80+pos);
    }	
    /* initialise the LCD - en mode 4 bits */
    void lcd_init(void)
    {
    	LCD_RS = 0;	// write control bytes
    	delay_ms(150);	// power on delay je remplace 15 par 150
    	PORTA = 0x3;	// attention!
    	LCD_STROBE;
    	delay_ms(50);// je remplace 5 par 50
    	LCD_STROBE;
    	delay_ms(1);// je remplace 100 par 1000
    	LCD_STROBE;
    	delay_ms(50);// je remplace 5 par 50
    	PORTA = 0x2;	// set 4 bit mode
    	LCD_STROBE;
    	delay_us(400);// je remplace 40 par 400
    	lcd_write(0x28);	// 4 bit mode, 2 lignes, 5x7 
    	lcd_write(0x08);	// display off
    	lcd_write(0x0C);	// display on, cursor off
    	lcd_write(0x06);	// entry mode
    }

    -----

  2. #2
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Salut.
    C'est quoi le problème ?

  3. #3
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    enfaite le probleme c est comment faire ché pas comment faut programmé

    donc par exemple :

    Code:
    #include <pic18.h>
    #include  <stdio.h> 
    #include <stdlib.h>
    #include "delay.h"
    #include "lcd.h"
    #include "usart.h"
    
    lcd_init ();
    lcd_clear ();
    
    while (1)
    {
    	lcd_goto (0);
    	lcd_puts ("  Robot  ");
    	lcd_goto (40);
    	lcd_puts ("  c est parti  ");
    }
    apres si tu vois plus haut , y a un fichié lcd.h que j ai montré , ché pas si s est bon et si mon code ici aussi est bon parce que sa allere de pas fonctionné

    je sais que y a un truc a faire avec la pin RA4 donc ché pas si s est bon ce code ci et le code lcd.h

  4. #4
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Si j'ai bien compris tu as un programme qui fonctionne sur port B et tu voudrais le passer sur le port A ?
    Parce que le schéma ne correspond pas à ton code.
    En plus la pin 6 (Enable) est reliée à la masse.
    Il faut au minimum utiliser : Enable, RS et les 4 bits de données.

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

    Re : Afficheur lcd 2x16 programmation

    Citation Envoyé par sdec25 Voir le message
    Si j'ai bien compris tu as un programme qui fonctionne sur port B et tu voudrais le passer sur le port A ?
    Parce que le schéma ne correspond pas à ton code.
    En plus la pin 6 (Enable) est reliée à la masse.
    Il faut au minimum utiliser : Enable, RS et les 4 bits de données.
    effectivement , je me suis mal expliqué

    j utilisais avant sur des port B et mnt faudrait passé sur les port A

    par contre , je comprend pas ce qui faut faire ...

    faut que je permutte enable et R/W ??? faut que je mettre R/W a la masse et enable sur RA4 ???

  7. #6
    sdec25

    Re : Afficheur lcd 2x16 programmation

    ok
    Les branchements sont corrects sauf les pins 5 et 6 inversées :
    Apparemment tu ne testes pas le Busy flag donc tu es toujours en écriture. Il faut donc relier la pin 5 (R/W) à la masse. La pin 6 doit être reliée à une sortie du port A.
    Il ne faut pas oublier de configurer les TRIS :
    TRISA &= 0xC0

    Le reste a l'air correct, j'ai la même chose chez moi.

  8. #7
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Je viens de voir autre chose :
    lcd_goto(40) : sur mon LCD l'adresse de la deuxième ligne est 0x40 et pas 40.

  9. #8
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    Citation Envoyé par sdec25 Voir le message
    ok
    Les branchements sont corrects sauf les pins 5 et 6 inversées :
    Apparemment tu ne testes pas le Busy flag donc tu es toujours en écriture. Il faut donc relier la pin 5 (R/W) à la masse. La pin 6 doit être reliée à une sortie du port A.
    Il ne faut pas oublier de configurer les TRIS :
    TRISA &= 0xC0

    Le reste a l'air correct, j'ai la même chose chez moi.
    donc enfaite faut que j inverse RA4 et le mettre sur la pin 6 et R/W , a la masse ???

    pour ce qui est du TRISA

    c est de ca que tu parles ???

    ADCON1=0x07;
    TRISA= 0b00000000;
    TRISB= 0b00000000;
    TRISC= 0b10000000;

    voila merci

  10. #9
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Citation Envoyé par mafiageo Voir le message
    donc enfaite faut que j inverse RA4 et le mettre sur la pin 6 et R/W , a la masse ???
    oui pour R/W à la masse

    Code:
    static bit LCD_RS  @ ((unsigned)&PORTA*8+4);	// Register select
    static bit LCD_EN  @ ((unsigned)&PORTA*8+5);	// Enable
    Dans ton code, RS (pin 4 du LCD) est sur RA4 et EN (pin 6 du LCD) sur RA5
    Donc soit tu fais les branchements correspondants, soit tu changes dans le code.

    Pour les TRIS :
    TRISA est bon (0 pour une sortie). Pour ADCON1 je ne sais pas (il faut vérifier dans la datasheet que tous les RA sont configurés en I/O numériques).
    Dernière modification par sdec25 ; 20/08/2008 à 13h41.

  11. #10
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    ah oui effectivement , si je veux laissé comme sur le schema , faut mettre ??

    static bit LCD_RS @ ((unsigned)&PORTA*8+5); // Register select
    static bit LCD_EN @ ((unsigned)&PORTA*8+4); // Enable

    mettre 5 sur RS et 4 sur EN ??

  12. #11
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Ca dépend si tu as modifié le schéma
    Si tu as mis la 5 à la masse, et EN sur RA4, alors oui
    Code:
    static bit LCD_RS @ ((unsigned)&PORTA*8+5); // Register select
    static bit LCD_EN @ ((unsigned)&PORTA*8+4); // Enable

  13. #12
    invitee0bbe70d

    Re : Afficheur lcd 2x16 programmation

    Bonjour,

    Ci-joint un lien qui contient un très bon tutoriel sur le pilotage des afficheurs LCD ;=) http://www.aurel32.net/elec/lcd.php

  14. #13
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    re bonjour, merci pour votre aide mais mon écran n allere tj pas de fonctionné ...

    pourtant j ai bien fait comme ta dis Sdec25 ...

    pourtant vous m avez dit que mon code etait bon et le fichié lcd aussi ...

    est ce que vous êtes sur si s est juste ??? si oui alors sa doit etre l ecran qui est défectueux vu que sa serait la seul solution qui serait possible si tout est oki ...

  15. #14
    sdec25

    Re : Afficheur lcd 2x16 programmation

    re
    Je ne suis pas sûr que le programme est bon car je ne l'ai pas testé, mais j'ai les mêmes instructions donc ça devrait fonctionner...
    Tu utilises quel PIC ? A quelle fréquence ?
    Quels sont les symptômes exactement ?

  16. #15
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    Citation Envoyé par sdec25 Voir le message
    re
    Je ne suis pas sûr que le programme est bon car je ne l'ai pas testé, mais j'ai les mêmes instructions donc ça devrait fonctionner...
    Tu utilises quel PIC ? A quelle fréquence ?
    Quels sont les symptômes exactement ?
    j utilise le pic18f2620

    je travaille a du 20 MHz

    et les symptomes c est que j ai un ecran noir , donc comme ci , j avais rien , c est comme ci , je l alimentais bêtement

    donc voila ché pas trop , j espere avoir des réponse assé rapidement vu que je dois l avoir fini pour lundi soir au plus tard

  17. #16
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Essaie déjà de descendre la fréquence à 1 Mhz.

    Et dans un post tu avais dit que ADCON1 = 0x07
    Citation Envoyé par sdec25
    Pour ADCON1 je ne sais pas (il faut vérifier dans la datasheet que tous les RA sont configurés en I/O numériques).
    D'après la datasheet la plupart des entrées sont analogiques, donc c'est sûr que ça ne marche pas. Mets plutôt ADCON1 = 0x0F

  18. #17
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    re bonjour,

    je ne pense pas que s est a cause de la fréquence , vu que j avais deja fais fonctionné un ecran avec un pic qui fonctionnait a 20Mhz

    sauf que c etait sur les portB du pic ....

    la c est sur les portA

    et c est la total galere

    je crois que c est du au RA4/TockI

    je crois que faut inversé le signal donc envoié un 0 pour mettre a 1

    Code:
    ADCON1=0x0F;
    TRISA= 0b00000000;   <= ici doit etre l erreur 
    TRISB= 0b00000000;
    TRISC= 0b10000000;
    donc voila ché plus trop ci sa ce li de droite a gauche ou de gauche a droite

    voila franchement , le fichié lcd.h , je sais pas du tout si il est correct mais bon , l erreur , je crois proviens de la TRISA

  19. #18
    sdec25

    Re : Afficheur lcd 2x16 programmation

    re
    Pourquoi ça n'irait pas ?
    TRISA = 0 donc tous les pins du port A sont des sorties.
    Essaie avec des LED pour ne être sûr. Et pourquoi il faudrait inverser le signal ?

    Tu peux redonner la correspondance RAx / numéro de broche du LCD ?

  20. #19
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    donc voila j ai mi comme ca dans le lcd.h

    Code:
    static bit LCD_RS @ ((unsigned)&PORTA*8+5); // Register select
    static bit LCD_EN @ ((unsigned)&PORTA*8+4); // Enable
    et voici les branchements



    mais ché pas avec les 2 sorties RA4 et RA5 , y a pas un truc qui faut faire dans la programmation ou quoi ???

    voila merci

  21. #20
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Citation Envoyé par mafiageo Voir le message
    mais ché pas avec les 2 sorties RA4 et RA5 , y a pas un truc qui faut faire dans la programmation ou quoi ???
    Il faut que TRISA4 et 5 soient à 0.

    Tu as un multimètre ou des LED ? Plutôt que chercher un problème dans le programme vérifie que tu as 5V ou 0V sur les sorties RA4 et RA5.

  22. #21
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    donc TRISA

    je dois mettre

    ADCON1=0x0F;
    TRISA= 0b11100111;
    TRISB= 0b00000000;
    TRISC= 0b10000000;


    comme ca je dois mettre ???

  23. #22
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    voila ce que sa donne avec

    ADCON1=0x0F;
    TRISA= 0b11100111;

    RA0 = 5,22 v
    RA1 = 5,14 v
    RA2 = 5,12 v
    RA3 = 1,11 v
    RA4 = 0,11 v
    RA5 = 5,12 v


    voila , c est assé special quand meme sa doit venir du RA3 qui je pense devrait avoir 5 v aussi ...

  24. #23
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    voila j ai essayé comme ca , la sa m allere plus correct ... mais pourtant , sa allere de pas fonctionné ...

    ADCON1=0x0F;
    TRISA= 0b11101111;

    RA0 = 5,22 v
    RA1 = 5,14 v
    RA2 = 5,12 v
    RA3 = 5,08 v
    RA4 = 0,11 v
    RA5 = 5,12 v

  25. #24
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Citation Envoyé par mafiageo Voir le message
    donc TRISA

    je dois mettre

    ADCON1=0x0F;
    TRISA= 0b11100111;
    TRISB= 0b00000000;
    TRISC= 0b10000000;


    comme ca je dois mettre ???
    Non, 0 pour sortie, 1 pour entrée.
    donc TRISA = 0;

  26. #25
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    voila j ai mi

    ADCON1=0x0F;
    TRISA= 0;

    voila les tensions

    RA0 = 1,52 v
    RA1 = 1,00 v
    RA2 = 0,93 v
    RA3 = 1,08 v
    RA4 = 0,10 v
    RA5 = 4,28 v

    sa me fait tj ecran noir ...

  27. #26
    sdec25

    Re : Afficheur lcd 2x16 programmation

    essaie ça :

    Code:
    while(1) {
    PORTA |= 0x3F
    attente...
    PORTA &= 0xC0
    attente...
    }
    et mesure les tensions, ou mets des LED pour voir le résultat.
    Si ça marche avec les LED, ça vient soit de l'écran, soit du programme.

  28. #27
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    euh pour le code , est ce juste ??

    parce que sa donne des erreurs

    Code:
    while(1) {
    PORTA |= 0x3F
    attente...
    PORTA |= 0xC0
    attente...
    }
    faut que je laisse tout le code comme ca ???
    faut pas que je change " attente..." ???

  29. #28
    sdec25

    Re : Afficheur lcd 2x16 programmation

    Ben pour l'attente tu mets un delai d'une seconde par exemple, de quoi mesurer les tensions au multimètre ou de voir la LED clignoter.
    Je sais pas si tu as des fonctions delai_ms, sinon utilise Delay10KTCYx()

    Et c'est PORTA &= 0xC0 pas |=

  30. #29
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    oki v essaié sa

    Code:
    while(1) {
    PORTA |= 0x3F
    delay_ms(1000)
    PORTA &= 0xC0
    delay_ms(1000)
    }

  31. #30
    invite960f35e5

    Re : Afficheur lcd 2x16 programmation

    voila je viens de testé et sa led clignote bien sur les portA

    donc sur RA0,RA1,RA2,RA3,RA4,RA5

    donc ce qui veut dire que sa serait mon ecran ???

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Afficheur LCD 2X16 caractères en mode 4 bits
    Par invitebecbfa50 dans le forum Électronique
    Réponses: 8
    Dernier message: 11/02/2013, 11h28
  2. Afficheur LCD 2x16 caractères
    Par invite958adb57 dans le forum Électronique
    Réponses: 9
    Dernier message: 22/02/2012, 12h00
  3. Programmation LCD 2x16 en C
    Par invite3c35244f dans le forum Électronique
    Réponses: 6
    Dernier message: 10/10/2007, 08h09
  4. Branchement d'un potentiometre pour afficheur LCD 2x16
    Par invitef158fb71 dans le forum Électronique
    Réponses: 4
    Dernier message: 23/02/2007, 17h52
  5. Afficheur LCD 2x16
    Par invite308aa073 dans le forum Électronique
    Réponses: 4
    Dernier message: 01/02/2006, 15h11
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...