GESTION D’UNE SALLE D’ATTENTE À BASE DU PIC16F877
PFE Electronique
La salle dispose de trois guichets donneurs de service. Chaque guichet dispose d’un bouton d’appel de client, un autre bouton de fermeture de guichet et un afficheur situé au dessus du guichet. Si l’administrateur de guichet appuie sur le bouton d’appel de client, le numéro demandé s’affiche sur l’afficheur de guichet et sur un autre afficheur au milieu de la salle d’attente. Si l’administrateur de guichet appuie sur le bouton de fermeture, le symbole de fermeture (FE) s’affiche sur l’afficheur de guichet. Le système électronique réalisé doit contrôler l’état des boutons disponibles dans chaque guichet pour incrémenter le numéro d’appel de clients et permet de donner en fin de journée le nombre de client traités par chaque guichet.
- un bouton d’appel de client
- un bouton de fermeture de guichet
- un afficheur 7 segments pour afficher le numéro de client
Programmation en mikroC
Une partie du code source
if(portd.f1==0) // FE1 { while (portd.f2!=0) { FE1 : if (portc.f1==0) goto FE; affichageNG(k); bcd(max3(t,y,z));affichagemax(d1,d2); bcd(t); affichage3(d1,d2); porta.f0=0;portb=segment[10];porta.f0=1;delay_ms(1); porta.f0=0;portb=segment[11];porta.f1=1;delay_ms(1); bcd(z); affichage2(d1,d2); if(portd.f3==0) { if(max3(t,y,z)==99) t=y=z=0; z=max3(t,y,z)+1; s2++; k=2 ; delay_ms(300); } if(portd.f5==0) { if(max3(t,y,z)==99) t=y=z=0; t=max3(t,y,z)+1; s3++; k=3; delay_ms(300); } if(portd.f4==0) // FE1 et FE2 { while (portd.f3!=0) { if (portc.f1==0)goto FE; affichageNG(k); bcd(max3(t,y,z));affichagemax(d1,d2); bcd(t); affichage3(d1,d2); porta.f0=0;portb=segment[10];porta.f0=1;delay_ms(1); porta.f0=0;portb=segment[11];porta.f1=1;delay_ms(1); porta.f1=0; porta.f2=0;portb=segment[10];porta.f2=1;delay_ms(1); porta.f2=0;portb=segment[11];porta.f3=1;delay_ms(1); porta.f3=0; if(portd.f5==0) {if(max3(t,y,z)==99) t=y=z=0; t=max3(t,y,z)+1; s3++; k=3; delay_ms(300); } if(portd.f2==0) goto FE2 ; } } if(portd.f6==0) // FE1 et FE3 { while (portd.f5!=0) { if (portc.f1==0)goto FE; affichageNG(k); bcd(max3(t,y,z));affichagemax(d1,d2); portd.f0=0;portb=segment[10];portd.f0=1;delay_ms(1); portd.f0=0;portb=segment[11];portc.f4=1;delay_ms(1);portc.f4=0; porta.f0=0;portb=segment[10];porta.f0=1;delay_ms(1); porta.f0=0;portb=segment[11];porta.f1=1;delay_ms(1); bcd(z); affichage2(d1,d2); if(portd.f3==0) { if(max3(t,y,z)==99) t=y=z=0; z=max3(t,y,z)+1; s2++; k=2 ; delay_ms(300); } if(portd.f2==0)goto FE3; } } } }
Enregistrer un commentaire