0% found this document useful (0 votes)
55 views

GSM1

er
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views

GSM1

er
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 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