simulation serrure codée Proteus ISIS & PIC C

< Sujet précédent  Sujet suivant >
Index du Forum -> Forum des Projets fin d'études, mini-projets et des réalisations electroniques -> Mini-projets
AuteurMessage
Tunisia.png R.R
Newbie



Messages : 1
Inscrit(e) le: 28/06/2013
Posté le 28/06/2013 12:22  
1372414963.JPG (143 Ko)
simulation serrure codée Proteus ISIS & PIC C
bonjour !!!


Je suis une débutante en électronique et je suis chargée de la conception d'une carte électronique d'une serrure codée
j'ai fait le schéma électronique et le code source en C en utilisant le compilateur PIC C

C'est le code:
#include "16f877A.h" // PIC16F877 HEADER FILE

#include "lcd.c"

#use delay (clock =20M) // 20 MHZ CRYSTAL

#fuses HS,NOWDT,NOPROTECT

#byte TRISA=0x85
#byte TRISB=0x86
#byte TRISC=0x87
#byte TRISD=0x88

#byte PORTA=0x05
#byte PORTB=0x06
#byte PORTC=0x07
#byte PORTD=0x08

#bit c1=PORTD.1
#bit c2=PORTD.2
#bit c3=PORTD.3

#bit l1=PORTD.4
#bit l2=PORTD.5
#bit l3=PORTD.6
#bit l4=PORTD.7

#bit red=PORTA.0
#bit green=PORTA.1

#bit BUZZ=PORTB.0

#bit RELAY=PORTC.2
#define LCD_ENABLE_PIN PIN_B1
#define LCD_RS_PIN PIN_B2
#define LCD_RW_PIN PIN_B3
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7

int touche;
char welcome[16]={'-','-','-','-','B','i','e','n','v','e','n','u','e','-','-','-'};

char Ancien_cod[16]={'A','n','c','i','e','n',' ','c','o','d','e'};
char Nouveau_cod[16]={'N','o','u','v','e','a','u',' ','c','o','d','e'};
char Erreur_cod[16]={'E','r','r','e','u','r'};
char Entrer_cod[16]={'E','n','t','r','e','r',' ','c','o','d','e'};
int code[4]={0,0,0,0},code_saisie[4];

void clavier(void)
{
int i=0;
PORTD=PORTD&0xF0;
touche=13;
l1=1;
if(c1==1) {touche=1;++i;while(c1==1);}
if(c2==1) {touche=2;++i;while(c2==1);}
if(c3==1) {touche=3;++i;while(c3==1);}
l1=0;
l2=1;
if(c1==1) {touche=4;++i;while(c1==1);}
if(c2==1) {touche=5;++i;while(c2==1);}
if(c3==1) {touche=6;++i;while(c3==1);}
l2=0;
l3=1;
if(c1==1){ touche=7;++i;while(c1==1);}
if(c2==1) {touche=8;++i;while(c2==1);}
if(c3==1) {touche=9;++i;while(c3==1);}
l3=0;
l4=1;
if(c1==1) {touche=10;++i;while(c1==1);} //'*'
if(c2==1) {touche=0;++i;while(c2==1);}
if(c3==1) {touche=11;++i;while(c3==1);}//'#'
l4=0;
}


void mise_a_jour_code()
{
int j,i=0,Nb_vrai=0;
if (touche==10)
{
lcd_gotoxy(1,1);
for(j=0;j<16;j++)lcd_putc(Ancien_cod[j]);
lcd_gotoxy(1,0x0D);
while(i<4)
{
clavier();

if((touche!=13) & (touche!=10) & (touche!=11))
{
code_saisie=touche;
lcd_putc('*');
i++;
}
}
for(i=0;i<4;i++) if(code==code_saisie) Nb_vrai++;
i=0;
if (Nb_vrai==4)
{
lcd_gotoxy(1,1);
for(j=0;j<16;j++)lcd_putc(Nouveau_cod[j]);
lcd_gotoxy(1,0x0E);
while(i<4)
{
clavier();
if((touche!=13) & (touche!=10) & (touche!=11))
{
code=touche;
lcd_putc('*');
i++;
}
}
lcd_gotoxy(1,1);
for(j=0;j<16;j++)lcd_putc(welcome[j]);

}
else
{
lcd_gotoxy(1,1);
for(j=0;j<16;j++)lcd_putc(Erreur_cod[j]);
}

}
}


void saisie_code()
{
int j=0,Nb_essais=0,Nb_vrai=0;
if (touche==11)
{
Lab1: lcd_gotoxy(1,1);
for(j=0;j<16;j++) lcd_putc(Entrer_cod[j]);
j=0;
lcd_gotoxy(1,0x0D);
while(j<4)
{
clavier();
if((touche!=13) & (touche!=10) & (touche!=11))
{
code_saisie[j]=touche;
lcd_putc('*');
j++;
}
}
delay_ms(1000);
for(j=0;j<4;j++) if(code[j]==code_saisie[j]) Nb_vrai++;
if(Nb_vrai==4)
{
lcd_gotoxy(1,1);
for(j=0;j<16;j++)lcd_putc(welcome[j]);

RELAY=1;
green=1;
delay_ms(5000);
RELAY=0;
green=0;
}
else
{
Nb_essais++;
lcd_gotoxy(1,1);
for(j=0;j<16;j++)lcd_putc(Erreur_cod[j]);
if (Nb_essais==3)
{
BUZZ=1;
red=1;
delay_ms(10000);
BUZZ=0;
red=1;
break;
}
delay_ms(2000);
goto Lab1;
}
}
}

void main()
{

SET_TRIS_A(0x01);
SET_TRIS_B(0x00);
SET_TRIS_C(0x04);
SET_TRIS_D(0xff);


lcd_init();
while(true)
{
int j;
lcd_gotoxy(1,1);;
for(j=0;j<16;j++){lcd_putc(welcome[j]);}
lcd_gotoxy(1,2);
for(j=0;j<16;j++){lcd_putc(sagemcom[j]);}

clavier();
mise_a_jour_code();
saisie_code();
}
}

(le schéma de la simulation est en ficher joint)

Avez vous des remarques?
Merci





Edité par R.R le 28/06/2013 12:37
Be a yardstick of quality. Some people aren't used to an environment where excellence is expected.
Steave Jobs
Revenir en haut | Permalien

Haut de page

© 2019 Technologue pro, cours électricité électronique informatique · © 2007 - 2019 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académique

Technologue: cours en ligne gratuit en électricité, électronique, informatique industrielle et mécanique pour l'enseignement technologique en Tunisie et offre des cours en ligne en génie électrique, informatique, mécanique, une base de données de TP, projets fin d'études et un annuaire de ressources pédagogiques
Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index
J'accepte
Ce site web utilise des cookies. Nous utilisons des cookies pour vous offrir la meilleure expérience sur notre site Web. Plus d'infos