You are on page 1of 10

#include <AT89X51.

H> #define lcd_port P2 #define LCD_D7 P2_3 #define LCD_RS 0x20 #define LCD_EN 0x10 #define TRUE 1 #define FALSE 0 #define keyport P0 #define col1 P0_0 #define col2 P0_1 #define col3 P0_2 #define col4 P0_3 #define col5 P0_4 #define DcmotorA P3_6 #define DcmotorB P3_7

//some defines //keypad //column //column //column //column //column connected to P0 1 2 3 4 5

char ascii_key='0'; unsigned int counter,counter2=0; unsigned char read_msg[40]; int flag5,flag3,flag4; unsigned char msg[20]; void serial_init(); void serial_send_string(unsigned char *str); void LCD_cleardisplay(); void lcd_reset(); void lcd_init (); void lcd_cmd (char cmd); void lcd_data (unsigned char dat); void LCD_sendstring(unsigned char *var); void delayus(unsigned int del); void delayms(unsigned int del); void key_init(); unsigned char get_key(); unsigned char translate(unsigned char keyval); void new_password_get(); void password_get(); void password_init(); void password_match(); void default_password(); char wrong_password=0x45; char wrong_password_end=0x01; char x[4],y[4]={'1','2','3','4'}; int times_left=2; unsigned int flag2=0;

void main() { while(1) { char key='0'; key_init(); lcd_init(); IE=0x90; //10010000B enables serial interrupt;rest are disabled

serial_init(); LCD_cleardisplay(); LCD_sendstring(" Welcome!"); delayms(10); password_get(); while(flag2==1) { key_init(); password_get(); }

LCD_cleardisplay(); LCD_sendstring("Welcome Master!"); delayms(10); LCD_cleardisplay(); LCD_sendstring("Change Pass.?"); delayms(2); LCD_cleardisplay(); LCD_sendstring("A-yes,other-no"); delayms(1); key_init(); while(key=='0') key=translate(get_key()); LCD_cleardisplay(); lcd_data(key); delayms(5); if(key=='1') { password_init(); LCD_cleardisplay(); LCD_sendstring("Pass. Changed"); delayms(3); } key='0'; LCD_cleardisplay(); //char at_command[]="AT\r"; serial_send_string("ATe0\r"); delayms(5); serial_send_string("AT\r"); delayms(5); //while(1) { LCD_cleardisplay(); LCD_sendstring(" Welcome"); delayms(3); LCD_cleardisplay(); // // // // // // serial_send('A'); delay(1000); serial_send('T'); delay(1000); serial_send('\r'); delay(10000) ;

// LCD_sendstring("AT"); // delay(100); /* LCD_sendstring("operating mode"); serial_send_string("AT+CMGF=?\r"); //operating modes supported delayms(5); LCD_cleardisplay(); LCD_sendstring("opt. mode now"); serial_send_string("AT+CMGF?\r"); //current operating mode in use delayms(5); */ LCD_cleardisplay(); LCD_sendstring("SMSC address"); serial_send_string("AT+CSCA?\r"); //current SMSC address delayms(5); /* LCD_cleardisplay(); LCD_sendstring("msg store area"); serial_send_string("AT+CPMS=?\r"); //Finding the Message Storage Areas Suppo rted by a GSM/GPRS Modem or Mobile Phone delayms(5); LCD_cleardisplay(); LCD_sendstring("curr. msg store"); serial_send_string("AT+CPMS?\r"); //message storage areas currently used, th e number of messages currently stored //in a certain message storage area, and the maximum number of messa ges that are //allowed to be stored in a certain message storage area delayms(5); */ LCD_cleardisplay(); LCD_sendstring("sms initialize"); serial_send_string("AT+CMGF=1\r"); //sms initialization delayms(5); LCD_cleardisplay(); LCD_sendstring("all messages"); serial_send_string("AT+CMGL=\"ALL\"\r"); //Finding ALL Messages delayms(5); LCD_cleardisplay(); LCD_sendstring("config. to get"); serial_send_string("AT+CNMI=1,1,0,0,0\r"); //setting configuration to receiv e msg on serial port delayms(5); LCD_cleardisplay(); LCD_sendstring("unread msg:"); delayms(5); if(flag5==1) { LCD_cleardisplay(); LCD_sendstring("msg:"); serial_send_string("AT+CMGL=\"REC UNREAD\"\r"); //setting configuration to receive msg on serial port delayms(5); counter=0; flag5=0; }

else { LCD_cleardisplay(); LCD_sendstring("no unread msg"); delayms(5); } //want to open door LCD_cleardisplay(); LCD_sendstring("Open door?"); delayms(5); LCD_cleardisplay(); LCD_sendstring("A-yes,other-no"); delayms(1); key_init(); while(key=='0') key=translate(get_key()); LCD_cleardisplay(); lcd_data(key); delayms(1); if(key=='1') { //send sms //serial_send_string("AT+CMGS=1,1,0,0,0\r"); //setting configuration to send msg on serial port //delay(10000); LCD_cleardisplay(); LCD_sendstring("Door opening"); DcmotorA=1; DcmotorB=0; delayms(15); LCD_cleardisplay(); LCD_sendstring("Door closing"); DcmotorA=0; DcmotorB=1; delayms(17); DcmotorA=0; DcmotorB=0; } key='0'; } } } void serial0() interrupt 4 { unsigned char temp,temp1; if(TI==1) { temp=SBUF; serial_send_string(&temp); LCD_sendstring(&temp1); } else if(RI==1) { RI=0;

temp=SBUF; /* msg[counter]=temp; if(flag5==0) { switch (temp) { case '+' : if(counter==0){counter++;} break; case 'C' : if(counter==1){counter++;} break; case 'M' : if(counter==2||counter==9){counter++;} break; case 'T' : if(counter==3){counter++;} break; case 'I' : if(counter==4){counter++;} break; case ':' : if(counter==5){counter++;} break; case ' ' : if(counter==6){counter++;} break; case '"' : if(counter==7||counter==10){counter++;} break; case 'S' : if(counter==8){counter++;} break; case ',' : if(counter==11){counter++; flag5=1;} break; } } if(flag5==1) { ++counter; counter2=counter; read_msg[counter2]=temp; while(read_msg[counter2]!='G') { flag3=1;counter2++; } while(read_msg[counter2]!='O') { flag4=1;counter2++; } if(flag3==1||flag4==1) { LCD_sendstring(&read_msg[counter2]); flag3=0;flag4=0; } } */ //LCD_sendstring(&temp); } } void delayms(unsigned int del) { unsigned int i,j; for(i=1;i<del;i++) for(j=1;j<24000;j++); } void serial_init() { TMOD = 0x20; TH1 = 0x0FD; SCON = 0x50; //PCON=0x80; TR1 = 1; } void serial_send_string(unsigned char *str)

{ while(*str!='\0') { SBUF = *str; while(!TI); TI = 0; ++str; } } void lcd_reset() { lcd_port = 0xFF; delayms(20); lcd_port = 0x03+LCD_EN; lcd_port = 0x03; delayms(10); lcd_port = 0x03+LCD_EN; lcd_port = 0x03; delayms(1); lcd_port = 0x03+LCD_EN; lcd_port = 0x03; delayms(1); lcd_port = 0x02+LCD_EN; lcd_port = 0x02; delayms(1); } void lcd_init () { lcd_reset(); // Call LCD reset lcd_cmd(0x28); // 4-bit mode - 2 line - 5x7 font. lcd_cmd(0x0C); // Display no cursor - no blink. lcd_cmd(0x06); // Automatic Increment - No Display shift. lcd_cmd(0x80); // Address DDRAM with 0 offset 80h. } void lcd_cmd (char cmd) { lcd_port = ((cmd >> 4) & 0x0F)|LCD_EN; lcd_port = ((cmd >> 4) & 0x0F); lcd_port = (cmd & 0x0F)|LCD_EN; lcd_port = (cmd & 0x0F); delayus(200); delayus(200); } void lcd_data (unsigned char dat) { lcd_port = (((dat >> 4) & 0x0F)|LCD_EN|LCD_RS); lcd_port = (((dat >> 4) & 0x0F)|LCD_RS); lcd_port = ((dat & 0x0F)|LCD_EN|LCD_RS); lcd_port = ((dat & 0x0F)|LCD_RS); delayus(200); delayus(200); } void delayus(unsigned int del) { unsigned int i,j;

for(i=1;i<del;i++) for(j=1;j<24;j++); }

void LCD_sendstring(unsigned char *var) { unsigned char abc=' '; lcd_data(abc); lcd_data(abc); while(*var) { lcd_data(*var++); //till string ends delayms(1); //send characters one by one } } void LCD_cleardisplay() { lcd_cmd(0x01); P2_5=0; P2_4=1; P2_4=0; delayms(7); } void key_init() { keyport &=0x1F; //make Rows as o/p and cols are i/p } unsigned char get_key() { unsigned char i,k,key=0; k=1; for(i=0;i<3;i++){ //loop for 4 rows keyport &=~(0x80>>i); //to make rows low 1 by 1 if(!col1){ //check if key1 is pressed key = k+0; //set key number while(!col1); //wait for release return key; //return key number } if(!col2){ //check if key2 is pressed key = k+1; //set key number while(!col2); //wait for release return key; //return key number } if(!col3){ //check if key3 is pressed key = k+2; //set key number while(!col3); //wait for release return key; //return key number } if(!col4){ //check if key4 is pressed key = k+3; //set key number while(!col4); //wait for release return key; //return key number

if(!col5){

} //check if key4 is pressed key = k+4; //set key number while(!col5); //wait for release return key; //return key number } k+=3; //next row key number keyport |= 0x80>>i; //make the row high again

} return 0; } unsigned char translate(unsigned char keyval) { if(keyval<10&&keyval>0) return keyval+'0'; else if(keyval>=10 && keyval < 15) return keyval - 10 + 'A'; else return '0'; }

void password_init() { LCD_cleardisplay(); LCD_sendstring("Enter new pass"); delayms(1); new_password_get(); } void new_password_get() { int i; LCD_cleardisplay(); LCD_sendstring("Password:"); for(i=0;i<4;i++) { while(ascii_key=='0') { ascii_key = translate(get_key()); } y[i]=ascii_key; lcd_data('*'); ascii_key='0'; } } void password_match() { int i; unsigned int flag=1; unsigned int msg_sent_count=1; for(i=0;i<4;i++) { if(y[i]==x[i]); else { LCD_cleardisplay(); flag=0;

} } if(flag==1) { LCD_cleardisplay(); flag2=0; times_left=2; LCD_sendstring("Password match"); delayms(2); } else if(flag==0&&times_left!=0) { { times_left--; flag2=1; LCD_cleardisplay(); //delayms(2); LCD_sendstring("Wrong Password"); //delayms(2); } } else if(flag==0&&times_left==0) { while(1) { flag2=1; LCD_cleardisplay(); LCD_sendstring("RED ALERT!!!"); delayms(5); if(msg_sent_count==1) { serial_send_string("AT+CMGF=1\r"); //sms initialization to enter Tex t mode from the PDU mode delayms(1); serial_send_string("AT+CMGS=\"+919971752464\"\r"); //sms is sent to be s ent to this no. delayms(1); serial_send_string("Security breached!"); serial_send_string("0x1A"); //ctrl+z marks the end of message & it is de livered } } //send sms //serial_send_string("AT+CMGS=1,1,0,0,0\r"); //setting configuration to send msg on serial port //delay(10000); } } void password_get()

{ int i; LCD_cleardisplay(); LCD_sendstring("Enter password"); delayms(5); LCD_cleardisplay(); LCD_sendstring("Password:"); for(i=0;i<4;i++) { while(ascii_key=='0') { ascii_key = translate(get_key()); } x[i]=ascii_key; lcd_data('*'); ascii_key='0'; } password_match(); }

You might also like