找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3368|回復: 1
打印 上一主題 下一主題
收起左側(cè)

藍牙模塊發(fā)送接收

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:88783 發(fā)表于 2015-8-24 09:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#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ù)名: 串口初始化
       
        功能: 設置串口通訊相關(guān)的寄存器, 只發(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ù)名:串口通訊初始化

  功能: 設置串口通訊相關(guān)的寄存器

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


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

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

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

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



評分

參與人數(shù) 1黑幣 +5 收起 理由
be1008611 + 5 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:74784 發(fā)表于 2015-8-24 19:47 | 只看該作者
你這個是2個藍牙之間
再用單片機控制的發(fā)射和接收嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表