begin process at 2012 05 28 16:38:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Afficheur LCD sous 16F887


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales