PrepaSUP "Simulation PFE electronique"

Il s’agit de la gestion de service dans une salle d’attente équipée d’un distributeur automatique de tickets dispose de trois guichets . 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...

GESTION D’UNE SALLE D’ATTENTE À BASE DU PIC16F877

PFE Electronique


Il s’agit de la gestion de service dans une salle d’attente équipée d’un distributeur automatique de tickets dispose de trois guichets . 
    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;
                    }
                  }
                 }
             }

[update title="Message" icon="info-circle"] Pour avoir plus d'information sur le programme de ce systeme electronique voyez  contact nous ou laisser un commentaire [/update]

Mesure de la température à l'aide du capteur DS1822


Mesure de la température à l'aide du capteur DS1822

 Mesure  de  la  température  est l'une des  tâches  les  plus  courantes effectuées  par  le microcontrôleur.  Un  capteur DS1822 est  utilisé pour  la  mesure.  Il  est  capable  de mesurer  la température  dans  la  plage  de  -55  °  C  à  +125  °  C  avec  la  précision 0,5  ° C.  Pour  le  but  de transférer  des  données vers  le  microcontrôleur .


Programmation en mikroC

[lock]
/* ***************************************************************************
             Mesure de la température à l'aide du capteur DS1822
*************************************************************************** */
// Configuration des connections d'afficheur LCD avec PIC
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// Fin de configuration
/* Configurer TEMP_RESOLUTION à la résolution correspondante du capteur
utilisé DS1822: 12 (réglage par défaut peut être : 9,10,11 ou 12)*/
const unsigned short TEMP_RESOLUTION = 12;
char *text = "000.0000";
unsigned temp ;
void Display_Temperature(unsigned int temp2write )
{
const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
char temp_whole;
unsigned int temp_fraction;
Lcd_Chr(2,4,'+');
if (temp2write & 0x8000)             /* Vérification si la température
est négative?*/
{
Lcd_Chr(2,4,'-');                 // Correction de signe si oui
temp2write = ~temp2write + 1;     // Complémenter à deux
}
// Extraire de la partie entière (temp_whole) de température
temp_whole = temp2write >> RES_SHIFT;
text[0] = '0';
// Conversion temp_whole en caractères
if (temp_whole/100)
text[0] = temp_whole/100  + 48;   // Extrait d'un chiffre des centaines
else
text[0] = '0';
text[1] = (temp_whole/10)%10 + 48;  // Extrait d'un chiffre des dizaines
text[2] =  temp_whole%10     + 48;  // Extrait d'un chiffre des unités
/* Extraire de la partie fractionnaire (temp_fraction) de tempe'ratureand
et convertion en unsigned int*/
temp_fraction  = temp2write << (4-RES_SHIFT);
temp_fraction &= 0x0F;
temp_fraction *= 625;
// Conversion temp_fraction en caractères
text[4] =  temp_fraction/1000    + 48; /* Extrait d'un chiffre des
milliers*/
text[5] = (temp_fraction/100)%10 + 48; /* Extrait d'un chiffre des
centaines*/
text[6] = (temp_fraction/10)%10  + 48; /* Extrait d'un chiffre des
dizaines*/
text[7] =  temp_fraction%10      + 48; /* Extrait d'un chiffre des
unités*/
// Affichage de la température sur l'écran LCD
Lcd_Out(2,5, text);
}
void main()
{
ANSEL  = 0;                         // Configurer E/S en numérique
ANSELH = 0;
Lcd_Init();                         // Initialiser LCD
Lcd_Cmd(_LCD_CLEAR);                // Effacer l'affichage sur LCD
Lcd_Cmd(_LCD_CURSOR_OFF);           // Mettre invisible le curseur
Lcd_Out(1, 1, " Temperature: ");
// Afficher le caractère, 'C' pour degrés Celsius
Lcd_Chr(2,13,223);                  /*si vous voyez la lettre grecque alpha
essayez de taper 178 au lieu de 223*/
Lcd_Chr(2,14,'C');
//--- boucle principale--------
do
{
//--- effectuer la lecture de température-----
Ow_Reset(&PORTA, 5);             /* Signal de remise a` zéro sur
le bus OneWire */
Ow_Write(&PORTA, 5, 0xCC);      // Envoi de commandes SKIP_ROM
Ow_Write(&PORTA, 5, 0x44);      // Envoi de commandes CONVERT_T
Delay_us(120);
Ow_Reset(&PORTA, 5);
Ow_Write(&PORTA, 5, 0xCC);      // Envoi de commandes SKIP_ROM
Ow_Write(&PORTA, 5, 0xBE);      // Envoi de commandes READ_SCRATCHPAD
Delay_ms(400);
temp =  Ow_Read(&PORTA, 5);
temp = (Ow_Read(&PORTA, 5) << 8)+ temp;
//--- Affichage de la température sur l’écran Lcd ----
Display_Temperature(temp);
Delay_ms(500);
} while (1);
}
[/lock]

