Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: atakhan - 12 Mart 2018, 17:36:34

Başlık: Kapı kilit şifre programı
Gönderen: atakhan - 12 Mart 2018, 17:36:34
Ccs c de kapı kilit şifre programı yazmak için  hangi konulara hakim olmak gerek ?
Nasıl bir algoritma kullanmaliyim ? 
Başlık: Ynt: Kapı kilit şifre programı
Gönderen: fide - 12 Mart 2018, 20:14:55
Portb interrupt on change, port tarama ve eeprom yada ext eeprom yazmayı ve karşılaştırma yapmayı bilmen yeterli.
Önce eeproma yazdığın şifreyi oku bir değişkene aktar.
Sonra pin girişlmesi için interrupt bekle.
Tuşa basılınca interrupt olarak atanan pinlerden biri high (tasarıma göre low da olabilir ) olacak. Sonra hanhi pinin low olduğunu, ve bunun hangi satırdan tetiklediğini bulmak için satırları tek tek tarama yapman gerekecek.
Başlık: Ynt: Kapı kilit şifre programı
Gönderen: Salih - 13 Mart 2018, 23:59:13
Örnek alıp geliştirebileceğin, program


//KeyPad kullanarak, şifreli kilit devresi.
#Include  <16F877.h>
#Fuses XT,NOWDT


#Use Delay(clock=4M)
#Include <Lcd.c>
#Define  kapi  Pin_C0


char Tus_Oku()
{     
      Output_High(Pin_B4);
      Output_High(Pin_B5);
      Output_High(Pin_B6);     
      Output_Low(Pin_B4);
      Delay_ms(1);
      if (!input(Pin_B0)) Return('1');
      if (!input(Pin_B1)) Return('4');
      if (!input(Pin_B2)) Return('7');
      if (!input(Pin_B3)) Return('*');
      Output_High(Pin_B4);
      Output_Low(Pin_B5);
      Delay_ms(1);
      if (!input(Pin_B0)) Return('2');
      if (!input(Pin_B1)) Return('5');
      if (!input(Pin_B2)) Return('8');
      if (!input(Pin_B3)) Return('0');
      Output_High(Pin_B5);
      Output_Low(Pin_B6);     
      Delay_ms(1);           
      if (!input(Pin_B0)) Return('3');
      if (!input(Pin_B1)) Return('6');
      if (!input(Pin_B2)) Return('9');
      if (!input(Pin_B3)) Return('#');
      Output_High(Pin_B6);
      Return(0);
}


char tus,otus,ilkmi,sayac=0;
char sifre[4],sifreg[4];
int1 sdegistir=0;
Void Main()
{
   Setup_psp(PSP_DISABLED);
   Setup_spi(SPI_SS_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T1_DISABLED,0,1);   
   Setup_adc_ports(NO_ANALOGS);
   Setup_adc(ADC_OFF);
   Setup_CCP1(CCP_OFF);
   Setup_CCP2(CCP_OFF);   
   Port_B_Pullups(True);
   output_C(0);
   ilkmi = Read_eeprom(9);
   if (ilkmi==5)
      {         
         sifre[0] = Read_eeprom(0);
         sifre[1] = Read_eeprom(1);
         sifre[2] = Read_eeprom(2);
         sifre[3] = Read_eeprom(3);                 
      }else
               {
                  sifre[0] = '0';
                  sifre[1] = '0';
                  sifre[2] = '0';
                  sifre[3] = '0';
                  write_eeprom(0,sifre[0]);
                  write_eeprom(1,sifre[1]);
                  write_eeprom(2,sifre[2]);
                  write_eeprom(3,sifre[3]);
                  write_eeprom(9,5);               
               }     
   Lcd_init();
   Delay_ms(10);
   Printf(lcd_putc,"\fSifre=\nSifreyi Giriniz");
      While(True)
      {         
         tus = tus_oku();
         if ((tus!=otus)&&(tus))
         {
         
            if (sdegistir)
                  {
                           Lcd_gotoxy(sayac+7,1);
                           Lcd_PutC('*');
                           sifre[sayac]=tus;
                           sayac++;
                           if (sayac>3)
                              {
                                 write_eeprom(0,sifre[0]);
                                 write_eeprom(1,sifre[1]);
                                 write_eeprom(2,sifre[2]);
                                 write_eeprom(3,sifre[3]);
                                 sdegistir=0;
                                 Printf(lcd_putc,"\fSifre\nDegistirildi");
                                 delay_ms(3000);
                                 printf(Lcd_PutC,"\fKapi Acildi");
                              }                 
                  }
            if ((input_state(kapi))&&(tus=='*'))
               {
                  sdegistir=1;
                  Printf(lcd_putc,"\fSifre=\nY.Sifreyi Girin");
                  sayac=0;
               }else
                    {           
                       if (!input_state(kapi))
                        {
                           Lcd_gotoxy(sayac+7,1);
                           Lcd_PutC('*');
                           sifreg[sayac]=tus;
                           sayac++;
                           if (sayac>3)
                              {
                                 if ((sifre[0]==sifreg[0])&&(sifre[1]==sifreg[1])&&
                                     (sifre[2]==sifreg[2])&&(sifre[3]==sifreg[3]))
                                    {
                                       output_high(kapi);                                       
                                       printf(Lcd_PutC,"\fKapi Acildi");
                                    }else
                                    {
                                       printf(Lcd_PutC,"\fYanlis Sifre");
                                       delay_ms(3000);
                                       sayac=0;
                                       Printf(lcd_putc,"\fSifre=\nSifreyi Giriniz");
                                    }
                              }
                        }else
                          {
                           if (tus=='#')
                              {
                                 output_low(kapi);
                                 Printf(lcd_putc,"\fSifre=\nSifreyi Giriniz");
                                 sayac=0;
                              }                 
                          }
                     }   
         }
            delay_ms(10);
            otus=tus;
      }
}


(https://s10.postimg.cc/yv79a3gmx/Ekran_Al_nt_s.jpg)