找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5341|回复: 6
收起左侧

hc06与51单片机连接,hc06如何在手机上接收数据,程序是什么 求帮助

[复制链接]
ID:339801 发表于 2018-5-28 16:47 | 显示全部楼层 |阅读模式
50黑币

回复

使用道具 举报

ID:303383 发表于 2018-5-29 10:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:440944 发表于 2019-1-21 12:52 | 显示全部楼层
蓝牙串口通信
回复

使用道具 举报

ID:168777 发表于 2019-1-21 14:45 | 显示全部楼层
将蓝牙模块的RX和TX连接51对应的接受和发送引脚,其实就是一个51的串口接受和发送的程序
     #include <reg52.h>  
     #include <stdio.h>              //printf头文件  
     #define uc unsigned char   
     #define uint unsigned int  
      
     uc flag,i,flag_t,s[50]="",j=0,flag_n=0;  
     uc code table[]="I get ";         
      
     void init()  
{  
     TMOD=0x20;    //定时器工作方式,选择了定时器1,工作方式2 八位初值自动重装的8位定时器。         
     TH1=0xfd;     //定时器1初值  ,设置波特率为9600 晶振11.0529MHZ?  
     TL1=0xfd;  
     TR1=1;        //开启定时器1  
   
     SM0=0;  
     SM1=1;        //10位异步接收,(8位数据)波特率可变  
     REN=1;        //允许串行口接收位  
     EA=1;         //允许中断(总闸)  
     ES=1;         //允许串口中断  
}  
void main()  
{  
     init();  
     while(1)  
{  
       if(flag==1)  
     {     if(flag_n!=0)        //使第二个及以后I get xx 换行,不与You transfer在一行(单纯为了格式好看)  
             {TI=1;  
             printf("\n");  
             while(!TI);  
             TI=0;  
             }  
         for(i=0;i<6;i++)  
         {  
             SBUF=table[i];  
             while(!TI);  
             TI=0;  
         }  
             for(i=0;s[i]!='#'&&i<50;i++)  
         {  
             SBUF=s[i];  
             while(!TI);  
             TI=0;  
         }  
         flag=0;  
     }  
     if(flag_t==1)                          //发送完毕之后,在电脑端输出。  
     {  
         TI=1;                              //printf之前必须将T1置为1才行。  
         printf ("\nYou transfer %s",s);  
         while(!TI);  
         TI=0;  
         flag_t=0;  
     }     
}  
}  
   
void ser() interrupt 4  
{  
         if(RI)       //接收数据,手动将RI清0  
     {         
         RI=0;  
           
         if(flag==0&&j!=0)//1.循环赋值为'\0'(字符串结尾标志符),j=0,为了第二次传递字符串是又是从头输出  
         {            //2.flag为0和j不为0时,保证是第二次及以后,传输字符串(控制输出格式)  
             flag_n++;              
             for(j=0;s[j]!='#'&&j<50;j++)  
                   s[j]='\0';  
                   j=0;  
         }  
         s[j]=SBUF;  
         flag=1;  
         if(s[j]=='#'||j==49)     //以'#'作为传送字符串的结尾符,我定义的字符数组最长为50所以49也应该结束。  
             flag_t=1;  
         else  
             j++;  
     }  
   
     if(TI)     //发送数据  
     {  
     }      
}  
回复

使用道具 举报

ID:471296 发表于 2019-1-21 15:31 | 显示全部楼层
首先,需要蓝牙模块和PC的硬件连接,这里有两种方法:
<a>把你的开发板的单片机取下来,然后从开发板引出电源线VCC和GND,还有P30、P31接口,连接蓝牙模块的四个端口(注意RXD和TXD不要反接了)
<b>如果你有USB-TTL模块,可以直接连接蓝牙模块,无需单片机开发板转接过去。
(2)通过PC的串口软件(比如STC-ISP软件自带的串口),设置好软件的波特率和通信数据格式,通过串口软件发送AT命令(通常购买时卖家提供了),看是否有返回数据,如果没有返回,有可能是P30、P31接口需要换过来,如果发送命令,有返回信息且不是乱码,表示蓝牙模块和PC可以串口通信了。
(3)手机下载软件“蓝牙串口”,通过此软件连接蓝牙模块(蓝牙的名称和配对密码可通过 AT命令设置),然后给蓝牙模块供电,PC打开串口软件,手机发送任意字符到蓝牙模块,会发现PC串口软件接收到了信息,这表示蓝牙可以正常工作。
(4)编写单片机程序,此时需要分为两步:
<a>先不连接蓝牙模块,编写程序,单片机接收到串口数据,做出相应动作,写好后下载,然后打开PC的串口软件,发送命令,检验现象是否正确,如果正确,开始第二步
<b>把蓝牙模块连接到单片机,手机蓝牙连接模块,手机发送命令,此时只要步骤<a>现象经过反复验证没有问题,第二步肯定没问题。(如果第二步不对,那就返回去做第一步)
(5)其他。如果需要用PC的蓝牙进行控制,还需要购买蓝牙适配器,也就是模块发送信息到电脑时,需要一个接收器。如果不是很必要,就用手机蓝牙软件就好了,省钱省事。
回复

使用道具 举报

ID:652760 发表于 2019-11-30 00:45 | 显示全部楼层
小桃红 发表于 2019-1-21 15:31
首先,需要蓝牙模块和PC的硬件连接,这里有两种方法:
把你的开发板的单片机取下来,然后从开发板引出电源 ...

但是我第二步用手机传数据给蓝牙,它没有回复,但是电脑上就可以,这是为什么蟹蟹
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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