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