
上位机,安卓app开发用eclipse或者是android studio,蓝牙有相关的函数,,连接,断开,接受,网上大部分代码套着用就行了,,如果需要修改也修改的不多,,主ui界面的时候,不能有进程的占用和其他的一些的线程的 *** 作,所以就得到子线程里面去执行了,还是先学学基础吧,之后再看这些的话,就容易的多了
#include<reg52h>//声明头文件
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
sbit deng=P2^0;//定义车灯的控制引脚
sbit z=P2^1;//定义左转向灯的控制引脚
sbit y=P2^2;//定义右转向灯的引脚
sbit BEEP=P2^3;//定义蜂鸣器的引脚
sbit zuo1=P0^0;//定义控制左边电机的单片机引脚
sbit zuo2=P0^1;//定义控制左边电机的单片机引脚
sbit you1=P0^2;//定义控制右边电机的单片机引脚
sbit you2=P0^3;//定义控制右边电机的单片机引脚
uchar a=0;//定义一个变量a,用来读取串口的数据
void delay(uint z)//一个带参数的延时程序
{
int i,j;//定义两个变量
for(i=10;i>0;i--)
for(j=z;j>0;j--);//将参数z赋值给j
}
void init()//初始化子程序
{
TMOD=0x20; //设置定时器T1为工作方式2
TH1=0xfd;
TL1=0xfd; //T1定时器装初值
TR1=1; //启动定时器T1
REN=1; //允许串口接收
SM0=0;
SM1=1; //设置串口工作方式1
EA=1; //开总中断
ES=1; //开串口中断
}
void go()//前进子程序
{
zuo1=0;
zuo2=1;//左边轮子正转
delay(25);//pwm有用值,越大左边方向的轮子越快
zuo1=1;//关闭左边轮子
you1=0;
you2=1; //右边轮子正转
delay(24);//pwm有用值,越大右边的轮子越快
you1=1;//关闭右边轮子
delay(100);//pwm无用值,越大,小车跑的越慢
z=1;
y=1;//关闭转向灯
}
void hui()//小车后退的子程序
{
zuo1=1;
zuo2=0;//左边轮子倒转
delay(25);//pwm有用值,越大左边方向的轮子越快
zuo2=1;//关闭左边轮子
you1=1;
you2=0; //右边轮子倒转
delay(24);//pwm有用值,越大右边的轮子越快
you2=1;//关闭右边轮子
delay(100);//pwm无用值,越大,小车跑的越慢
z=1;
y=1;//关闭转向灯
}
void turnleft()//小车左转弯子程序
{
zuo1=1;
zuo2=1;//左边轮子停止转动
you1=0;
you2=1; //右边轮子正转
delay(24);//pwm有用值,越大右边的轮子越快
you1=1;//右边轮子停止
delay(100);//pwm无用值,越大,小车跑的越慢
z=1;
y=1;//关闭转向灯
z=~z;//左转向灯打开
}
void turnright()//小车右转弯子程序
{
zuo1=0;
zuo2=1;//左边轮子正转
delay(25);//pwm有用值,越大左边方向的轮子越快
zuo1=1;//左边轮子停止
you1=1;
you2=1; //右边轮子停止
delay(100);//pwm无用值,越大,小车跑的越慢
z=1;
y=1;//关闭转向灯
y=~y;//右转向灯打开
}
void down()//停止子程序
{
zuo1=1;
zuo2=1;
you1=1;
you2=1; //左右轮全部停止
z=1;
y=1;//关闭转向灯
}
void onbeep()//蜂鸣器鸣响子程序
{
BEEP=0;
}
void offbeep()//蜂鸣器鸣响子程序
{
BEEP=1;
}
void main()//主程序
{
init();//调用初始化子程序
while(1)//死循环
{
switch(a)//判断a从串口读取到的数据
{
case 0x1f://如果是0x1f就前进
go();
break;
case 0x2f://如果是0x2f就后退
hui();
break;
case 0x3f://如果是0x3f就左转
turnleft();
break;
case 0x4f://如果是0x4f就右转
turnright();
break;
case 0x00://如果是0x00就停止
down();
break;
case 0xa0://如果是0xa0车灯打开
deng=0;
break;
case 0xb0://如果是0xb0车灯关闭
deng=1;
break;
case 0xc0://如果是0xc0蜂鸣器鸣响
onbeep();
break;
case 0xd0://如果是0xc0蜂鸣器鸣响
offbeep();
break;
}
}
}
void chuan() interrupt 4//串口中断服务程序
{
RI=0;//软件清除串口响应
a=SBUF;//读取单片机串口接受的蓝牙模块发送的数据
}
分两种情况,蓝牙模块是做主模式,则需要考虑设备类型码。比如用蓝牙模块BF10,则需要设置设备类型码,自动连接手机,手机蓝牙这边有个小软件。 配对,建立连接之后会形成一个虚拟com口,打开对应com口就能全双工数据通信了。
如果蓝牙模块BF10作为从模块,就更简单,手机找到BF10,建立连接,之后会形成一个虚拟com口,打开对应com口就能全双工数据通信了。
1)单片机与蓝牙模块连接调试好,通常都是通过串口连接;
2)单片机通过蓝牙模块与手机的握手连接及数据传输调试好;
3)单片机如果RAM的容量足够,可以不需要外扩内存,否则就需要外扩内存,以保存更多数据;
蓝牙技术的数据传输以智能医疗为例;现阶段的健康医疗设备通常是可穿戴产品或其它小型物品,以蓝牙技术为基础,比如内置BLE蓝牙模块的体温计,心率计,血糖血压计,温度计,电子秤等,心率计中的心率传感器实时采集心率信息,将采集到的心率数据传输给蓝牙模块SKB378的主控MCU,由MCU计算得到心率值,一方面可以把心率值通过对应接口显示到LED屏上;另一方面也可以把心率数据通过BLE蓝牙模块透传至手机APP,手机APP负责接收和分析接收到的心率数据,从而实现在手机端实时监控心率的数值。各项生理数据的采集和大量数据汇总,便于建立医疗健康大数据,为诊治做出更好的指导。
以SKB360 BLE 蓝牙模块为例说明:首先你的手机需要安装APP,而且APP需要支持BLE这个服务的特征值,之后再打开手机里的蓝牙,然后点击APP里的连接,这样你就可以发数据给蓝牙模块了。
由于没有提供具体的芯片型号和电路,只能从信号传输的角度简单聊一下,欢迎追问,如果有错误请指出。
一般的蓝牙传输模块,比如MS47FS3,其实内部是有一个arm核心的,单片机和蓝牙模块之间的通讯可以看成两个mcu之间的通讯。通讯的过程要考虑的问题主要有两个,一个是通讯信号的质量问题,一个是通讯信号能否被识别,也就是通讯协议的问题。
首先,对于通讯信号的质量,简单的说是我们会期望我发出的高电平在接收时仍然是高电平,这时候我们会期望接收端的输入阻抗尽可能的大。为了实现这一要求,通常会在接收端前加入驱动电路。这个电路可以是简单的运放电路,可以是专用的收发芯片;但这对于简单的实验,这一点可能不是必须的。
通讯协议可能更加重要。首先,接收端和发送端应该是同样的通讯方式,比如其他回答中提到SPI(串行)或者并行。同样的通讯方式,对于电平的识别方式是否一致,比如232和485,就是普通的串行和差分的串行,就无法相互识别。
至于指令集的问题,我感觉只是你的通讯能够顺利建立之后,因为蓝牙模块本质也是一个arm芯片,如果你只给他通讯一个数据,他其实不知道要进行什么 *** 作。这时候需要你通过指令集来告诉他,接收到这个数据之后,你希望他执行什么样的动作。
以上就是关于求教如何制作一个安卓手机蓝牙制作的app程序,用于和单片机上的蓝牙模块,实现数据的传送全部的内容,包括:求教如何制作一个安卓手机蓝牙制作的app程序,用于和单片机上的蓝牙模块,实现数据的传送、求蓝牙模块hc-05、stc89c52 小车c程序、手机蓝牙怎么传数据到蓝牙模块等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)