IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Gestion de feux tricolores avec un PIC 16F877A


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Par défaut Gestion de feux tricolores avec un PIC 16F877A
    Salut,

    J'ai un projet en langage C. La description de ce projet est la suivante :

    Le but est d'assurer la gestion de feux de trafic d'un carrefour. La solution est basée sur l'utilisation d'un micro-contrôleur PIC 16F877A.

    La première partie de ce travail concerne la conception de la carte qui sert de simulateur. La seconde partie concerne la programmation du micro-contrôleur. La troisième partie est une validation de la solution proposée.

    Description du cahier des charges : Le but est d'assurer la circulation des véhicules et des piétons au niveau d'un carrefour qui comporte 4 voies.

    Fonctionnement du système :

    Sur ce carrefour, les voies 1 et 3 fonctionnent ensemble ce qui signifie que le signal vert de la voie 1 et le signal vert de la voie 3 sont couplés et donc simultanément activés pour que le témoin vert de la voie 1 et le témoin vert de la voie 3 soient commandées ensembles : tous les deux allumés, ou tous les deux éteints. Il en va de même pour les témoins jaunes ainsi que pour les témoins rouges de ces deux voies. Les voies 2 et 4 sont couplées de la même façon.

    Chaque voie est munie d'un passage réservé aux piétons protégé par deux signalisations Vip et Rip (i=1,2,3 ou 4). Lorsque les véhicules détiennent le contrôle des voies tous les voyants rouges piétons sont allumés. Un bouton-poussoir permet aux piétons de lancer une demande pour prendre le contrôle des voies. Une temporisation de 5 secondes est déclenchée, suite à laquelle tous les voyants rouges des 4 voies destinées aux voitures passent au rouge et les voyants verts destinés aux piétons passent au vert.
    Ce cycle dure pendant 15 secondes. Les feux verts piétons clignotent alors 5 fois pendant 5 secondes. Puis le cycle de passage de véhicules reprend dans l'ordre des voies : 1, 2, 3, 4.

    Un deuxième bouton-poussoir est prévu pour lancer le fonctionnement en mode clignotant des voyants oranges des 4 voies. Ce fonctionnement est très souvent utilisé la nuit lorsque la cadence du trafic diminue.

    J'ai une solution concernant le feu rouge à deux voies :

    Le premier fichier est prog.c :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #include "C:\feudecarr\prog.h"
     
    void main()
    {
     
       setup_adc_ports(NO_ANALOGS);
       setup_adc(ADC_OFF);
       setup_psp(PSP_DISABLED);
       setup_spi(FALSE);
       setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
       setup_timer_1(T1_DISABLED);
       setup_timer_2(T2_DISABLED,0,1);
     
    set_tris_C(0xFF);
       set_tris_b(0x00);
       output_b(0x00);
     
    do
    {
     
    if (input(PIN_C0)==1)
                          {
                          output_B(0b10010);
                          delay_ms(1000);
                          output_B(0);
                          delay_ms(1000);
                          }
                         else
                         {
                         output_b(0b100001);
                         delay_ms(5000);
                         output_b(0b000001);
                         delay_ms(500);
                         output_b(0b100001);
                         delay_ms(500);
                         output_b(0b000001);
                         delay_ms(500);
                         output_b(0b100001);
                         delay_ms(500);
                         output_b(0b000001);
                         delay_ms(500);
                         output_b(0b100001);
                         delay_ms(500);
                         output_b(0b010001);
                         delay_ms(1000);
                         output_b(0b001011);
                         delay_ms(1000);
                         output_b(0b001100);
                         delay_ms(5000);
                         output_b(0b001000);
                         delay_ms(500);
                         output_b(0b001100);
                         delay_ms(500);
                         output_b(0b001000);
                         delay_ms(500);
                         output_b(0b001100);
                         delay_ms(500);
                         output_b(0b001000);
                         delay_ms(500);
                         output_b(0b001100);
                         delay_ms(1000);
                         output_b(0b001010);
                         delay_ms(1000);
                         output_b(0b011001);
                         delay_ms(1000);
                          }
    }
     while(true);
    }

    Le deuxième fichier est prog.h :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <16F877.h>
    #device adc=8
    #use delay(clock=400000000)
    #fuses NOWDT,RC, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

    Mais je n'arrive pas à comprendre le code. Mais il est exécutable.

    Mon but est de programmer un feu rouge a 4 voies en language C avec la notion de timer.

    Quelqu'un peut-il m'aider ?

    Voila le code ainsi que l'image mais je veux réaliser un feu rouge a 4 voies avec le code C.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/08/2004, 18h52
  2. Communication RS232 avec un PIC via delphi
    Par JeanPh dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 09/08/2004, 22h56
  3. [TComport] communiquer avec un PIC
    Par tracks dans le forum C++Builder
    Réponses: 5
    Dernier message: 09/06/2004, 13h11
  4. [TP]Gestion des images bmp avec BMP.TPU
    Par Gabi dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 14/05/2004, 23h20
  5. [CVS]Gestion de 2 versions avec une partie commune
    Par Gromitou dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 19/02/2004, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo