手机通过Hc一05和单片机与手机通信建立通信?怎么做

怎么让单片机和HC-05蓝牙模块通信起来_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:137,389贴子:
怎么让单片机和HC-05蓝牙模块通信起来收藏
1、我现在用的单片机模块晶振是11.0592mhz,HC-05模块在at模式下波特率38400好像是不能修改的,而单片机模块达不到38400的波特率,不能通过at指令控制蓝牙模块。
2、用串口助手调试蓝牙模块的时候不能使用虚拟串口可以蓝牙模块通信,也就不能在电脑上仿真单片机和蓝牙模块通信。比如在电脑上创建了3组串口,1-2,3-4,5-6,把蓝牙模块用串口转u**模块接入电脑后,串口助手会显示如果想要给蓝牙模块发送at指令,只能在com6里面发送。尝试在com5中发送指令,那么结果是com5和com6中都不能接收到蓝牙传回的数据
at模式下串口波特率为38400才能和蓝牙模块通信
登录百度帐号推荐应用我想用手机通过蓝牙控制单片机led闪烁,可是用串口可以看到发送的结果,一用手机控制就不行了,弄了好久没有结果,想来求助一下。下面附上程序。
在线时间10 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
#include &reg52.H&
#include &intrins.h&
// 函数原形定义
#define uchar unsigned char
#define uint unsigned int
& && && && && && &
//sbit LED1& & = P3^3;
uchar a=0;& && && &
void Delay_1ms(uint i)//1ms延时
& & uchar x,j;
& & for(j=0;j&i;j++)
& && &&&for(x=0;x&=148;x++);
void Init(void)
//& && & & & LED1=1;
& & & & TMOD& & = 0x20; //8 位自动重装计数
& & PCON& &&= 0x7f;
& & SCON& & = 0x50;//串行口控制寄存器 SM1=1,SM0=0方式一波特率可变
& & TH1& &&&= 0xFD; //设置波特率 9600
& & TL1& &&&= 0xFD;
& & TR1& &&&= 1;& & //启动定时器1
& & TI& && &= 0;
& & RI& && &= 0;
& & ES& && &= 1;& & //开串口中断
& & EA& && &= 1;& & //开总中断
void main (void)
& & Init();//初始化
& & while(1)
& & & & & & & & switch(a)
& && && && &case 0:&&P1=0X00;
& && && && &case 1:&&P1=0XFF;
void Com_Int(void) interrupt 4
& & EA = 0;
& & if (RI == 1) //当硬件接收到一个数据时,RI会置位
& && &&&a = SBUF ; //这里减去48是因为从电脑中发送过来的数据是ASCII码。//& &&&Buffer[0] = SBUF-48 ;
& && &&&RI = 0;
& & EA = 1;
除了连接民题,你手机发送的控制码是mcu的控制码吗?&
在线时间10 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
这是串口调试的& &确认发出的是0和1&&但是单片机就是没反应。led还是原来的样子。求大神解释一下。
(35.27 KB, 下载次数: 5)
19:14 上传
在线时间10 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
没有人吗?
在线时间10 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
在线时间532 小时
威望1160分
芯币1660枚
TA的帖子TA的资源
纯净的硅(中级), 积分 1160, 距离下一级还需 40 积分
纯净的硅(中级), 积分 1160, 距离下一级还需 40 积分
我就问一下,你能确定手机与你蓝牙设备连上了吗?
能确定,我手机发什么,电脑串口软件就显示什么。&
天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,,添加说明EEworld好友
在线时间322 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 80, 距离下一级还需 120 积分
一粒金砂(中级), 积分 80, 距离下一级还需 120 积分
// 函数原形定义
#define uchar unsigned char
#define uint unsigned int
除了连接民题,你手机发送的控制码是mcu的控制码吗?
对,发送的就是switch里面的控制码。&
在线时间10 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
我就问一下,你能确定手机与你蓝牙设备连上了吗?
能确定,我手机发什么,电脑串口软件就显示什么。
在线时间10 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
除了连接民题,你手机发送的控制码是mcu的控制码吗?
对,发送的就是switch里面的控制码。
在线时间1685 小时
威望42756分
芯币40770枚
E金币1494枚
TA的帖子TA的资源
用PC串口监视一下手机到蓝牙间的输出。
上传了一些书籍资料,也许有你想要的:
在线时间0 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 24, 距离下一级还需 176 积分
一粒金砂(中级), 积分 24, 距离下一级还需 176 积分
便宜的51单片机,AD脚要多一点,请推荐& &6,8,10,14,16,20PIN
技术导师勋章
论坛威望大于30000或网友提名:坛子里公认的技术导师
EEWORLD 官方微信
Powered by21ic官方微信-->
后使用快捷导航没有帐号?
请完成以下验证码
查看: 8185|回复: 14
关于hc-06蓝牙模块与51单片机通讯问题
&&已结帖(0)
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
最近在网上买了一个蓝牙模块,型号是hc-06,想用此与单片机通讯,即通过发信号给蓝牙,然后经蓝牙的TX与RX与单片机TX与RX通讯。但是怎么调也调不好。说明书上写着蓝牙的用法与普通的串口用法一样。下面的程序通过单片机与电脑上的串口大师通讯是可以的,但是就是与蓝牙通讯不成功,急求解决问题。
#include &reg52.h&
#include &intrins.h&
sbit led1=P1^0;
sbit led2=P1^3;
& && && &TMOD = 0x20;& && && && && && && && &// 定时器1工作于8位自动重载模式, 用于产生波特率
& && && & TH1=TL1=0xFD;& && && && && && && && && && &&&// 波特率9600
& && && & SCON = 0x50;& && && && && && && && &// 设定串行口工作方式1 允许接收,相当于下面三句
& && &&&//SM0=0;
& && & //SM1=1;
& && &&&//REN=1;
& && && && && &PCON =0x00;& && && && && && && && &// 波特率不倍增
& && && & TR1 = 1;
& && && && &led1=0;led2=0;
& && && & while(1)
& && && & {
& && && && && && &if(RI==1)& && && && && && && && && && && && && && && && &// 是否有数据到来
& && && && && && &{
& && && && && && && && &&&RI = 0;
& && && && && && &tmp = SBUF;& && && && && && && && && && &&&// 暂存接收到的数据
& && && && && && &if(tmp==1)//如果数据为1
& && && && && && && && && && && & led1=1;
& && && && && && && && &&&else if(tmp==2)//如果数据为2
& && && && && && && && &&&led1=1;
& && && && && && &else {led1=0;led2=0;}
& && && && && && &}& && && && && &
& && && & }
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:88%打赏:140.96受赏:354.88
主题帖子积分
找卖家。不好用或者不会用都要找他。
昵称: 业务QQ:
欢迎进入& && &21ic TI技术交流1群:(已满),&&21ic TI技术交流2群:
主题帖子积分
助理工程师, 积分 1178, 距离下一级还需 822 积分
助理工程师, 积分 1178, 距离下一级还需 822 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1178, 距离下一级还需 822 积分
助理工程师, 积分 1178, 距离下一级还需 822 积分
MCU的RX/TX对调一下。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
找到问题了,谢谢大家!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
高级技术员, 积分 826, 距离下一级还需 174 积分
高级技术员, 积分 826, 距离下一级还需 174 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
高级技术员, 积分 826, 距离下一级还需 174 积分
高级技术员, 积分 826, 距离下一级还需 174 积分
我是来学习的!
IC采购哪里去—中国ic超市网:
主题帖子积分
实习生, 积分 22, 距离下一级还需 28 积分
实习生, 积分 22, 距离下一级还需 28 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 22, 距离下一级还需 28 积分
实习生, 积分 22, 距离下一级还需 28 积分
我的也是,是怎么的呀。望指教
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
楼主的是什么问题 怎么找到的&&我现在蓝牙给单片机发送指令单片机也没反应&&但是电脑串口发送单片机就可以& &楼主指点下
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
hjl240 发表于
找到问题了,谢谢大家!
怎么回事啊?求解!急~~~~~~谢谢!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
高级技术员, 积分 513, 距离下一级还需 487 积分
高级技术员, 积分 513, 距离下一级还需 487 积分
主题帖子积分
专家等级:结帖率:91%
主题帖子积分
高级技术员, 积分 513, 距离下一级还需 487 积分
高级技术员, 积分 513, 距离下一级还需 487 积分
你是怎么做的嘛,交流下啊&&&&谢谢了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 48, 距离下一级还需 2 积分
实习生, 积分 48, 距离下一级还需 2 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 48, 距离下一级还需 2 积分
实习生, 积分 48, 距离下一级还需 2 积分
楼主既然找到问题所在,就要与大家分享一下,这才是论坛的真正作用!不能一家独乐乐!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1177, 距离下一级还需 823 积分
助理工程师, 积分 1177, 距离下一级还需 823 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
助理工程师, 积分 1177, 距离下一级还需 823 积分
助理工程师, 积分 1177, 距离下一级还需 823 积分
HC06的串口电平是TTL的,只要信号线对,波特率对,这东西很简单
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
上面贴的程序程序是没有问题的,如果的有问题的话,要检查硬件有没有问题,比如供电是否正确,对应引脚是否连接正确,,,,一个TX连接一个RX,不要一个TX连接好几个RX,,RX连接也同理。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
huzhiyang 发表于
你是怎么做的嘛,交流下啊&&&&谢谢了
上面贴的程序是没有问题的,主要是检查一下硬件有没有问题
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 15, 距离下一级还需 35 积分
实习生, 积分 15, 距离下一级还需 35 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 15, 距离下一级还需 35 积分
实习生, 积分 15, 距离下一级还需 35 积分
蓝牙模块可以直接连接单片机呀& &我以为还需要232电平转换的& &
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
上面贴的程序是没有问题的,主要是检查一下硬件有没有问题
你好,我最近也在使用51和HC60蓝牙模块。由于只有一个串口,开发板使用了CH340,也存在一个串口TX(P31)既接蓝牙RX管脚,又接CH340 RX管脚的情况,造成程序无法得到想要的数据。
51的P31管脚接10K的上拉电阻到VCC也解决不了驱动能力问题(你有没有试过这种方法?)
你当时怎么解决这个多负载的,硬件上怎么改?谢谢
明天准备把CH340焊掉再看看能否跑成功。这是大手术啊
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
技术高手奖章
人才类勋章
时间类勋章
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
欢快之小溪
发帖类勋章
技术导师奖章
人才类勋章
时间类勋章
社区建设奖章
等级类勋章
技术新星奖章
人才类勋章实现蓝牙HC-05、06与单片机的连接及与手机通信
吴鉴鹰单片机开发板地址
店铺:【吴鉴鹰的小铺】
地址:【/item.htm?_u=ukgdp5a7629&id=】
蓝牙(Bluetooth):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。蓝牙技术最初由电信巨头爱立信公司于1994年创制,当时是作为RS232数据线的替代方案, 蓝牙可连接多个设备,在与单片机连接使用也得到了广泛应用。
1、端口连接
与单片机串口连接时,两者之间 相互可以读写。例如51给HC-05传递数据,即51向HC-05写数据,HC-05从51读取数据,那么串口连接处51的写端P3.1引脚(TXD)就与HC-05读端(RXD)相连,反之蓝牙向51传递数据时,HC-05写端(TXD)T与51的读端P3.0引脚(RXD)相连,所以通常为以下连接方式即可实现数据传送。
注意:只有正确连接读写端才能正常通信。
2、电平选择
一般情况下,蓝牙不能正常工作的原因出在电源这得可能比较小,大多数蓝牙模块电压范围比较大,像HC-05蓝牙模块一般在3.3~6V,单片机电源都在这个范围内。不过不排除部分3.3V蓝牙,所以在连接电源前一定按照技术手册,连接正确电源,并保证正负极不能接反。
3、蓝牙配置
设置决定了蓝牙模块自动连接工作后的角色,主角色(Master)会自动搜索配对连接,从角色(Slave)只被动接受连接,不会主动搜索,回环角色(Loopback),属于被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙主设备。如果两个HC05模块要建立连接,其中一个必须设置为主角色,另外一个可以设置为从角色或回环角色,如果一个HC05模块和电脑蓝牙或者手机蓝牙通信,一般电脑或手机可以主动建立连接,所以HC05可以使用从角色,出厂默认也是设置为从角色的。
在控制电平信号下,可以对蓝牙的一些特性参数进行查询课更改。
AT+XXX? //查询参数XXX
AT+XXX=mmm //设置参数XXX为mmm
例如: 命令: AT+NAME?rn //查询蓝牙名称
返回:+NAME:ChunyuY19 //蓝牙名称为:ChunyuY19
命令: AT+NAME=Xidianrn //设置蓝牙名称为:Xidian
返回: OK //返回提示符:OK
命令: AT+PSWD?rn //查询蓝牙配对密码
返回:+PSWD:1234 //配对密码为:1234
命令: AT+ROLE?rn //查询蓝牙模式
返回:+ROLE:0 //0:从角色,1:主角色,2:回环角色
注意!!每行命令必须以更多AT命令rn结尾,更多的AT指令一般技术手册都会给出,活在网上查询。
5、实现基于STC51单片机的蓝牙与手机通信
首先,给单片机载入串口通信程序,注意!!一般下载程序时单片机与蓝牙断开,避免因蓝牙占用单片机串口导致程序无法烧写。载入程序后,按照上图给出的读写连接方式连接,并给给单片机及HC-05连接合适电源,一般都用单片机板子上电源。手机端需先在浏览器上搜索并下载“蓝牙串口调试助手”。
上电后,蓝牙指示灯一般进入快闪状态,即等待蓝牙连接(从模式),用手机搜索并连接单片机上的蓝牙,配对密码默认为1234。配对成功就可以发送数据给蓝牙,如下图,至此基于STC51单片机的蓝牙与手机通信成功。
因为毕业设计需要用到无线传输,第一次接触蓝牙串口通信,芯片用的HC-05。调试了一天,复制了不少例程,一直无解认为是程序问题。直到看到这篇文章才发现自己引脚就接错了……
一定记住单片机TX接蓝牙RX,单片机RX接蓝牙TX。一定记住单片机TX接蓝牙RX,单片机RX接蓝牙TX。一定记住单片机TX接蓝牙RX,单片机RX接蓝牙TX。重要的事说三次。
附基于STM32的HC-05串口通信框架代码
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_usart.h"
#include "stm32f10x_crc.h"
#include "system_stm32f10x.h"
#include "stdio.h"
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
void RCC_Configuration(void);
void GPIO_Configuration(void);
void USART_Configuration(void);
void delay_ms(u16 time);
void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data);
void UART_PutStr (USART_TypeDef* USARTx, uint8_t *str);
int Putchar(int c);
int main()
SystemInit();
RCC_Configuration();
GPIO_Configuration();
USART_Configuration();
GPIO_SetBits(GPIOB,GPIO_Pin_5);
UART_PutStr(USART1, "hello world!");
delay_ms(1000);
void RCC_Configuration(void)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB,ENABLE);
void GPIO_Configuration(void)
GPIO_InitTypeDef GPIO_InitS
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
void USART_Configuration(void)
USART_InitTypeDef USART_InitS
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_N
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1,&USART_InitStructure);
USART_Cmd(USART1,ENABLE);
void delay_ms(u16 time)
while(time--)
while(i--);
int Putchar(int c)
if (c == 'n'){putchar('r');}
USART_SendData(USART1,c);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){};
void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data)
USART_SendData(USARTx, Data);
while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET){}
void UART_PutStr (USART_TypeDef* USARTx, uint8_t *str)
while (0 != *str)
UART_PutChar(USARTx, *str);
喜欢本文的亲们,欢迎点赞哦
技术源于积累,成功来自执着——单片机精讲吴鉴鹰
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点

我要回帖

更多关于 单片机与手机wifi通信 的文章

 

随机推荐