This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to use AT Command for Bluetooth using 8051 Microcontroller

I am using 8051 Microcontroller and connecting it with Bluetooth and LCD. I am able to send data from mobile to LCD Display and can also print pre-written lines in code on mobile Bluetooth Terminal and LCD Display. How can I write AT Commands in the code, so that I can access the GPIO Pins of Bluetooth ?

/* Port 2 rs, rw, en of LCD Port 1 LCD Output Port 3 Bluetooth
*/

#include<reg51.h>
void Baud();
sbit rs = P2^5;
sbit rw = P2^6;
sbit en = P2^7;
void lcdcmd(unsigned char );
void lcddata(unsigned char);
void msdelay(unsigned char);
void run(unsigned char *l);
char String[10]="SCIENTECH";
void SerTx(unsigned char);
void at_command_send(unsigned char *str);
void enter();
int i;

unsigned char a;
unsigned char var_tfr;

void EINT() interrupt 4
{ a=SBUF; lcdcmd(0xcd); lcddata(a); // Put value of Serial Buffer at Port 1, which is LCD

RI=0; TI=0;
}

void main()
{ Baud(); lcdcmd(0x38); // 2 lines and 5 x 7 matrix lcdcmd(0x01); // Clear Display lcdcmd(0x0E); // Display on, cursor blinking lcdcmd(0x06); // Increment Cursor lcdcmd(0x80);

run("BT - Interface : "); lcdcmd(0xc0); run("Data Receive: ");

at_command_send("AT+AB GPIOConfig 2 'O'"); enter(); msdelay(1); at_command_send("AT+AB GPIOWrite 2 1"); enter(); IE=0x90; while(1) { msdelay(1); }
}

void at_command_send(unsigned char *str)
{ EA=0; while(*str!='\0') { TI=0; SBUF=(*str++); while(!TI); TI=0; }
} void lcdcmd(unsigned char value)
{ P1 = value; rs=0; rw=0; en=1; msdelay(10); en=0;
}

//void SerTx(unsigned char value1)
//{
// SBUF=value1;
// while(TI==0);
// TI=0;
// // RI=0;
//}

void lcddata(unsigned char value)
{ P1 = value; rs=1; rw=0; en=1; msdelay(1); en=0;

}

void msdelay(unsigned char time)
{ unsigned int i,j; for(i=0; i<time; i++) { for (j=0; j<1275; j++); }
}

void run(unsigned char *l)
{ while(*l) { var_tfr=*l++; P1= var_tfr; SBUF=var_tfr; rs=1; rw=0; en=1; msdelay(10); en=0; while(TI==0); TI=0; }
}

void Baud()
{ TMOD=0x20; // Timer 1, Mode 2 SCON=0x50; // Mode 1 TH1=0xFD; // 9600 TR1=1;
} void enter()
{

SBUF=0x0a; while(TI==0); TI=0; RI=0; SBUF=0x0d; while(TI==0); TI=0; RI=0;

}