基于51单片机hc-05,hc-06蓝牙传送数据到手机APP

本文介绍了一种使用51单片机通过蓝牙HC-05模块发送浮点型和整型变量数据的方法。提供了详细的代码示例,包括串口初始化、数据发送及接收处理,适用于手机APP通信场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

       通过蓝牙芯片(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就能将数据打印出来,再通过按键返回值调试参数

                                    

上位机下载:上位机下载icon-default.png?t=N7T8https://download.csdn.net/download/weixin_52763107/88562391

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@fang.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值