Sie sind auf Seite 1von 7

#include<reg51.h> #include<string.h> #include<absacc.

h> sfr port=0xB0; sbit rs = P2^2; sbit rw = P2^1; sbit e = P2^0; sbit D7 = P0^7; void void void void void char delay(unsigned int i); lcdcmd(unsigned char val); lcddata(unsigned char val); lcdinit(); checkbusy(); read_frm_gsm();

void lcdcmd(unsigned char val) { checkbusy(); P0=val; rs=0; rw=0; e=1; delay(1); e=0; return; } void delay(unsigned int i) { unsigned int k, l; for(k=0;k<i;k++) for(l=0;l<1000;l++); } void lcddata(unsigned char val) { checkbusy(); P0=val; rs=1; rw=0; e=1; delay(1); e=0; // return; }

void lcdinit() { lcdcmd(0x38); delay(5); lcdcmd(0x0c); delay(5); lcdcmd(0x01); delay(5); lcdcmd(0x06); delay(5); } void checkbusy() {

// 2 lines 5x7 matrix. // Display ON Cursor Blinking. // Clear Display Screen. // Increment Cursor.

D7=1; rs=0; rw=1; while(D7!=0) { e=0; delay(1); e=1; } }

void main() { unsigned int i; unsigned char temp; i=0; lcdinit(); lcdcmd(0x80); lcddata('K'); TMOD SCON TH1 TL1 TR1 = = = = = 0x20; 0x50; 0xFD; 0xFD; 1;

delay(100); // delay(10); while(1) { i=0; SBUF='A'; while(TI==0); TI=0; SBUF='T'; while(TI==0); TI=0; delay(10); while(i<2) { i++; temp=read_frm_gsm(); // Get the datas from the system. if(temp == 'O'||temp == 'o') { lcddata(temp); //delay(10); } temp=read_frm_gsm(); // Get the datas from the system. if(temp == 'K'|| temp == 'k') { lcddata(temp); delay(10); } i++; }

} }

char read_frm_gsm() { unsigned char chr; while(RI==0); chr=SBUF; RI=0; // SBUF=chr; // while(TI==0); // TI=0; return chr; }

temp=read_frm_gsm();

// Get the datas from the system.

if(temp == 'O'||temp == 'o') { lcddata(temp); //delay(10); } temp=read_frm_gsm(); // Get the datas from the system. if(temp == 'K'|| temp == 'k') { lcddata(temp); delay(10); } read_frm_gsm(); //discard \r read_frm_gsm(); //discard \n temp=read_frm_gsm(); // Get the datas from the system. if(temp == 'O'||temp == 'o') { lcddata(temp); //delay(10); } temp=read_frm_gsm(); // Get the datas from the system. if(temp == 'K'|| temp == 'k') { lcddata(temp); delay(10); }

#include <reg51.h> #include<string.h> void delay(unsigned int i); void lcdcmd(unsigned char val); void lcddata(unsigned char val); void lcdinit(); void checkbusy(); void lcdstr(unsigned char *s); //char read_frm_gsm(); void tx0(unsigned char);

void delay_sms (unsigned int); void SMSString(char*text) ; void init(); unsigned char j,abc; unsigned char msg1[100];

void lcdstr(unsigned char *s) { unsigned char l,i; l = strlen(s); // get the length of string for(i=1;i<=l;i++) { lcddata(*s); // write every char one by one s++; } } void lcdcmd(unsigned char val) { checkbusy(); P0=val; rs=0; rw=0; e=1; delay(1); e=0; return; } void delay(unsigned int i) { unsigned int k, l; for(k=0;k<i;k++) for(l=0;l<1000;l++); } void lcddata(unsigned char val) { checkbusy(); P0=val; rs=1; rw=0; e=1; delay(1); e=0; // return; }

void lcdinit() { lcdcmd(0x38); delay(5); lcdcmd(0x0c); delay(5); lcdcmd(0x01); delay(5); lcdcmd(0x06); delay(5); } void checkbusy()

// 2 lines 5x7 matrix. // Display ON Cursor Blinking. // Clear Display Screen. // Increment Cursor.

{ D7=1; rs=0; rw=1; while(D7!=0) { e=0; delay(1); e=1; } }

void serial () interrupt 4 { msg1[abc]=SBUF; abc++; RI=0; } void main () { /* if u do not want to check "OK" response after each AT command then enable interrupt IE=0X90 ; after last AT command of SMSString( "AT+CMGR=1\r"); // AT command to read sms so after that u recieve a no of bytes from modile if u disable it then u do not reieve it even data comes */ lcdinit(); init(); SMSString("AT\r"); // AT commands to initialize gsm modem delay_sms(1000); SMSString( "ATe0\r"); // turn off echo delay_sms(1000); SMSString( "AT&W\r"); // save settings delay_sms(1000); SMSString( "AT+CMGF=1\r"); // select text mode for sms delay_sms(1000); SMSString( "AT+CNMI=2,1,0,0,0\r"); // notification of new sms delay_sms(1000); SMSString( "AT+CMGR=1\r"); // AT command to read sms /* i get a response like this // +CMGR:"REC READ"," +95445677888", "Date and time", sms text here // Ok. */ // read sms and store in buffer msg1 delay_sms(1000); lcdstr(msg1); delay(10); while(1); }

void init() { j=0; abc=0; IE=0X90; // Enable serial interrupt

TL1=0XFD; //9600 @ 11.0592 TH1=0xFD; TMOD=0x20; SCON=0x50; TR1=1; } void SMSString(unsigned char* text) //function to send SMS using GSM modem { unsigned char count = 0; while (text[count]) { tx0(text[count++]); } } void tx0(unsigned char x) //send data to serial port 0 { EA=0; SBUF=x; while(TI==0); TI=0; EA=1; }

void delay_sms (unsigned int count) { unsigned int i; // Keil v7.5a while(count) { i = 115; while(i>0) i--; count--; } } void read_text( unsigned char *msg,unsigned char *no,unsigned char *time) { unsigned char *temp; temp=msg; do msg++; while(*msg!='+'); do msg++; while(*msg!='+'); // reaching at no do *no++=*msg++; while(*msg!='"'); // reaching at time *no++='\0'; msg++; msg++; msg++; do *time++=*msg++; while(*msg!='+'); // raching at message *time='\0'; do msg++; while(*msg!='\n'); msg++; do *temp++=*msg++;

while(*msg!='\r'); *temp='\0'; lcd_cmd(0x80); lcd_str(rec_no); lcd_cmd(0xC0); lcd_str(time_date); lcd_cmd(0x94); lcd_str(msg1); }

// reaching at end of message

// // // // // //

ist line address array having receipt no 2nd line address array having date and time 3rd line address array having message

Das könnte Ihnen auch gefallen