Language C et LCD

Language C et LCD - C - Programmation

Marsh Posté le 12-03-2007 à 16:33:43    

Bonjour à tous et a toutes,
 
Nouveau sur ce forum, j'ai quelques questions a poser.
 
Je suis dans le petrain avec mon projet de bts electronique ayant pr theme une centrale d'alarme (Conception d'une carte Recepteur Universel qui permet de recuperer une trame venant d'appareil communiquant par courant porteur)
 
Mon probleme réside dans la programmation. J'ai épluché des tonnes de doc sur le net ou sur différents forums et rien y fait je ne comprend pas. Je programme en C et j'affiche sur un LCD HD44780 le tout venant d'un pic 16f648
 
Par exemple je ne comprend pas comment on fait pr que l'entrée de validation (E) reste a l'état haut pendant 450ns
Je ne comprend pas également comment on programme ce fichu pic pr initialiser le LCD ou tout simplement pr permettre d'afficher la trame. ça fait pas mal de temps que je suis dessus le retard s'accumule j'ai foiré ma revu de projet 1 mes profs m'ont dit de continuer a éplucher la doc et c'est ce que je fais.
 
Je ne demande pas qu'on me fasse le programme mais qu'on puisse me mettre, si possible, sur de bon rail car la ça me soule vraiment !!!
 
J'ajoute que j'ai raté la premiere fois le bts de 6 points car une des raisons fait que j'ai foiré mon projet de l'année derniere (8) ... et pr ne pas que ça recommence je me suis mis au boulot mais la ça me dépasse encore ... et j'ai pas envi de le rater une 2eme fois. Certain d'entre vous savent certainement l'importance qu'a le projet en terme de coeff avec des points qui peuvent rattraper d'autres matieres.
 
Merci d'avance


---------------
Lancedelot
Reply

Marsh Posté le 12-03-2007 à 16:33:43   

Reply

Marsh Posté le 12-03-2007 à 16:58:06    

lancedelot78 a écrit :

Bonjour à tous et a toutes,

 

Nouveau sur ce forum, j'ai quelques questions a poser.

 

Je suis dans le petrain avec mon projet de bts electronique ayant pr theme une centrale d'alarme (Conception d'une carte Recepteur Universel qui permet de recuperer une trame venant d'appareil communiquant par courant porteur)

 

Mon probleme réside dans la programmation. J'ai épluché des tonnes de doc sur le net ou sur différents forums et rien y fait je ne comprend pas. Je programme en C et j'affiche sur un LCD HD44780 le tout venant d'un pic 16f648

 

Par exemple je ne comprend pas comment on fait pr que l'entrée de validation (E) reste a l'état haut pendant 450ns
Je ne comprend pas également comment on programme ce fichu pic pr initialiser le LCD ou tout simplement pr permettre d'afficher la trame. ça fait pas mal de temps que je suis dessus le retard s'accumule j'ai foiré ma revu de projet 1 mes profs m'ont dit de continuer a éplucher la doc et c'est ce que je fais.

 

Je ne demande pas qu'on me fasse le programme mais qu'on puisse me mettre, si possible, sur de bon rail car la ça me soule vraiment !!!

 

J'ajoute que j'ai raté la premiere fois le bts de 6 points car une des raisons fait que j'ai foiré mon projet de l'année derniere (8) ... et pr ne pas que ça recommence je me suis mis au boulot mais la ça me dépasse encore ... et j'ai pas envi de le rater une 2eme fois. Certain d'entre vous savent certainement l'importance qu'a le projet en terme de coeff avec des points qui peuvent rattraper d'autres matieres.

 

Merci d'avance


Bonjour

 

Tu devrais trouver ici ton bonheur
http://www.piclist.com/techref/mic [...] /index.htm
Pour les 450ns c'est un temps mini de mémoire, donc il faut voir la vitesse de ton PIC, mais avec une fréquence d'horloge standart, le temps entre 2 instructions est suppérieur a 450ns, donc il suffit de passer enable a 1 puis a 0 l'instruction suivante, et l'afficheur le prend en compte.
Dans le lien ci dessus, tu as les deux programmes qui vont bien pour faire l'affichage sur ton lcd, il suffit de changer les adresses des ports suivant ta connectique au début du .C

 

Voilà


Message édité par grouhic le 12-03-2007 à 17:03:18
Reply

Marsh Posté le 29-03-2007 à 21:46:43    

Bonjour moi aussi j'ai un probleme de programmation en C avec MPLAB et PIC C. Voila mon programme:

Citation :

#include <16F877.H>
#device ICD=TRUE
#fuses  XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
 
