#include<reg52h> //串口通信打印与数码管
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6; //申明锁存器1
sbit wela=P2^7; //申明锁存器
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //定义数码管段选
uchar flag; //标志位
uchar a,b,e,f,g,h;
void delay(uint x) //毫秒级延时
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar e,uchar f) //数码管显示函数
{
wela=1; //位选
P0=0xfe;
wela=0;
P0=0xff; //消影
dula=1; //段选
P0=table[e];
dula=0;
delay(1);
wela=1; //位选
P0=0xfd;
wela=0;
P0=0xff; //消影
dula=1; //段选
P0=table[f];
dula=0;
delay(1);
}
void init()
{
TMOD=0X21; //T1定时器工作方式2 T0定时器工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //装初值
TH1=0XFD;
TL1=0XFD; //定波特率为9600
SCON=0X50;
PCON=0X00;
ET0=1;
TR1=1;
EA=1;
ES=1;
}
void main()
{
init();
while(1)
{
display(e,f);
if(flag==1)
{
ES=0; //关中断
SBUF=a;
while(!TI);
TI=0;
if(a==1)
{
TR0=1; //开中断
}
if(a==2)
{
TR0=0;
}
ES=1;
flag=0;
}
}
}
void T() interrupt 1
{
TH0=(65536-50000)/256; //重装初值
TL0=(65536-50000)%256;
g++;
if(g==20)
{
h++;
b=h;
SBUF=b;
while(!TI);
TI=0;
g=0;
f=h%10;
e=h/10;
}
if(h==99)
h=0;
}
void Th() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
打开 蓝牙 打开 发现 (一般安卓蓝牙都要打开发现 除非之前配对过)
或许有些机子会不能接收或发送特殊格式“如:apk格式”
你可以在后面加"MP3" 变成 MP3格式
这样就能发送了
收到之后把名字"MP3"去掉这样会变回之前的apk格式就能安装了
首先是蓝牙通信,我想指出,如果你用的是蓝牙模块的话,那么它的单片机程序与串口的单片机程序差不多一样,只要你会串口 *** 作,蓝牙也就解决了,如果不是用的蓝牙模块,另当别论。
然后是接受端手机这边,你应该懂一些java东西,知道怎么调用底层程序,编写读取串口程序,根据发送的协议,把接受的数据转化为十进制就可以了
扩展资料
单片机采用51系列单片机用C51语言编写,通过sprintf构造JSON格式文件通过蓝牙串口模块发送到安卓手机,简要代码如下:
sprintf(msg,"{\"RR\":\"%02x\"}\0",(unsigned int )RRtemp);
Serial_print(msg);
这里涉及到Serial_print()函数如下:
void Serial_print(char msg)
{
while (msg != '\0') {
S2BUF = msg;
while ((S2CON & S2TI) == 0);
S2CON &= ~S2TI;
msg++;
}
}
1、第一步是搜索app发明者网络中的数据库服务,然后可以看到官方网站的描述,可以保存数据,也可以读取数据。下一步是实现这两个功能。
2、然后需要创建一个界面来完成保存和阅读的基本功能。可以使用简单的标签,按钮,对话框,然后使用界面布局进行组装。切记不要忘记添加Web微数据库。
3、然后将网络微数据库的地址设置为该地址,然后将其保存在网络微数据库中。保存顺序不应颠倒,将无法读取所需的数据。
4、将数据保存到Web,或者当Web服务失败时,会出现一个对话框提醒我们。
5、最后一件事是在阅读时阅读标签问题。保存数据时,应选择标签名称更长且更独特,以便其他人不会覆盖数据。
//创建一个串口通讯
SerialPort CurrentPort = null;
CurrentPort = new SerialPort();
CurrentPortReadBufferSize = 128;
CurrentPortPortName = comName; //端口号
CurrentPortBaudRate = bandRate; //比特率
CurrentPortParity =parity;//奇偶校验
CurrentPortStopBits = stop;//停止位
CurrentPortDataBits = databit;//数据位
CurrentPortReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常
//绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理
CurrentPortDataReceived += Sp_DataReceived;
CurrentPortOpen();
定义一个变量 byte[] receiveStr;
//绑定的事件处理函数
private static void Sp_DataReceived(object sender, SystemIOPortsSerialDataReceivedEventArgs e)
{
SerialPort sp = sender as SerialPort;
if (sp == null)
return;
byte[] readBuffer = new byte[spReadBufferSize];
spRead(readBuffer, 0, readBufferLength);
//赋值
receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串。
}
//你要求的按钮事件可以这么写
private void button1_Click(object sender, EventArgs e)
{
if(receiveStr!=null)
{
变量 xxx=receiveStr;
}
}
以上就是关于51单片机通过P3.0从蓝牙模块接受数据的C语言程序全部的内容,包括:51单片机通过P3.0从蓝牙模块接受数据的C语言程序、安卓蓝牙怎么发送与接收数据、关于单片机通过蓝牙将数据传输给手机,并在app上面显示出来怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)