標題: 藍牙模塊發(fā)送接收 [打印本頁]

作者: 滴滴滴    時間: 2015-8-24 09:11
標題: 藍牙模塊發(fā)送接收
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
/***********按鍵聲明************/
sbit key_0=P0^0;
sbit key_1=P0^1;
sbit key_2=P0^2;
sbit key_3=P0^3;
sbit key_4=P0^4;
sbit key_5=P0^5;
sbit key_6=P0^6;
sbit key_7=P0^7;
uint Transmit_data=0;          //傳輸數(shù)據(jù)
bit TXDflag=0;                          //發(fā)送標志位,等于1時發(fā)送
/*****************************
        1ms基準延時程序
*****************************/
void delay_ms(unsigned int i)
{
        uchar j;
        while(i--)
        {
                for(j=0;j<125;j++)          
                {
                        ;
                }
        }  
}
/*****************************
        函數(shù)聲明
*****************************/
void Init_serial(); //串口初始化
void Key_test();         //按鍵檢測

/**********************************

        主函數(shù)

***********************************/
void main()
{
        Init_serial();
//        P0=0xff;
        P1=0xff;                                        //按鍵初始化
        while (1)
        {          
          Key_test();
        }
}

/**********************************************

        函數(shù)名: 按鍵檢測

        功能: 輪流檢測按鍵, 并發(fā)送相應的鍵碼

**********************************************/
void Key_test()
{
        if(P0!=0xff)
          {
           delay_ms(10);
           if(P0!=0xff)
           {
                if(key_0==0)
                  Transmit_data= 'a';
                else if(key_1==0)
                  Transmit_data= 'b';
                else if(key_2==0)
                  Transmit_data= 'c';
                else if(key_3==0)
                  Transmit_data= 'd';
                else if(key_4==0)
                  Transmit_data= 'e';
                else if(key_5==0)
                  Transmit_data= 'f';
                else if(key_6==0)
                  Transmit_data= 'g';
                else if(key_7==0)
                  Transmit_data= 'h';
           }
           while(P1!=0xff);
           TXDflag=1;
          }
          if(TXDflag==1)
          {                                  
           SBUF=Transmit_data;
           TXDflag=0;
          }       
}

/**********************************************

        函數(shù)名: 串口初始化
       
        功能: 設置串口通訊相關的寄存器, 只發(fā)送, 不使用中斷功能

**********************************************/
void Init_serial()
{
        TMOD = 0x20;
        TH1 = 0xfd;
        TL1 = 0xfd;
        SCON = 0x40;
        TR1 = 1;
}












#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char

uint Received_data=0; //接收數(shù)據(jù)

/*****************************
        函數(shù)聲明
*****************************/
void Init_serial();        //串口中斷 寄存器準備               
void Process_data(); //數(shù)據(jù)處理函數(shù)

/**************************************

  主函數(shù)

***************************************/
void main()
{
        Init_serial(); //串口中斷 寄存器準備
        while (1)
        {
                Process_data();         //數(shù)據(jù)處理
        }
}


/****************************************************************

  函數(shù)名: 數(shù)據(jù)處理函數(shù)

  功能: 判斷接收到的字符, 并作出對應的處理

*****************************************************************/
void Process_data()
{
        if(Received_data==0)
         P0=0xff;
        else if(Received_data=='a')
         P0=0xfe;
        else if(Received_data=='b')
         P0=0xfd;
        else if(Received_data=='c')
         P0=0xfb;
        else if(Received_data=='d')
         P0=0xf7;
        else if(Received_data=='e')
         P0=0xef;
        else if(Received_data=='f')
         P0=0xdf;
        else if(Received_data=='g')
         P0=0xbf;
        else if(Received_data=='h')
         P0=0x7f;                       

}


/*****************************************************************

  函數(shù)名:串口通訊初始化

  功能: 設置串口通訊相關的寄存器

******************************************************************/
void Init_serial()
{
        EA = 1;                                //開總中斷
        ES = 1;                                //開串口中斷
        SCON = 0x40;                //串口通信方式1
        REN = 1;                        //允許接受位
        TMOD |= 0x20;                //定時器1用于產生波特率,八位自動重裝模式, 用與運算, 不至于干擾定時器0的設置
        TH1 = TL1 = 0xfd;        //9600波特率初值
        TR1 = 1;                        //注意千萬不要使用定時器1,  不然會與串口沖突
}


/*****************************************************************

  函數(shù)名:串口中斷執(zhí)行函數(shù)

  功能:接收主控機發(fā)的字符并儲存

******************************************************************/
void Serial() interrupt 4
{
        if (RI) RI = 0;                 //中斷標志位清零
        Received_data = SBUF; //保存接收的字符
}




作者: lxa0    時間: 2015-8-24 19:47
你這個是2個藍牙之間
再用單片機控制的發(fā)射和接收嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1