单片机接收手机蓝牙传出的数据程序出现问题,求解答!蓝牙模块是HC-06从机,这有这些财富值了

单片机接收手机蓝牙传出的数据程序出现问题,求解答!蓝牙模块是HC-06从机,这有这些财富值了,第1张

有3个明显的问题:

1,你的程序已经开放了串口中断EA=1;ES = 1,为什么还用查询的方式读取串口数据?这样,蓝牙模块向单片机发送数据,单片机的程序就会发生中断,你的程序没有对中断进行任何处理,怎能不出错呢!

2, init();

while(1)

{ ;这里不应该有这个分号

3,你用uint定义了ma,mb,mc,然后ma = SBUF;switch(ma),从串口接收的是字符类型数据,而你定义的uint类型的ma是错误的,而应该是uchar ma。

你的程序这样修改后试试:

#include<STC12C5A60S2h>

//#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

uchar ma;//这样修改

uint mb,mc;

sbit led1 = P0^0 ;//1

sbit led2 = P0^1 ;//2

sbit led3 = P0^2 ;//3

sbit led4 = P0^3 ;//4

sbit led5 = P0^4 ;//5

sbit led6 = P0^5 ;//6

sbit led7 = P0^6 ;//7

sbit led8 = P0^7 ;//8

void init()

{

TMOD=0x20;//设置定时器1为工作方式2

SCON=0x50;

TH1=0xfd;

TL1=0xfd;

TR1=1;

EA=0;//关闭全局中断

ES=0;//关闭串口中断

}

void main()

{

init();

while(1)

{ //去掉这里的分号

while(RI==0);

RI=0;

ma=SBUF;

switch(ma)

{

case '1':led1=0;break; //1

case '2':led2=0;break; //2

case '3':led3=0;break; //3

case '4':led4=0;break; //4

case '5':led5=0;break; //5

case '6':led6=0;break; //6

case '7':led7=0;break; //7

case '8':led8=0;break; //8

case 'a':led1=1;break; //停

case 'b':led2=1;break; //停

case 'c':led3=1;break; //停

case 'd':led4=1;break; //停

case 'e':led5=1;break; //停

case 'f':led6=1;break; //停

case 'g':led7=1;break; //停

case 'h':led8=1;break; //停

}

}

}

先这样试试,有问题继续追问。

手机蓝牙与单片机的通信实现方式如下:

1,使用蓝牙转串口模块连接51单片机的RX和TX引脚,这一步实现源端数据转换;单片机在串口中断服务函数里面读取蓝牙模块的指令;

2,手机内部进行APP的程序设计,调用蓝牙模块并读取数据,同时通过APP往蓝牙模块发送数据给单片机。

电路图如下:

51单片机上的蓝牙模块编程方法如下:

常用的方法有:

1通过通过电脑上的蓝牙设备给单片机上的蓝牙设备,给单片机指令起到控制作用。

2通过串口232或485或直接串口通讯链接到单片机的串口通讯引脚给单片机指令从而达到控制单片机。

3通过电脑上的wifi给单片机上的wifi指令不过这样麻烦。

第一种方法最好把,不过电脑上要有蓝牙设备或外界usb的蓝牙。

第二种方法是有线的,可以通过电脑上的232接口直接跟单片机通讯。

蓝牙通讯单片机需要蓝牙模块软件。

上位机,java开发,主要的蓝牙也有函数,在UI加按键或者是显示的东西,开启子线程,在子线程里面执行发送或者是接受数据,网上也有实例代码,改改就行了,不过关键还是你要能看得懂,否则就没什么用。

应用:

替代串口线:我用2个BF10-A蓝牙模块,一个作为主模块+MAX3232(TTL转RS232电平芯片),一个作为从模块+MAX3232(TTL转RS232电平芯片),设置对应好的波特率。两个模块通过DB9接口分别连接到PC机。

两台PC机电脑之间可以通过串口调试工具进行数据传输。和已有的蓝牙适配器形成蓝牙串口连接:我采用一个蓝牙适配器连接电脑,使用IVT蓝牙驱动,一个蓝牙模块BF10-A做为从模块连接到我的单片机嵌入式系统。

使用BF10-A,IVT蓝牙驱动软件查找到BF10-A蓝牙模块、连接并创建串口复位。此时则可以通过串口工具和单片机进行串口通信。

以上就是关于单片机接收手机蓝牙传出的数据程序出现问题,求解答!蓝牙模块是HC-06从机,这有这些财富值了全部的内容,包括:单片机接收手机蓝牙传出的数据程序出现问题,求解答!蓝牙模块是HC-06从机,这有这些财富值了、手机蓝牙与单片机的通信如何实现、一个51单片机如图,有两个蓝牙模块,怎么连接单片机和蓝牙并进行工作呢求连接与代码。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9319543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存