systeme d'exploitation avec quelques boutons et un afficheur LCD

systeme d'exploitation avec quelques boutons et un afficheur LCD - C - Programmation

Marsh Posté le 30-03-2007 à 09:37:55    

Bonjour j'ai un probleme avec mon programme en c ( MPLAB et PIC C ), voici le 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 const TableAllumage[] = {"   Bienvenue    %"};  
 
char const TableL1ManPr[]={"MANUEL     HH:MM%"};  
char const TableL2ManPrePr[]={"MODE MANU ACTIF %"};  
char const TableL2ManPr[]={"X=xxxx    Y=yyyy%"};  
 
char const TableL1AutoPr[]={"AUTO         HH:MM%"};  
char const TableL2AutoPrePr[]={"MODE AUTO ACTIF %"};  
char const TableL2AutoPrFinal[]={"P1 X=xxxx Y=yyyy%"};  
 
char const TableL1ChangeClk[]={"CHANGER HORAIRE %"};  
char const TableL2ChangeClk[]={"     HH:MM      %"};  
 
char const TableL1ImportProg[]={"IMPORTER PROG?  %"};  
char const TableL2ImportProg[]={"     PROG 1     %"};  
 
char const TableL1ChoixProg[]={"CHOIX PROGRAMME %"};  
char const 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++;  
 
 }  
}  
 
//--------test du busy--------//
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 je dois faire une sous fonction qui me permettrait de faire afficher mes table sur mon lcd (avec mes tables en ROM) sans qu'il n'y ait de copier coller et que se soit plus simple pour la suite de mon programme car au final je dois arriver a faire mon systeme d'exploitation de mon afficheur et plusieurs boutonsi quelqu'un a une solution a mon probleme merci de me repondre vite!  
 
MERCI pour vos reponse rapide !!!

Reply

Marsh Posté le 30-03-2007 à 09:37:55   

Reply

Sujets relatifs:

Leave a Replay

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