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;

}

Parents Reply Children
  •  /*
                    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;
    
    }
    

  • What BlueTooth part? What does the manual/data sheet describe?