搜索不到蓝牙的一般原因及处理方法:一,一般都会认为打开蓝牙 之后,手机就能搜索到蓝牙,并且成功与之连接,其实这是错误的。若要手机搜索到蓝牙,蓝牙就必须进入一个特殊 的状态:配对状态。二,具体 *** 作步骤:1、确认蓝牙处于关机状态 :长按多功能键2-3秒 ,蓝牙指示红灯快速闪烁3次左右,即关闭蓝牙。2、蓝牙进入配对状态:长按多功 能键7-8秒,蓝牙进入配对状 态,表现为指示 灯红蓝两 种颜色交替快 速闪烁或者是指示灯常亮。三,蓝牙成功进入配对状态后,接下 来进入手机的 *** 作:1、打开手机的蓝牙功能,搜索蓝牙的型号。2、手机与蓝牙连接,如果提示输入pin码,一般为0000或1234。3、配对成功。这时就可以用蓝牙接听、打电话了,如果 蓝牙支持A2DP协议,还可以用来听音乐。
接收蓝牙模块的数据;根据这个需求就定性了;服务器===>蓝牙模块; 客户端===>手机app;
如果是经典蓝牙: 1、建立蓝牙连接 2创建bluetoothSocket 开启线程接收模块返回的信息
如果是ble 根据API 文档在相关回调中处理服务器返回的信息。
/
程序名称:hc595c
程序功能:595的应用文件
程序作者:吴鉴鹰
创建时间:2014-3-10
修改时间:
程序版本:V01
/
/
包含头文件
/
#include "inc/hc595h"
#include "reg51h"
/
定义引脚
/
/ 时钟信号线引脚定义 /
sbit HC595CLK = P0^5;
/ 片选信号线引脚定义 /
sbit HC595RCK = P0^6;
/ 数据输入引脚定义 /
sbit HC595DATA = P0^7;
/
函数名称:SendData
函数功能:74HC595数据的发送
入口参数:unsigned int uiDataOne, unsigned int uiDataTwo
出口参数:void
/
void SendData(unsigned int uiDataOne, unsigned int uiDataTwo)
{
unsigned int i = 0;
/ 将片选信号置为低电平 /
HC595RCK = 0;
/ 输入第一个数据:uiDataOne /
for (i = 0; i < 8; i++)
{
/ 给出脉冲信号,首先将CLK置为0 /
HC595CLK = 0;
if (0 != (uiDataOne & 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/ 给出脉冲信号,首先将CLK置为1 /
HC595CLK = 1;
/ 准备第二个数据 /
uiDataOne = uiDataOne << 1;
}
/ 输入第二个数据:uiDataTwo /
for (i = 0; i < 8; i++)
{
/ 给出脉冲信号,首先将CLK置为0 /
HC595CLK = 0;
if (0 != (uiDataTwo & 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/ 给出脉冲信号,首先将CLK置为1 /
HC595CLK = 1;
/ 准备第二个数据 /
uiDataTwo = uiDataTwo << 1;
}
/ 将片选信号置为高电平 /
HC595RCK = 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; //停
}
}
}
先这样试试,有问题继续追问。
以上就是关于BT04蓝牙与手机通信程序控制LED灯闪烁为何不行,不知道哪里有问题,求助各位大神!!全部的内容,包括:BT04蓝牙与手机通信程序控制LED灯闪烁为何不行,不知道哪里有问题,求助各位大神!!、用Android studio 制作一个能接收蓝牙模块数据的app,客户端和服务器端的程序都写在Android studio里面吗、手机怎么通过蓝牙串口模块hc05控制单片机的一个LED发光吗具体怎么 *** 作。。。需要写先下载什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)