标题: 蓝牙模块发送接收 [打印本页]

作者: 滴滴滴    时间: 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;          //传输数据
bit TXDflag=0;                          //发送标志位,等于1时发送
/*****************************
        1ms基准延时程序
*****************************/
void delay_ms(unsigned int i)
{
        uchar j;
        while(i--)
        {
                for(j=0;j<125;j++)          
                {
                        ;
                }
        }  
}
/*****************************
        函数声明
*****************************/
void Init_serial(); //串口初始化
void Key_test();         //按键检测

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

        主函数

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

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

        函数名: 按键检测

        功能: 轮流检测按键, 并发送相应的键码

**********************************************/
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;
          }       
}

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

        函数名: 串口初始化
       
        功能: 设置串口通讯相关的寄存器, 只发送, 不使用中断功能

**********************************************/
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; //接收数据

/*****************************
        函数声明
*****************************/
void Init_serial();        //串口中断 寄存器准备               
void Process_data(); //数据处理函数

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

  主函数

***************************************/
void main()
{
        Init_serial(); //串口中断 寄存器准备
        while (1)
        {
                Process_data();         //数据处理
        }
}


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

  函数名: 数据处理函数

  功能: 判断接收到的字符, 并作出对应的处理

*****************************************************************/
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;                       

}


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

  函数名:串口通讯初始化

  功能: 设置串口通讯相关的寄存器

******************************************************************/
void Init_serial()
{
        EA = 1;                                //开总中断
        ES = 1;                                //开串口中断
        SCON = 0x40;                //串口通信方式1
        REN = 1;                        //允许接受位
        TMOD |= 0x20;                //定时器1用于产生波特率,八位自动重装模式, 用与运算, 不至于干扰定时器0的设置
        TH1 = TL1 = 0xfd;        //9600波特率初值
        TR1 = 1;                        //注意千万不要使用定时器1,  不然会与串口冲突
}


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

  函数名:串口中断执行函数

  功能:接收主控机发的字符并储存

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




作者: lxa0    时间: 2015-8-24 19:47
你这个是2个蓝牙之间
再用单片机控制的发射和接收吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1