Ir al contenido



Foto

proyecto cerradura automatica

ceradura automatica pic16f877A mikroc

  • Por favor identifícate para responder
No hay respuestas en este tema

#1 kamalbe

kamalbe

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 26 marzo 2016 - 10:26

i proyecto es una ceradura automatica.os digo de aue va mi proyecto:
tnego un picf16877A + lcd + keypad+led para semular una puerta si la puerta esta abierta o no, 
tengo un problema con mi codigo de programacion en mikroc,
cuando enciendo esto en proteus tengo en la lcd 
1-open dor
2-setup
cuando le doy al keypad 1 me sale write password si es correcto osea { 7777} la puerta tiene que abrirse y en unos secundos se ciera y vuelve al menu inicial
y si el password no es correcto te dice vuelve a intentarlo y vuelve al menu.
y si le doy al 2 entra en setup y solo hay en la lcd :
7-return
le doy al 7 y vuelve 
todo impecable PEEEEROOOOO
por ejemplo si hqgo todo lo de arriba y despues le doy al 2 para ira setup pues la pantalla se queda asi
1-abrir puerta
2-config          7- volver


cpp
  1. sbit LCD_RS at RB2_bit;
  2. sbit LCD_EN at RB3_bit;
  3. sbit LCD_D4 at RB4_bit;
  4. sbit LCD_D5 at RB5_bit;
  5. sbit LCD_D6 at RB6_bit;
  6. sbit LCD_D7 at RB7_bit;
  7. sbit LCD_RS_Direction at TRISB2_bit;
  8. sbit LCD_EN_Direction at TRISB3_bit;
  9. sbit LCD_D4_Direction at TRISB4_bit;
  10. sbit LCD_D5_Direction at TRISB5_bit;
  11. sbit LCD_D6_Direction at TRISB6_bit;
  12. sbit LCD_D7_Direction at TRISB7_bit;
  13. char keypadPort at PORTD;
  14. unsigned short kp;
  15. char T[4];
  16. int i;
  17. void main() {
  18. Keypad_Init();
  19. TRISA=0;//led
  20. kp = 0;
  21. PORTA=0;
  22. Lcd_Init();
  23. {C:
  24. Lcd_Cmd(_LCD_CLEAR);
  25. Lcd_Cmd(_LCD_CURSOR_OFF);
  26. Lcd_Out(1,1,"1-abrir puerta"); //menu
  27. Lcd_Out(2,1,"2-config");   //
  28.  while (1){
  29.  {D:
  30.   kp=0;
  31.   // for(i=0;i<1;i++){
  32.      T[i]=kp;
  33. do
  34.      kp = Keypad_Key_Click();
  35.     while (!kp);
  36.  switch (kp){
  37.   case  1: kp= 55; break;  // 1
  38.   case  2: kp= 52; break;  // 2
  39.   case  3: kp= 49; break;  // 3
  40.   case  4: kp= 65; break;  // A
  41.   case  5: kp= 56; break;  // 4
  42.   case  6: kp= 53; break;  // 5
  43.   case  7: kp= 50; break;  // 6
  44.   case  8: kp= 48; break;  // B
  45.   case  9: kp= 57; break;  // 7
  46.   case 10: kp= 54; break;  // 8
  47.   case 11: kp= 51; break;  // 9
  48.   case 12: kp= 80; break;  // C
  49.   case 13: kp= 81; break;  // *
  50.   case 14: kp= 82; break;  // 0
  51.   case 15: kp= 83; break;  // #
  52.   case 16: kp= 84; break;  // D
  53.    }
  54.    //}
  55.   if(kp==49){                      // si 1
  56.   Lcd_Cmd(_LCD_CLEAR);
  57.   goto A;    //aller a A : entre le mot de passe pour ouvrire la porte
  58.   }
  59.    else if(kp==50){               //si 2
  60.    Lcd_Cmd(_LCD_CLEAR);
  61.   goto B;         //aller parametre
  62.   }
  63.  
  64.  
  65.   goto D;
  66.  
  67.  
  68. }
  69.   
  70. {A:
  71. Lcd_Cmd(_LCD_CLEAR);
  72. Lcd_Out(1,1,"escriba el password :");
  73. Lcd_Out(2,2," ");
  74.   //while (1){
  75.  kp=0;
  76.  kp = Keypad_Key_Click();
  77.    for(i=0;i<4;i++){
  78.     T[i]=kp;
  79. do
  80.         kp = Keypad_Key_Click();
  81.       while (!kp);
  82.  switch (kp){
  83.   case  1: kp= 55; break;  // 1
  84.   case  2: kp= 52; break;  // 2
  85.   case  3: kp= 49; break;  // 3
  86.   case  4: kp= 65; break;  // A
  87.   case  5: kp= 56; break;  // 4
  88.   case  6: kp= 53; break;  // 5
  89.   case  7: kp= 50; break;  // 6
  90.   case  8: kp= 48; break;  // B
  91.   case  9: kp= 57; break;  // 7
  92.   case 10: kp= 54; break;  // 8
  93.   case 11: kp= 51; break;  // 9
  94.   case 12: kp= 80; break;  // C
  95.   case 13: kp= 81; break;  // *
  96.   case 14: kp= 82; break;  // 0
  97.   case 15: kp= 83; break;  // #
  98.   case 16: kp= 84; break;  // D
  99.    }
  100.    Lcd_Chr_Cp(kp);
  101.   }
  102.     if(T[1]==55 && T[1]==55 && T[2]==55 && T[3]==55) { //code 7777
  103.     Lcd_Cmd(_LCD_CLEAR);
  104.     Lcd_Out(1,1,"Correct");
  105.      Lcd_Out(2,1,"Puerta abierta ");
  106.      PORTA=1;
  107.       delay_ms(3000);
  108.     PORTA.RA0=0;
  109.      delay_ms(5000);
  110.      goto C;
  111.   }
  112.       else {
  113.       Lcd_Cmd(_LCD_CLEAR);
  114.     PORTA=0;
  115.     Lcd_Out(1,1,"password incorecto");
  116.     delay_ms(2000);
  117.     Lcd_Cmd(_LCD_CLEAR);
  118.     Lcd_Out(2,1,"intentelo");
  119.     delay_ms(2000);
  120.     goto A;
  121.     }
  122.     { B :
  123.     Lcd_Cmd(_LCD_CLEAR);
  124.    Lcd_Out(1,1," 7-volver ");
  125.    kp=0;
  126.   for(i=0;i<1;i++){
  127. do
  128.      kp = Keypad_Key_Click();
  129.     while (!kp);
  130.  switch (kp){
  131.   case  1: kp= 50; break;  // 2
  132.    }
  133.   }
  134.   if(kp==50){
  135.   Lcd_Cmd(_LCD_CLEAR);
  136.   goto C;
  137.   }
  138.     }
  139.    // }
  140.  Lcd_Out_Cp(kp);
  141.  }
  142.  }
  143.   }


  • 0