找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3353|回复: 1
打印 上一主题 下一主题
收起左侧

蓝牙模块发送接收

[复制链接]
跳转到指定楼层
楼主
ID:88783 发表于 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; //保存接收的字符
}



评分

参与人数 1黑币 +5 收起 理由
be1008611 + 5 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:74784 发表于 2015-8-24 19:47 | 只看该作者
你这个是2个蓝牙之间
再用单片机控制的发射和接收吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表