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 |
|
|