Accueil > Forum > > > > Afficheur LCD sous 16F887
Afficheur LCD sous 16F887
samedi 1 octobre 2011 à 08:55:38 |
Afficheur LCD sous 16F887

RENTMEESTERS
|
Bonjour à tous,
J'ai un projet réunissant un PIC 16F887 et un afficheur LCD.
J'ai donc un LCD.h que voici :
Code C/C++ : #define RS RB4
#define E RB5
#define LCD PORTB
// Clear Display
#define CLS 0x01
// Display & Cursor Home
#define HOME 0x02
// EntryMode
#define CURSOR_DEC 0x04
#define CURSOR_INC 0x06
#define DISP_SHIFT_ON 0x05
#define DISP_SHIFT_OFF 0x04
// LCD_Display
#define DISPLAY_ON 0x0C
#define DISPLAY_OFF 0x08
#define CURSOR_ON 0x0A
#define CURSOR_OFF 0x08
#define BLINK_ON 0x09
#define BLINK_OFF 0x08
// LCD_FonctionSet
#define MODE_8BIT 0x30
#define MODE_4BIT 0x20
#define MODE_2LINE 0x28
#define MODE_1LINE 0x20
#define FONT_5x7 0x20
#define FONT_5x10 0x24
// LCD_ModeSelection
#define COMMAND_MODE 0
#define DATA_MODE 1
//===========================================================
void Set_Enable();
void Lcd_SendCommand(unsigned char Command);
void Lcd_SendData(unsigned char Data);
//===========================================================
void Lcd_SendCommand(unsigned char Command)
{
RS = COMMAND_MODE ;
LCD = Command;
Set_Enable();
}
//===========================================================
void Lcd_SendData(unsigned char Data)
{
RS = DATA_MODE ;
LCD = Data;
Set_Enable();
}
//===========================================================
void Set_Enable()
{
unsigned char i;
E = 1; for (i=0;i<200;i++);
E = 0; for (i=0;i<200;i++);
}
//===========================================================
void Lcd_Init()
{
Lcd_SendCommand (MODE_8BIT | MODE_2LINE | FONT_5x7);
Lcd_SendCommand (MODE_4BIT | MODE_2LINE | FONT_5x7);
Lcd_SendCommand(DISPLAY_ON | CURSOR_OFF | BLINK_OFF);
Lcd_SendCommand(CURSOR_INC | DISP_SHIFT_OFF) ;
Lcd_SendCommand(CLS );
}
//===========================================================
void Lcd_LigneColonne(unsigned char Ligne, unsigned char Colonne)
{
Lcd_SendCommand(DISPLAY_ON | CURSOR_OFF | BLINK_OFF);
// if(Ligne==1) Lcd_SendCommand (0x80+Colonne);
// if(Ligne==2)
Lcd_SendCommand (0xC0+Colonne);
}
//===========================================================
J'essaie donc d'afficher qqchose comme suit :
Code C/C++ : #include <pic.h>
#include <LCD.h>
char T[]="Coucou";
void main() {
Set_Enable();
//Lcd_SendCommand ();
Lcd_Init ();
Lcd_LigneColonne(1,1);
Lcd_SendData(T);
}
Cette merveille de programme à été réaliser pour tester l'afficheur, car mon programme complet n'affichait rien...
Mais rien ne fonctionne !
J'utilise pour test un EsyPic6 : l'afficheur est sur le port B (B0 à B4 en mode 4 bits), E en RB5 et RS en RB4...
Quelqu'un peut-il m'expliquer "la chose" que je n'ai pas vue ??
Merci pour vos bon conseils.
Geoffroy
|
|
samedi 1 octobre 2011 à 21:50:54 |
Re : Afficheur LCD sous 16F887

eclems
|
Salut ceci est un forum pour Delphi et non cPP peut tu posez ta question sur cppfrance.fr
cordialement et bonne continuation
|
|
samedi 1 octobre 2011 à 23:03:23 |
Re : Afficheur LCD sous 16F887

TychoBrahe
|
Salut,
@RENTMEESTERS : Je ne saurais pas te répondre précisément au sujet de ton problème, cependant je tient à te faire remarquer quelques choses importantes que tu devrais corriger :
- Mettre du code dans un .h est une mauvaise idée. Mettre des macros et des prototype, pas de soucis, c'est fait pour, mais pas de code.
- Les variables globales sont en général une très mauvaise idée, tu ne devrais pas en utiliser.
- Bien nommer ses variables avec un nom explicite est une bonne chose. Là tu as clairement des variables que tu devrais renommer si tu ne veux pas poser des problèmes de compréhension de ton code. Ceci est d'autant plus vrai quand la variable est globale...
@eclems : Non, ceci n'est pas le forum pour Delphi, c'est le bar et donc visible partout. Mais en effet tu as tout à fait raison de dire que ce sujet devrait se trouver sur cppfrance qui, lui, est spécifique au C/C++
|
|
dimanche 2 octobre 2011 à 08:16:33 |
Re : Afficheur LCD sous 16F887

RENTMEESTERS
|
Salut,
Merci pour tes remarques, je vais y prêter attention...
Je suis en seconde année de bach en électronique, et je dois bien avouer que je ne suis pas fortich en C/C++ !!
Merci quand même pour vos bons conseils !!
Geoffroy
|
|
lundi 3 octobre 2011 à 08:49:17 |
Re : Afficheur LCD sous 16F887

buno
|
Hello,
Je déplace dans la sectionC/C++
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
lundi 3 octobre 2011 à 08:56:45 |
Re : Afficheur LCD sous 16F887

buno
|
Code C/C++ : void Lcd_SendCommand(unsigned char Command)
{
RS = COMMAND_MODE ;
LCD = Command;
Set_Enable();
}
A priori, ceci ne risque pas de compiler car RS et LCD sont des constantes définies pas #define au début de ton fichier...
De plus, d'après les nombreuses nombreuses concernant les PIC de ce site, je ne vois pas, dans ton code, de outputb()...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
Cette discussion est classée dans : void, char, mode, define, lcd
Répondre à ce message
Sujets en rapport avec ce message
chui en BUGG depuis et sans reponse [ par louatiamin ]
pour ceux ki ne connaisse pas TC++ 3.0(sous dos) et ne connaisse rien sur les librairie statique ou bien le mode real 16bits c est vraiment unitile d
Memory Pool [ par guiguikun ]
Bonjour,j'ai téléchargé la partie du code source de Quake3 releasé par ID Software par curiosité.Je l'ai lu pour voir un peu comment le jeu fonctionna
Pb affichage bmp envga c/asm [ par 030417 ]
Bonjour à tous,Je suis en train d'essayer d'afficher un bmp en c avec asm sous dos en vga (13h) . j'utilise comme compilateur borland c++ 3.0, mais je
Probleme avec une liaison serie [ par xtrememan ]
Voila je dois effectuer une reception de trame avec une liaison serie par le biais d'un programme en C. J'ai reussis l'emission,mais je reste bloquer
probleme sur une classe [ par NerOcrO ]
Voici mon code :#include #include class Chanson //classe Chanson{ public: int Duree; char TypeDeFichier[3], Auteur[50], Titre[50], Interprete[50
petite question mais ke j'ai besoin [ par superoi ]
bon \jour je sais que c'est con mais j'ai vraiment besoin de savoir c'est pour savoir si ca existe en c ca : long (*f)(void)(char *str); et est ce
PROBLEME NETSEND [ par zzzzzz ]
En fait j'essaye d'envoyer un message par la fonction net send via internet a ordi qui posssede xp. Si je mjet mon ip ca marche et si je met l'ip de q
pb eof en C++ le dernier element est lu 2 fois :( [ par panini21 ]
salut a tousvoila g un prog qui permet de creer une 'bibliotheque de jeux'a savoir :les renseignement du jeu sont le prix, le nom, la descriptiopn et
Crash a l'execution mais non en mode de debuggage [ par cybermatthieu ]
La si je roule le programme avec le mode de debugage tout fonctionne a merveille il termine l'execution normalement. Mais si je roule le programme ( s
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|