Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Problème contrôle lcd sur 16f1937
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#31 Message par Guest » ven. 15 avr. 2016 01:23

comment ca marche

Déjà petite boulette, dans le fichier LIB_LCD.c vous virez le fichier entête (#include "tempori.h" //entête macro de la gestion du temps) qui est mon fichier macro pour mes tempos. Si les _delay_us ne fonctionnent pas; je vous donnerais ce fichier . Vous virez aussi, le spg busy qui en état ne fonctionne pas.

Alors tout part et est dans le fichier entête.Tout ce qui est encadré en pointille vous devez le réglé a votre demande, exemple:

Code : Tout sélectionner

#define Donnée     PORTC                 // nous sommes sous 16F        //. 
                                                                        //.   
/* Pins connectés sur le LCD */
//.                                             
#define RW         PORTBbits.RB2
#define RS         PORTBbits.RB1                                        //.
#define E          PORTBbits.RB0
//.
#define _XTAL_FREQ 20000000             // oscillator frequency         //.


Ici c'est mes données sont sur le PORTC les pins RW RS E sont respectivement sur RB2 RB1 RB0 donc a vous suivant votre câblage de faire la modif de même pour XTAL_FREQ qui est l'etalon pour les delays

autre exemple

Code : Tout sélectionner

/* Fonction Set divers definitions */
#define QUATRE_BIT        0             /* 4-bit Interface   */
#define HUIT_BIT          16            /* 8-bit Interface   */
#define LIGNE1            0             /* LCD  1 LIGNE      */
#define LIGNE2            8             /* LCD 2 LIGNES ET + */
#define TAILLE_5X7        0             /* MATRICE 5x7       */
#define TAILLE_5X10       4             /* MATRICE 5x10      */   
//..........................................................................
#define SET               32 | (HUIT_BIT) | (LIGNE2) | (TAILLE_5X10)    //.
//..........................................................................


l'instruction SET qui sert a l'init du LCD. SET ici est en mode HUIT_BIT, 2 lignes, et plus en taille 5x10 .Si vous voulez passer en mode 4bits il suffit de replacer HUIT_bit par QUATRE_BIT et SET devient:

Code : Tout sélectionner

#define SET               32 | (QUATRE_BIT) | (LIGNE2) | (TAILLE_5X10)    //.

c'est pareil pour

Code : Tout sélectionner

//...........................................................................
#define ECRAN_CURS        0b00001000 | (DISON) | (CURSEUR_ON) | (CLIGN_ON)//.
//...........................................................................

ici nous avons le display sur on le curseur sur on le clignotement curseur sur on

Il en va de meme ,pour toutes les instructions.(4 instructions sont modifiables)
Niveau routines elles sont dans le .h

Sinon les voici

Code : Tout sélectionner

void Clear_XC8_LCD (void);                          //efface écran curseur haut gauche
void DD_RAM_XC8_LCD (unsigned char,unsigned char);  //position curseur ligne colonne
void Ecran_Curs (unsigned char);                    //A/M écran curseur
void Home_XC8_LCD (void);                           //curseur haut gauche
void Init_XC8_LCD (void);                           //initialisation LCD
void Pulse_XC8_LCD (void);                          //validation donnée port lcd
void Write_XC8_LCD (unsigned char *pLCD,int);       //écriture chaîne caractères
void Instruc (unsigned char jeux);            //envoi un instruction ex;display_off


La Pulse_LCD qui est la clef de voûte, vous ne l'appelez jamais, c'est les autres routines qui s'en chargent.
La routine instruc est la, pour par exemple ,le display on/off, en cas de mise en mode sleep ou pour arrêter, ou mettre en service le curseur

voila cette lib fonctionne aussi bien sur 16F et 18F 4/8 bits ,juste ! attention au delay, pour les contrôleurs HD44780 et KS0066U

si problème, question sur l'init tempo ou autre au plaisir de vous lire ;)

A+

PS ne pas toucher au fichier source sauf pour les modifs plus haut allez pour eviter cela le fichier modifie source
LIB_LCD.c
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Problème contrôle lcd sur 16f1937
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#32 Message par Jérémy » sam. 16 avr. 2016 10:22

Très jolie LIB ! :bravo:

Pour quelqu'un qui fait de l'ASM, tu gére le C très bien !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Problème contrôle lcd sur 16f1937
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#33 Message par Guest » sam. 16 avr. 2016 11:20

Merci
NON j'aime bien aussi faire un projet en C, le problème c'est qui ne faut pas, que je le decompli sinon j'utilise alors Macro ou inline (bien aussi ca ;) ) est la......

Pour revenir a la lib, elle simple, AMHA lisible, Le problème c'est que l'on ne peut pas la fermer,et faire appel a un fichier objet, comme la lib math par exemple, car il y a beaucoup de paramètres qui rentrent en jeux et a modifier. On aurait pu,les passer par les fonctions du style int(char) , mais il faut allez dans la DS et reconstituer le char, alors que tout est dans le fichier entête.Ce qui pose aussi une autre question: manier d'incorporer ces propres LIB ,dans un projet ,et la c'est une autre sujet, tres vaste, sujet avec plein plein d’opportunités (LIB ASM avec du C) par exemple a suivre ........

A+

Problème contrôle lcd sur 16f1937
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#34 Message par Guest » dim. 17 avr. 2016 20:51

Merci ! c'est mieux avec un Smileys

Problème contrôle lcd sur 16f1937
pooshy
Membre
Membre
Messages : 5
Enregistré en : mars 2016

#35 Message par pooshy » ven. 3 juin 2016 09:54

Bonjour,
Sorry pour cette longue période sans nouvelle.
Petit retour sur mon problème de librairie qui semble avoir été corrigé. J'ai simplement réajusté les delays. Il semble que le 16F1937 soit bien capricieux.
Problème résolut ou vis caché ? Je vous tiendrais au courant si un problème persiste.
Ps: Merci pour ton partage Maï

Cdt.


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 17 invités