使用51单片机和HC-05/HC-06蓝牙模块将数据传输至手机APP

项目场景:

       通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 1s (自己可设定)传输一批传感器数据

     最近在封装一些传感器的程序,在通过蓝牙连接手机调试数据的时候遇到的一点小问题。蓝牙的介绍网上有很多,这里就不说。把51代码丢出来供大家移植。

问题描述

通过蓝牙发送浮点型、整型等变量数据,但是在网上找了很多,大多都是发送单个字符和字符串的。

解决方案:

上代码:

/**************************************************************************************
实验现象:下载程序后打开串口调试助手,将波特率设置为9600,这里是每隔0.5S输出i自加,即从1一直往 
          上加
		  
接线说明: 蓝牙端 TX--单片机端 RX
           蓝牙端 RX--单片机端 TX
		   
注意事项:																				

  
***************************************************************************************/

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include <stdio.h>	
typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char uchar;
sbit KEY=P3^2;

void Delay_ms(unsigned int n)
{
	unsigned int  i,j;
	for(i=0;i<n;i++)
		for(j=0;j<123;j++);
}




/*******************************************************************************
* 函数名         :UsartInit()
* 函数功能		   :设置串口
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/




/*串口初始化配置*/
void UartConfiguration()  
{
    TMOD=0x20;      //设置计数器1的工作方式2
    TH1=0xfd;	    //设置计数器1的初值,决定波特率
    TL1=0xfd;		//设置计数器1的初值,决定波特率
    PCON=0x00;      // 波特率倍增0x00不加倍	 0x80加倍
    SCON=0x50;		//设置工作方式1 开启接受允许
    EA=1;		    //开启总中断
    ES=1;			//开启串口接受中断
    TR1=1;			//计数器1开始运行

}


/*发送数据*/
void sendDate(unsigned char date)
{
    SBUF=date;		  //接收到的数据放入发送缓存器发送
    while(!TI);       //等待发送数据完成
    TI=0;			  //清除发送完成标志位
}
//发送字符串

void  SendString(unsigned char *p)
{
	while(*p)
	{
		sendDate(*p);
		p++;
	}
}



char putchar(char c)
{
	//输出重定向到串口
	sendDate(c);
	return c;  //返回给函数的调用者printf
}


int i=0;
unsigned char zh[3]={0,0,0,};
/*主函数*/
void main()
{   
    UartConfiguration();
	
	Delay_ms(100);
	
     
		while(1)
{	
	
	i++;
	printf("%d",i);
	Delay_ms(500);
}
						
		
}



 
/*中断函数*/
void Uart() interrupt 4
{
    uchar date;
    date=SBUF;        //取出接受到的数据
    RI=0;			  //清除接受中断标志位
 
    //收到的数据是date
	
}

主要就是加入一段输出重定向,像打印到电脑那样直接打印出来

char putchar(char c)
{
    //输出重定向到串口
    sendDate(c);
    return c;  //返回给函数的调用者printf
}

随便找个手机端的SPP串口APP就能将数据打印出来,再通过按键返回值调试参数

                                    

物联沃分享整理
物联沃-IOTWORD物联网 » 使用51单片机和HC-05/HC-06蓝牙模块将数据传输至手机APP

发表评论