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); }
|