video : 

Gestion et contrôle des portes ( Serrures électroniques )    L ’intérêt majeur de ce projet est attribué à la programmation d’une serrure électronique codée à base du pic 16f877 qui nous permet de commander l’ouverture électrique d’une porte. La porte reste fermé jusqu’après l’introduction d’un code à travers le clavier numérique Après validation du code le système compare le code inséré au mot de passe stocké dans sa mémoire.

PFE Electronique : Gestion et contrôle des portes : Serrures électroniques 

L’intérêt majeur de ce projet est attribué à la programmation d’une serrure électronique codée à base du pic 16f877 qui nous permet de commander l’ouverture électrique d’une porte.
La porte reste fermé jusqu’après l’introduction d’un code à travers le clavier numérique Après validation du code le système compare le code inséré au mot de passe stocké dans sa mémoire.
Les éléments principaux qui composent le circuit sont :
  • Le micrcontrôleur PIC16F887
  • L'écran LCD à caractère 16x2
  • Le clavier alphanumérique de 16 touches
  • Des leds pour représenter la porte
     Pour simuler le système on a choisi le code par défaut est 2017, une fois le code est validé par la touche D un message s’affiche sur l’écran LCD montre que le code est accepter, immédiatement après la validation du code la porte s’ouvre et se referme après un certain temps l’ouverture et la fermeture représenter respectivement par les deux leds vert et rouge mais si le code est incorrect un message d’erreur s’afficher sur l’écran.
Le nombre de tentative est limité à 3 tentatives successives d’un mauvais code et à chaque insertion l’écran affiche un message d’erreur et finira par Compter jusqu'à 30 secondes et afficher un message pour entrer le nouveau code.
Il suffit d'appuyer sur le carré '#' Pour effacer l'écran càd effacer tous les éléments du code on même temps par contre la touche * pour supprimer le code élément par élément .

[youtube src="u1ZsVrd-Yws?"][/youtube]
Une partie du code source

Programmation en mikroC

/**************************************************************************************/
/*         -  Projet : Gestion d'ouverture d'une porte par une serrure électronique   */
/*         - Site    : prepasup.blogspot.com                                          */
/*         -  Date   : 15-06-2017                                                     */
/**************************************************************************************/



/************************ configuration de LCD **************************************** */

sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;

/************************** lecture de clavier ******************************************/
[update title="Message" icon="info-circle"] Pour avoir plus d'information sur le programme de ce systeme electronique voyez  contact nous ou laisser un commentaire [/update]

ABDO ECA

{facebook#https://web.facebook.com/PrepaSUP-110163486316965/} {twitter#https://twitter.com/AbdoEca} {google-plus#YOUR_SOCIAL_PROFILE_URL} {instagram#https://plus.google.com/111033268158521816481}

Formulaire de contact

Nom

E-mail *

Message *

Fourni par Blogger.
Javascript DisablePlease Enable Javascript To See All Widget