Programmation pic16f877a + afficheur LCD

ghassen87 Messages postés 1 Date d'inscription mardi 10 février 2009 Statut Membre Dernière intervention 10 mars 2009 - 10 mars 2009 à 15:01
berine99 Messages postés 1 Date d'inscription dimanche 13 mai 2012 Statut Membre Dernière intervention 13 mai 2012 - 13 mai 2012 à 14:33
salut a tt
je suis débutant , je suis entrain de programmer une pic 16f877a en language pic c.
mon objectif c'est d'afficher à partir d'une tension V délivré par un capteur ultrason une distance sur un afficheur lcd suivant cette équation:
distance = (11 * V )+0.2


aider moi sil vous plai





merciiiiiiiii
A voir également:

2 réponses

noss007 Messages postés 1 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 3 avril 2009 1
3 avril 2009 à 16:02
PORTA=0;
Lcd_RS=0;
for(cL=0;cL<2;cL++) {TMR0=1; while(TMR0 != 0);} //32ms afficheur

pins=0x30;
Tempo(189); // 4,3ms E inclus
Tempo(254); // 150µs
pins=0x20;
Tempo(254); // 150µs

//**** initialisation paramètres LCD **********************************
wr_Lcd(0x28,0); // 2 lignes
wr_Lcd(1,0); // Efface l'affichage initialisation DD-ram
wr_Lcd(0x0C,0); // Affichage des caractères
wr_Lcd(6,0); // Déplacement vers la droite
}

void wr_Lcd(unsigned char cVar,unsigned char cLcd_RS)
{
char b3;
Lcd_RS=cLcd_RS;

b3=cVar & 0xF0; // envoi 4 bit poids fort
pins=pins & 4; // copie du bit lcd_E
pins=pins | b3;

Tempo(255);

pins=pins & 4; // envoi 4 bits poids faible
b3=(cVar<<4);
pins=pins | b3;

Lcd_E;
if((cVar>2) && (Lcd_RS==0)) TMR0=255; // tempo 86µs
else TMR0=228; // tempo 1,7ms
while(TMR0 != 0);
}

void Tempo(char ti)
{
Lcd_E;
TMR0=ti;
while(TMR0 != 0);
}

void Ligne_LCD(char cLigne)
{
if(cLigne==1) wr_Lcd(0x80,0); // afficheur se cale sur ligne 1
else if (cLigne==2) wr_Lcd(0xC0,0); // afficheur se cale sur ligne 2
}

void Efface_LigneLCD(char cEff)
{
if(cEff==1)
{
wr_Lcd(0x80,0); // set DDRAM passe 1 ere ligne
for(cL=0;cL<=15;cL++)wr_Lcd(0x20,1); // affiche des espaces
}

if(cEff==2)
{
wr_Lcd(0xC0,0); // set DDRAM passe 2 eme ligne
for(cL=0;cL<=15;cL++)wr_Lcd(0x20,1); // affiche des espaces
}
}

void Efface_LCD(void) {wr_Lcd(1,0);}
//TODO Auto-generated main function
}
}
1
Rejoignez-nous