#include #include sbit s1=P2^0; sbit s2=P2^1; sbit s3=P2^2; sbit s4=P2^3; sbit s5=P2^4; sbit s6=P2^5; sbit s7=P2^6; sbit s8=P2^7; sbit s9=P0^6; sbit s0=P0^7; sbit m1=P3^4; sbit m2=P3^5; sbit rs=P3^6; sbit en=P3^7; sbit SCL=P3^2; sbit SDA=P3^3; void delay(unsigned int w) { unsigned int q; for(q=0;q> ( 7 - i ) ) & 0x01 ) SDA = 1 ; else SDA = 0 ; clock() ; } } void i2c_write(unsigned char dat,unsigned char addr) { start(); //dummy write start opdat(0xa0); //send dev addr waitack(); opdat(addr); waitack(); opdat(dat); //write data waitack(); stop(); } unsigned char getdat() { unsigned char i , dat; SDA = 1; _nop_() , _nop_() , _nop_(); for ( i = 0 ; i < 8 ; i++ ) { dat = ( ( ( dat << 1 ) & 0xfe ) | SDA ); clock(); } return dat; } unsigned char i2c_read(unsigned char addr) { unsigned char rdata; start(); //dummy write start opdat(0xa0); //send dev addr waitack(); opdat(addr); waitack(); start(); //start read opdat(0xa1); //give device adddr or with for read waitack(); //operation coz lsb gives r|w rdata = getdat(); nack() ; stop() ; return(rdata); } void cd(unsigned char w) { P1=w; rs=0; en=1; delay(500); en=0; } void dd(unsigned char w) { P1=w; rs=1; en=1; delay(500); en=0; } void lcd(unsigned char *h) { while(*h!=0) { dd(*h); h++; } } void tx(unsigned char num) { SBUF = num; while(TI == 0); TI = 0; } void tx_str(unsigned char *y) { while(*y!='\0') { tx(*y); y++; } } void main() { unsigned int e; unsigned char r,q,w,arr1[6],arr[20]; SCON=0x50; TMOD=0x20; TH1=0xfd; TR1=1; m1=m2=0; cd(0x38); cd(0x06); cd(0x0e); qwe: for(w=0;w<16;w++) { arr[w]=0; } tx_str("AT"); tx(0x0d); delay(60000); tx_str("AT+CMGF=1"); tx(0x0d); delay(60000); tx_str("AT+CMGD=1"); tx(0x0d); delay(60000); delay(60000); cd(0x01); cd(0x80); lcd(" ENTER PASSWORD "); cd(0xc0); q=0; while(1) { if(s1==0) { dd('*'); while(s1==0); delay(10000); arr[q]='1'; q=q+1; } else if(s2==0) { dd('*'); while(s2==0); delay(10000); arr[q]='2'; q=q+1; } else if(s3==0) { dd('*'); while(s3==0); delay(10000); arr[q]='3'; q=q+1; } else if(s4==0) { dd('*'); while(s4==0); delay(10000); arr[q]='4'; q=q+1; } else if(s5==0) { dd('*'); while(s5==0); delay(10000); arr[q]='5'; q=q+1; } else if(s6==0) { dd('*'); while(s6==0); delay(10000); arr[q]='6'; q=q+1; } else if(s7==0) { dd('*'); while(s7==0); delay(10000); arr[q]='7'; q=q+1; } else if(s8==0) { dd('*'); while(s8==0); delay(10000); arr[q]='8'; q=q+1; } else if(s9==0) { dd('*'); while(s9==0); delay(10000); arr[q]='9'; q=q+1; } else if(s0==0) { dd('*'); while(s0==0); delay(10000); arr[q]='0'; q=q+1; } if(q>=6) { for(w=0;w<6;w++) { arr1[w]=i2c_read(w); delay(100); } delay(60000); delay(60000); if(arr1[0]==arr[0] && arr1[1]==arr[1] && arr1[2]==arr[2] && arr1[3]==arr[3] && arr1[4]==arr[4] && arr1[5]==arr[5]) { w=i2c_read(12); delay(100); cd(0x80); lcd("CORRECT PASSWORD"); if(w==1) { cd(0xc0); lcd(" DOOR IS OPEN "); goto qwe; } else { cd(0xc0); i2c_write(1,12); delay(200); lcd(" PLEASE WAIT "); m1=0; m2=1; delay(45000); m1=0; m2=0; goto qwe; } } for(w=0;w<6;w++) { arr1[w]=i2c_read(w+6); delay(100); } delay(60000); delay(60000); if(arr1[0]==arr[0] && arr1[1]==arr[1] && arr1[2]==arr[2] && arr1[3]==arr[3] && arr1[4]==arr[4] && arr1[5]==arr[5]) { w=i2c_read(12); delay(100); cd(0x80); lcd("CORRECT PASSWORD"); if(w==0) { cd(0xc0); lcd(" DOOR IS CLOSED "); goto qwe; } else { i2c_write(0,12); delay(200); cd(0xc0); lcd(" PLEASE WAIT "); m1=1; m2=0; delay(52000); m1=0; m2=0; goto qwe; } } cd(0x80); lcd(" WRONG PASSWORD "); cd(0xC0); lcd("PLEASE TRY AGAIN"); goto qwe; } if(RI==1) { w=SBUF; RI=0; if(w=='+') { e=0; while(RI==0) { e=e+1; if(e>30000) goto qwe; } RI=0; q=SBUF; e=0; while(RI==0) { e=e+1; if(e>30000) goto qwe; } RI=0; q=SBUF; e=0; while(RI==0) { e=e+1; if(e>30000) goto qwe; } RI=0; q=SBUF; if(q=='T') { delay(30000); tx(0x0d); cd(0x80); lcd(" SMS RECEIVED "); cd(0xC0); lcd("PLEASE WAIT....."); tx_str("AT+CMGR=1"); tx(0x0d); delay(30000); wer: e=0; while(RI==0) { e=e+1; if(e>30000) { cd(0x80); lcd(" WRONG SMS "); cd(0xC0); lcd("PLEASE TRY AGAIN"); goto qwe; } } RI=0; r=SBUF; if(r!='*') goto wer; r=0; ert: e=0; while(RI==0) { e=e+1; if(e>30000) { cd(0x80); lcd(" WRONG SMS "); cd(0xC0); lcd("PLEASE TRY AGAIN"); goto qwe; } } RI=0; arr[r]=SBUF; r=r+1; if(SBUF!='#') goto ert; if(r==11) { for(w=0;w<6;w++) { arr1[w]=i2c_read(w); delay(100); } if(arr[0]=='D' && arr[1]==' ' && arr[2]=='O' && arr[3]==' ' && arr[4]==arr1[0] && arr[5]==arr1[1] && arr[6]==arr1[2] && arr[7]==arr1[3] && arr[8]==arr1[4] && arr[9]==arr1[5]) { w=i2c_read(12); delay(100); cd(0x80); lcd("CORRECT PASSWORD"); if(w==1) { cd(0xc0); lcd(" DOOR IS OPEN "); goto qwe; } else { cd(0xc0); i2c_write(1,12); delay(200); lcd(" PLEASE WAIT "); m1=0; m2=1; delay(45000); m1=0; m2=0; goto qwe; } } } if(r==11) { for(w=0;w<6;w++) { arr1[w]=i2c_read(w+6); delay(100); } if(arr[0]=='D' && arr[1]==' ' && arr[2]=='C' && arr[3]==' ' && arr[4]==arr1[0] && arr[5]==arr1[1] && arr[6]==arr1[2] && arr[7]==arr1[3] && arr[8]==arr1[4] && arr[9]==arr1[5]) { w=i2c_read(12); delay(100); cd(0x80); lcd("CORRECT PASSWORD"); if(w==0) { cd(0xc0); lcd(" DOOR IS CLOSED "); goto qwe; } else { i2c_write(0,12); delay(200); cd(0xc0); lcd(" PLEASE WAIT "); m1=1; m2=0; delay(52000); m1=0; m2=0; goto qwe; } } } if(r==18) { for(w=0;w<6;w++) { arr1[w]=i2c_read(w); delay(100); } if(arr[0]=='P' && arr[1]==' ' && arr[2]=='O' && arr[3]==' ' && arr[4]==arr1[0] && arr[5]==arr1[1] && arr[6]==arr1[2] && arr[7]==arr1[3] && arr[8]==arr1[4] && arr[9]==arr1[5] && arr[10]==' ') { for(w=0;w<6;w++) { i2c_write(arr[w+11],w); delay(1200); } cd(0x80); lcd("PASSWORD CHANGED"); cd(0xc0); lcd("SUCCESSFULLY - O"); goto qwe; } } if(r==18) { for(w=0;w<6;w++) { arr1[w]=i2c_read(w+6); delay(100); } if(arr[0]=='P' && arr[1]==' ' && arr[2]=='C' && arr[3]==' ' && arr[4]==arr1[0] && arr[5]==arr1[1] && arr[6]==arr1[2] && arr[7]==arr1[3] && arr[8]==arr1[4] && arr[9]==arr1[5] && arr[10]==' ') { for(w=0;w<6;w++) { i2c_write(arr[w+11],(w+6)); delay(1200); } cd(0x80); lcd("PASSWORD CHANGED"); cd(0xc0); lcd("SUCCESSFULLY - C"); goto qwe; } } cd(0x80); lcd(" WRONG SMS "); cd(0xC0); lcd("PLEASE TRY AGAIN"); goto qwe; } } } } }