仔细看看手册 |
个人感觉在终端程序中,接收部分是不是应该加while(!RI) |
308 发表于 2018-4-23 11:12 你好!我最后一步出了问题,没有连接蓝牙模块时,单片机和pc能正常通信,接上蓝牙模块后,手机发送命令单片机没反应。是不是蓝牙模块与单片机连接有问题?感觉手机发送的数据没有被单片机接收啊, 蓝牙模块与pc能正常通信。 |
问题0010:蓝牙串口模块使用的正确步骤 很多人现在都开始使用蓝口模块,利用手机蓝牙或者PC蓝牙进行控制单片机系统。但是很多人一上来就直接把蓝牙模块和单片机相连接,然后编写程序,效果实现不了,就不知该如何了。蓝牙模块很多都是结合了串口通信的,通常拿到模块,需要经过一下步骤(自己总结,可做参考): (1)首先,需要蓝牙模块和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的蓝牙进行控制,还需要购买蓝牙适配器,也就是模块发送信息到电脑时,需要一个接收器。如果不是很必要,就用手机蓝牙软件就好了,省钱省事 |
好好看看手册。 |
这个链接我尝试过,没有问题。再有建议终端程序中增加关闭终端语句,在中断结束后再开启 |
个人感觉在终端程序中,接收部分是不是应该加while(!RI) |
蓝牙发送数据有两种数据形式,16进制发送或字符发送,而字符发送需要在SBUF后面减去48! |
这是代码,哪错了?#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit ji=P2^1;uint flag;uchar rx;void delay(uint z){uint x,y;for(x=100;x>0;x--)for(y=z;y>0;y--);}void init(){SCON=0x50;TMOD=0x20;PCON=0x00;TH1=0xfd;TL1=0xfd;EA=1;ES=1;//REN=1;TR1=1;}void main(){init();while(1) { if(flag==0) { ji=1;} delay(1000); if(flag==1) { ji=0; delay(1000); } }}void exter0() interrupt 1{RI=0;rx=SBUF;switch(rx) { case'a':flag=0; break; case'b':flag=1; break; default: break; }} |