bonjour!j'ai un projet a realiser est de faire une porte electronique qui s'ouvre avec un code.
lcd+keypad+led(simulation comme une porte).+speaker quand la porte s'ouvre il fait un sonne.
le probleme que j'ai est le suivante:
dans le menu de lcd il as 1-ouvrir la porte -2 parametre.ce deniere est vide il as que 7- returner
quand je click sur 1 il me demande d'ecrire le mot de passe [7777] si c'est vrai la porte s'ouvre et il se referme avec quelque seconde et il revien au menu
mais quand je click pour la 2eme fois sur 2 pour aller parametre il as un chauvauchement.
le 2e;e probleme est quand je click sur 2 il as 7-returne c a dir je click sur 7 pour retourne si je click sur d'autres numero il as aucun effet sauf le num 1 si je klick sur lui c-a-d le 1 il me demande d'ecrir le mot de passe.
ici c'est le schema de proteus ; pas possible de l'envoi sous .rar me dit fichier non valide
j'espere que vous m'aidiz parceque je suis vraiment tranquer + j'ai pas encore fait le montage
merci pour votre aide
le programme :
Code:sbit LCD_RS at RB2_bit; sbit LCD_EN at RB3_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 TRISB2_bit; sbit LCD_EN_Direction at TRISB3_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; char keypadPort at PORTD; unsigned short kp; char T[4]; int i; void main() { Keypad_Init(); TRISA=0;//led kp = 0; PORTA=0; Lcd_Init(); {C: Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,1,"1-Ouvrire la porte"); //menu Lcd_Out(2,1,"2-Parametre"); // while (1){ {D: kp=0; // for(i=0;i<1;i++){ T[i]=kp; do kp = Keypad_Key_Click(); while (!kp); switch (kp){ case 1: kp= 55; break; // 1 case 2: kp= 52; break; // 2 case 3: kp= 49; break; // 3 case 4: kp= 65; break; // A case 5: kp= 56; break; // 4 case 6: kp= 53; break; // 5 case 7: kp= 50; break; // 6 case 8: kp= 48; break; // B case 9: kp= 57; break; // 7 case 10: kp= 54; break; // 8 case 11: kp= 51; break; // 9 case 12: kp= 80; break; // C case 13: kp= 81; break; // * case 14: kp= 82; break; // 0 case 15: kp= 83; break; // # case 16: kp= 84; break; // D } //} if(kp==49){ // si 1 Lcd_Cmd(_LCD_CLEAR); goto A; //aller a A : entre le mot de passe pour ouvrire la porte } else if(kp==50){ //si 2 Lcd_Cmd(_LCD_CLEAR); goto B; //aller parametre } goto D; } {A: Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Entre Le Mot De Passe SVP:"); Lcd_Out(2,2," "); //while (1){ kp=0; kp = Keypad_Key_Click(); for(i=0;i<4;i++){ T[i]=kp; do kp = Keypad_Key_Click(); while (!kp); switch (kp){ case 1: kp= 55; break; // 1 case 2: kp= 52; break; // 2 case 3: kp= 49; break; // 3 case 4: kp= 65; break; // A case 5: kp= 56; break; // 4 case 6: kp= 53; break; // 5 case 7: kp= 50; break; // 6 case 8: kp= 48; break; // B case 9: kp= 57; break; // 7 case 10: kp= 54; break; // 8 case 11: kp= 51; break; // 9 case 12: kp= 80; break; // C case 13: kp= 81; break; // * case 14: kp= 82; break; // 0 case 15: kp= 83; break; // # case 16: kp= 84; break; // D } Lcd_Chr_Cp(kp); } if(T[1]==55 && T[1]==55 && T[2]==55 && T[3]==55) { //code 7777 Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Correct"); Lcd_Out(2,1,"Porte ouverte "); PORTA=1; delay_ms(3000); PORTA.RA0=0; delay_ms(5000); goto C; } else { Lcd_Cmd(_LCD_CLEAR); PORTA=0; Lcd_Out(1,1,"Mot De Passe Incorrect"); delay_ms(2000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(2,1,"Ressayer A Nouveau"); delay_ms(2000); goto A; } { B : Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1," 7-retouner "); //Lcd_Out(2,1," 2-retouner "); kp=0; for(i=0;i<1;i++){ do kp = Keypad_Key_Click(); while (!kp); switch (kp){ case 1: kp= 50; break; // 2 } } if(kp==50){ Lcd_Cmd(_LCD_CLEAR); goto C; } } // } Lcd_Out_Cp(kp); } } }
-----