16 Aralık 2018, 13:45:19

Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d


Kapı kilit şifre programı

Başlatan atakhan, 12 Mart 2018, 20:36:34

atakhan

Ccs c de kapı kilit şifre programı yazmak için  hangi konulara hakim olmak gerek ?
Nasıl bir algoritma kullanmaliyim ? 

fide

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.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

Salih

14 Mart 2018, 02:59:13 #2 Son düzenlenme: 14 Mart 2018, 03:02:38 Salih
Örnek alıp geliştirebileceğin, program


Kod Seç
//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;
      }
}