#define LcdRs PIN_B0
#define LcdRw PIN_B1
#define LcdEn PIN_B2
#define LcdRe PIN_B3
 
char caractere,x;
char liste[17]={0x00};
char  TableInitL1[5] = {0x01,0x38,0x02,0x0E,'%'};     //{raz,8bits 2lignes,curseur clignotant,curseur ligne 1,%}
char  TableInitL2[4] = {0x38,0x02,0xC0,'%'};     //{8bits 2lignes,curseur clignotant,curseur ligne 2,%}
 
char  TableAllumage[] = {"   Bienvenue    %"};
 
char  TableL1ManPr[]={"MANUEL     HH:MM%"};
char  TableL2ManPrePr[]={"MODE MANU ACTIF %"};
char  TableL2ManPr[]={"X=xxxx    Y=yyyy%"};
 
char  TableL1AutoPr[]={"AUTO         HH:MM%"};
char  TableL2AutoPrePr[]={"MODE AUTO ACTIF %"};
char  TableL2AutoPrFinal[]={"P1 X=xxxx Y=yyyy%"};
 
char  TableL1ChangeClk[]={"CHANGER HORAIRE %"};
char  TableL2ChangeClk[]={"     HH:MM      %"};
 
char  TableL1ImportProg[]={"IMPORTER PROG?  %"};
char  TableL2ImportProg[]={"     PROG 1     %"};
 
char  TableL1ChoixProg[]={"CHOIX PROGRAMME %"};
char  TableL2ChoixProg[]={" PROGRAMME N°1  %"};
 
void RETRO(void);
void SEND(char,char);
void TESTBUSY(void);
void InitL1(void);
void InitL2(void);
void EcritureMenu(long *AdrTable);
void AFF_TableAllumage ();
void init_convetisseur (void);
 
void main()
{
 output_high(LcdRs);
 InitL1();
 EcritureMenu(TableAllumage);
}
 
//--------------Ecriture LCD-------------//
void SEND(char RS,char caractere)
{
 if (RS == 0)
 {
  output_low(LcdRs);
 }
 else
 {
  output_high(LcdRs);
 }    
 output_low(LcdRw);
 delay_us(5);    
 output_high(LcdEn);
 delay_us(5);  
 output_D(caractere);
 delay_us(5);
 output_low(LcdEn);
 delay_us(5);
}
 
//-----initialisation lcd ligne 1------//
 void InitL1 (void)
{
 char n;
 for (n=0;TableInitL1[n]!='%';n++)
 {
  SEND(0,TableInitL1[n]);
  TESTBUSY();
  delay_ms(1);
 }
}
 
//-----ecriture d'une chaine de caracteres----//
void EcritureMenu(long *AdrTable)
{
 char n=0;
 while (AdrTable[n] != '%')
 {
  SEND(1,AdrTable[n]);
  TESTBUSY();
  n++;
 
 }
}
 
void TESTBUSY(void)
{
 char data=0x80,busy;
 do
 {
  output_high(LcdRw);
  delay_us(5);
  output_low(LcdRs);
  delay_us(5);
  output_high(LcdEn);
  delay_us(5);
 
  data=input_D();
  output_low(LcdEn);
  busy=data & 0x80;
 }
 while (busy !=0);
}


 
et maintenant mon probleme et que si je fais ca comme ca MPLAB me dit qu'il n'y a plus de  RAM disponible donc je voudrais savoir comment faire pour la mettre en ROM et aussi faire une sous fonction qui me permettrai de faire afficher mes table sur mon lcd....
 
MERCI pour vos reponse rapide !!!

Message cité 1 fois
Message édité par wormy3 le 29-03-2007 à 21:48:06
Reply

Marsh Posté le 30-03-2007 à 00:36:18    

wormy3 a écrit :

Bonjour moi aussi j'ai un probleme de programmation en C avec MPLAB et PIC C.


Ca se fait pas de squatter un fil de discussion... Comment veux-tu qu'on s'y retrouve ?  
 
Définis tes chaines const...

Code :
  1. char const TableAllumage[] = {"   Bienvenue    %"};


etc.
 
Idem pour les tableaux de constantes.


Message édité par Emmanuel Delahaye le 30-03-2007 à 00:38:24

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 30-03-2007 à 09:21:33    

ok désolé je suis nouveau alors je ne connais pas encore toutes les regles du forum...
 
Sinon j'ai fais ce que tu m'as dis et effectivement la RAM se libère mais je n'arrive pas a faire la fonction qui me permettrais d'afficher ces constantes sur le lcd...
 
En fait je voudrais pouvoir faire une sous fonction afin d'afficher mes tables sur l'afficheur....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed