Download - ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Transcript
Page 1: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

ETUDE D’UN SYSTEME DE

COMPTAGE DE PIECES

Compte-Rendu

Projet microcontroleur

Réalisés et presentés par :

- SABIR Lihimdi

- FATIMA ZOHRA El Merrakchi

Année : 2009/2010 3IAII

Encadrant EMSI Mr:CHOURI.

Page 2: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

PlanPlan

Presentation. Presentation.

Schéma du systéme.Schéma du systéme.

Materiels Materiels utilisés.utilisés.

Les fonctions utilisées.Les fonctions utilisées.

Tester. Tester.

Page 3: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

PresentationPresentation

Le projetLe projet réalisé est un système de comptage, de trois réalisé est un système de comptage, de trois types de pièces transportées par trois tapis roulants , au types de pièces transportées par trois tapis roulants , au passage d’une pièce devant un capteur optique ,ce passage d’une pièce devant un capteur optique ,ce dernier génère une impulsion permettant d’incrémenter dernier génère une impulsion permettant d’incrémenter le cpt1 pour le passage des pièces sur le tapis 1 et le le cpt1 pour le passage des pièces sur le tapis 1 et le cpt2 pour les pièces du tapis 2 et le cpt3 pour les pièces cpt2 pour les pièces du tapis 2 et le cpt3 pour les pièces du tapis 3 , la du tapis 3 , la suite du programme est faite par un suite du programme est faite par un afficheur LCD pour afficher la Date,le jour,le mois, l’heure afficheur LCD pour afficher la Date,le jour,le mois, l’heure et les minutes du circuit pcf et la valeur des trois et les minutes du circuit pcf et la valeur des trois compteurs ,enfin l’enregistrement des données dans la compteurs ,enfin l’enregistrement des données dans la memoire EEPROM toutes les 30 minutes ,avec la memoire EEPROM toutes les 30 minutes ,avec la possibilité de la communication entre le Pic et le PC possibilité de la communication entre le Pic et le PC avec le logiciel Hyper-Treminal avec le logiciel Hyper-Treminal

Page 4: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Schéma du systéme

Page 5: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Materials Materials utilisésutilisés

Afficheur LCD 2 lignes 16 caractères en mode 4 bits Afficheur LCD 2 lignes 16 caractères en mode 4 bits

Circuit PCF8583 utilisé en mode Horloge Circuit PCF8583 utilisé en mode Horloge

Mémoire EEPROM 24C64 Mémoire EEPROM 24C64

Circuit MAX232 Circuit MAX232

Page 6: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Les fonctions utilisées dans le Les fonctions utilisées dans le

projetprojet

Page 7: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void start()void start()

{{

sdaon;sdaon;

sclon;sclon;

sdaoff;sdaoff;

scloff;scloff;

}}

void stop()void stop()

{{

scloff;scloff;

sdaoff;sdaoff;

sclon;sclon;

sdaon;sdaon;

}}

void ackesclave()void ackesclave()

{{

unsigned char A;unsigned char A;

scloff;scloff;

sdaon;sdaon;

sclon;sclon;

A=PORTC.F4;A=PORTC.F4;

if(A==0) scloff;if(A==0) scloff;

}}

void transmission(unsigned char d)void transmission(unsigned char d)

{{

unsigned char M=0X80;unsigned char M=0X80;

int i;int i;

for(i=0;i<8;i++)for(i=0;i<8;i++)

{{

if((d&M)!=0)if((d&M)!=0)

{sdaon;}{sdaon;}

elseelse

{sdaoff; }{sdaoff; }

sclon;scloff;sclon;scloff;

M=M>>1;M=M>>1;

}}

}}

unsigned char reception()unsigned char reception()

{{

unsigned char v=0x00,m=0x80;unsigned char v=0x00,m=0x80;

int i;int i;

sdaon;sdaon;

for(i=0;i<8;i++)for(i=0;i<8;i++)

{{

sclon;sclon;

TRISC.F4=1;TRISC.F4=1;

if((PORTC.F4)==1)if((PORTC.F4)==1)

v=v|m;v=v|m;

scloff;scloff;

m=m>>1;m=m>>1;

}}

return (v);return (v);

}}

Page 8: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Ses fonctions servent à communiquer les Ses fonctions servent à communiquer les composants du schéma de la carte composants du schéma de la carte connectés au bus i2C avec le connectés au bus i2C avec le microcontrôleur microcontrôleur

Page 9: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void ecrirehorloge(unsigned char adrm,unsigned char d)void ecrirehorloge(unsigned char adrm,unsigned char d)

{{

start();start();

transmission(0xA0);transmission(0xA0);

ackesclave();ackesclave();

transmission(adrm);transmission(adrm);

ackesclave();ackesclave();

transmission(d);transmission(d);

ackesclave();ackesclave();

stop();stop();

}}

unsigned char lire_horloge(unsigned char adresse)unsigned char lire_horloge(unsigned char adresse)

{{

unsigned char donnee;unsigned char donnee;

I2C_Start();I2C_Start();

I2C_Wr(0xA0);I2C_Wr(0xA0);

I2C_Wr(adresse);I2C_Wr(adresse);

I2C_Repeated_Start();I2C_Repeated_Start();

I2C_Wr(0xA1);I2C_Wr(0xA1);

donnee = I2C_Rd(0u);donnee = I2C_Rd(0u);

I2C_Stop();I2C_Stop();

return donnee;return donnee;

delay_ms(100);delay_ms(100);

}}

Page 10: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Ses deux fonctions servent à écrire et à lire Ses deux fonctions servent à écrire et à lire à partir de l’horloge du circuit PCF8583.à partir de l’horloge du circuit PCF8583.

La fonction lire_horloge est pré-definie La fonction lire_horloge est pré-definie dans le logiciel de programmation dans le logiciel de programmation

La fonction La fonction ecrirehorloge est construite a ecrirehorloge est construite a partir des fonctions du bus i2C partir des fonctions du bus i2C

Page 11: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void pcf()void pcf()

{ se=lire_horloge(0x02);{ se=lire_horloge(0x02);

m=lire_horloge(0x03);m=lire_horloge(0x03);

h=lire_horloge(0x04);h=lire_horloge(0x04);

j=lire_horloge(0x06)>>5;j=lire_horloge(0x06)>>5;

mois=lire_horloge(0x06)& 0x1F;mois=lire_horloge(0x06)& 0x1F;

date=lire_horloge(0x05)& 0x3F;date=lire_horloge(0x05)& 0x3F;

Lcd_Out(1,1, t[j]);Lcd_Out(1,1, t[j]);

Lcd_Chr(1,5,(date>>4)+48);Lcd_Chr(1,5,(date>>4)+48);

Lcd_Chr(1,6,(date&0x0F)+48);Lcd_Chr(1,6,(date&0x0F)+48);

Lcd_Out(1,7, "/");Lcd_Out(1,7, "/");

Lcd_Chr(1,8,(mois>>4)+48);Lcd_Chr(1,8,(mois>>4)+48);

Lcd_Chr(1,9,(mois&0x0F)+48);Lcd_Chr(1,9,(mois&0x0F)+48);

Lcd_Chr(1,12,(h>>4)+48);Lcd_Chr(1,12,(h>>4)+48);

Lcd_Chr(1,13,(h&0x0F)+48);Lcd_Chr(1,13,(h&0x0F)+48);

Lcd_Out(1,14, ":");Lcd_Out(1,14, ":");

Lcd_Chr(1,15,(m>>4)+48);Lcd_Chr(1,15,(m>>4)+48);

Lcd_Chr(1,16,(m&0x0F)+48);Lcd_Chr(1,16,(m&0x0F)+48);

}}}}

Page 12: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Cette fonction permet de lire le jour,le Cette fonction permet de lire le jour,le mois ,la date, l’heure et les minutes dans mois ,la date, l’heure et les minutes dans l’horloge du circuit pcf8583 et de les l’horloge du circuit pcf8583 et de les afficher dans l’afficheur LCD.afficher dans l’afficheur LCD.

Page 13: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void affiche(unsigned char Val,unsigned char l,unsigned char co)void affiche(unsigned char Val,unsigned char l,unsigned char co)

{{

val= Val%10;val= Val%10;

Lcd_Chr(l,co, val+48);Lcd_Chr(l,co, val+48);

Val=Val/10;Val=Val/10;

val= Val%10;val= Val%10;

Lcd_Chr(l,co-1, val+48);Lcd_Chr(l,co-1, val+48);

Val=Val/10;Val=Val/10;

val= Val%10;val= Val%10;

Lcd_Chr(l,co-2, val+48);Lcd_Chr(l,co-2, val+48);

Val=Val/10;Val=Val/10;

val= Val%10;val= Val%10;

Lcd_Chr(l,co-3, val+48);Lcd_Chr(l,co-3, val+48);

}}

Page 14: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Cette fonction montre comment calculer Cette fonction montre comment calculer les unités et les dizaines de la valeur du les unités et les dizaines de la valeur du compteur et les afficher.compteur et les afficher.

Page 15: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

unsigned char compteur()unsigned char compteur()

{{

if(PORTC.F0==0)if(PORTC.F0==0)

{cpt1++;delay_ms(250);}{cpt1++;delay_ms(250);}

if(PORTC.F1==0)if(PORTC.F1==0)

{cpt2++;delay_ms(250);}{cpt2++;delay_ms(250);}

if(PORTC.F2==0)if(PORTC.F2==0)

{cpt3++;delay_ms(250);}{cpt3++;delay_ms(250);}

return cpt1,cpt2,cpt3;return cpt1,cpt2,cpt3;

}}

Page 16: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Cette fonction incrémente les 3 compteurs Cette fonction incrémente les 3 compteurs à chaque fois qu’une impulsion est reçue. à chaque fois qu’une impulsion est reçue. et retourne leurs valeurs. et retourne leurs valeurs.

Page 17: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void afficher_cpt()void afficher_cpt()

{{

if(PORTD.F0==0)if(PORTD.F0==0)

{{

Lcd_Out(2,1, "Compt1 :");Lcd_Out(2,1, "Compt1 :");

affiche(cpt1,2,12);affiche(cpt1,2,12);

}}

if(PORTD.F1==0)if(PORTD.F1==0)

{{

Lcd_Out(2,1, "Compt2 :");Lcd_Out(2,1, "Compt2 :");

affiche(cpt2,2,12);affiche(cpt2,2,12);

}}

if(PORTD.F2==0)if(PORTD.F2==0)

{{

Lcd_Out(2,1, "Compt3 :");Lcd_Out(2,1, "Compt3 :");

affiche(cpt3,2,12);affiche(cpt3,2,12);

}}

}}

Page 18: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Cette fonction affiche le compteur puis sa Cette fonction affiche le compteur puis sa valeur.valeur.

exemple: compteur1 : 0009exemple: compteur1 : 0009

c’est-à-dire le compteur1 contient la c’est-à-dire le compteur1 contient la valeur 9.valeur 9.

Alors 9 pièces sont passé devant le Alors 9 pièces sont passé devant le capteur 1capteur 1

Page 19: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void interrupt()void interrupt()

{{

if (PIR1.TMR1IF==1)if (PIR1.TMR1IF==1)

{{

TMR1L=0XB0;TMR1L=0XB0;

TMR1H=0X3C;TMR1H=0X3C;

n++;n++;

if(n==20000)if(n==20000)

{{

n=0;n=0;

PORTB.F7=!PORTB.F7;PORTB.F7=!PORTB.F7;

EEprom_Write(0,date+48);EEprom_Write(0,date+48);

EEprom_Write(1,mois+48);EEprom_Write(1,mois+48);

EEprom_Write(2,h+48);EEprom_Write(2,h+48);

EEprom_Write(3,m+48);EEprom_Write(3,m+48);

EEprom_Write(4,cpt1);EEprom_Write(4,cpt1);

EEprom_Write(5,cpt2);EEprom_Write(5,cpt2);

EEprom_Write(6,cpt3); EEprom_Write(6,cpt3);

}}

PIR1.TMR1IF=0;PIR1.TMR1IF=0;

}}

if(PIR1.RCIF==1)if(PIR1.RCIF==1)

{{

K = RCREG;K = RCREG;

PIR1.RCIF=0;PIR1.RCIF=0;

}}

}}

Page 20: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Le TIMER1 est utilisé en mode tempoLe TIMER1 est utilisé en mode tempo

A chaque fois que l’interruption est active A chaque fois que l’interruption est active on incrémente une variable pour atteindre on incrémente une variable pour atteindre 1sec et on multiplie la valeur pour avoir le 1sec et on multiplie la valeur pour avoir le temps désiré temps désiré

Après 30 min on enregistre les données Après 30 min on enregistre les données dans la mémoire EEPROM dans la mémoire EEPROM

La 2La 2emeeme partie c’est pour le test des partie c’est pour le test des caractères reçus par le clavier sur le caractères reçus par le clavier sur le logiciel Hyper Terminallogiciel Hyper Terminal

Page 21: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void Serial_Init(void)void Serial_Init(void)

{{

SPBRG = 12 ;SPBRG = 12 ;

TXSTA = 0b00100000 ;TXSTA = 0b00100000 ;

RCSTA = 0b10010000 ;RCSTA = 0b10010000 ;

}}

Page 22: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Cette fonction permet l’initialisation du Cette fonction permet l’initialisation du module USART du pic ( la communication module USART du pic ( la communication en série de type RS232).en série de type RS232).

Page 23: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void Serial_Putchar(unsigned char V)void Serial_Putchar(unsigned char V)

{{

while(TXSTA.TRMT==0);while(TXSTA.TRMT==0);

TXREG = V;TXREG = V;

}}

Page 24: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Cette fonction permet l’émission d’un Cette fonction permet l’émission d’un caractère sur l’USART, et de l’afficher sur caractère sur l’USART, et de l’afficher sur l’ecran du PC .l’ecran du PC .

Page 25: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

La fonction globaleLa fonction globale::

Page 26: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

void main()void main()

{{

ecrirehorloge(0x02,0x55); ecrirehorloge(0x02,0x55); ecrirehorloge(0x05,0xA5); ecrirehorloge(0x05,0xA5);

ecrirehorloge(0x03,0x59); ecrirehorloge(0x06,0x21);ecrirehorloge(0x03,0x59); ecrirehorloge(0x06,0x21);

ecrirehorloge(0x04,0x09);ecrirehorloge(0x04,0x09);

ANSEL=0x00;ANSEL=0x00;

ANSELH=0x00;ANSELH=0x00;

TRISB=0x00; PORTB=0X00;TRISB=0x00; PORTB=0X00;

TRISC=0XFF; PORTC=0XFF;TRISC=0XFF; PORTC=0XFF;

TRISD=0XFF; PORTD=0XFF;TRISD=0XFF; PORTD=0XFF;

Serial_Init();Serial_Init();

I2C_Init(100000);I2C_Init(100000);

INTCON.GIE=1; T1CON.TMR1CS=0;INTCON.GIE=1; T1CON.TMR1CS=0;

INTCON.PEIE=1; T1CON.T1CKPS0=1;INTCON.PEIE=1; T1CON.T1CKPS0=1;

PIE1.TMR1IF=1; T1CON.T1CKPS1=0;PIE1.TMR1IF=1; T1CON.T1CKPS1=0;

TMR1L=0XB0; T1CON.TMR1ON=1;TMR1L=0XB0; T1CON.TMR1ON=1;

TMR1H=0X3C;TMR1H=0X3C;

Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0);Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0);

Lcd_Cmd(LCD_CURSOR_OFF);Lcd_Cmd(LCD_CURSOR_OFF);

Lcd_Cmd(Lcd_Clear);Lcd_Cmd(Lcd_Clear);

while(1)while(1)

{{

pcf();pcf();

compteur();compteur();

afficher_cpt();afficher_cpt();

if((h==0x18)&&(se==0x00))if((h==0x18)&&(se==0x00))

{{

cpt1=0;cpt2=0;cpt3=0;cpt1=0;cpt2=0;cpt3=0;

//PORTB.F7=1;//PORTB.F7=1;

}}

if(K=='?')if(K=='?')

{{

for(l=0;l<10;l++)for(l=0;l<10;l++)

Serial_Putchar(Eeprom_Read(l));Serial_Putchar(Eeprom_Read(l));

}}

} }} }

Page 27: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Appeler toutes les fonctions définies et Appeler toutes les fonctions définies et initialiser les ports d’entrées/sorties.initialiser les ports d’entrées/sorties.

Set l’horloge LUN 25/01 16:30.Set l’horloge LUN 25/01 16:30.

Configurer l’afficheur LCD Configurer l’afficheur LCD

L’appel des fonctions en boucle infinie L’appel des fonctions en boucle infinie

Page 28: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Tester Tester

Page 29: ETUDE DUN SYSTEME DE COMPTAGE DE PIECES Compte-Rendu Projet microcontroleur Réalisés et presentés par : - SABIR Lihimdi - FATIMA ZOHRA El Merrakchi Année.

Fin du projet.Fin du projet.