sprintf函数使用,将数据传为字符串输出,输出可用LCD屏显示或者USART发送

本文介绍了如何在STM32F10x平台上使用LCD显示和串口发送浮点型和整型数据,通过sprintf函数实现数据转换,并强调了数组大小对程序稳定性的影响。

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

 前言:最近老师介绍了一个显示测得数据的方法,觉得十分好用,分享一下

可以运用LCD显示字符串的函数进行显示,也可以用串口发送字符串的函数,这里用串口演示。

1.首先要包含头文件,才可以使用sprintf函数

#include <stdio.h>

 2.定一个字符串数组,用于存储传送的内容;只需定义一个数组,转换存储完之后发送,再转换存储发送,这样子可以节省寄存器。

char Data_Arr[50];
/*特别注意,数组的个数要大于所转换字符串的个数,不然程序马上出问题*/

 3.分别定义两种数据,用于模拟测量到的数据。

float F = 3.1415926;//浮点型
uint16_t D = 128;//整型

 4.调用sprintf函数,以及串口发送字符串的函数;这里注意:浮点型写%f,整型写%d,其中%.2f表示浮点型数据保留两位小数。

sprintf(Data_Arr, "F = %.2f \r\n", F);/*浮点型转为字符串*/
USART_SendString(USART1,Data_Arr);
sprintf(Data_Arr, "D = %d \r\n", D);/*无符号整型转为字符串*/
USART_SendString(USART1,Data_Arr);

5.打开串口,查看接收到的数据

 6.sprintf函数还可以一次性转换两个数据为字符串,最多好像只能两个;注意数据类型对应好就行。

sprintf(Data_Arr, "D = %d and F = %.2f \r\n", D, F);
USART_SendString(USART1,Data_Arr);//串口发送

 运行结果为

 总结:

1.可以将字符+数据拼接起来,显示十分方便;

2.若显示屏需要显示浮点型数据,对于小数点的处理十分友好,大部分的LCD显示函数没有显示浮点型的,这里可通过显示字符串类型的函数进行替代;

3.char Data_Arr[50];定义的数组里面的个数要足够的大,若小于转换的字符个数,程序会死机,

最好留有10-30%的余量,最好开始就直接给一个很大的数!!!!!!!!!!!

下面是全部的代码

#include <stm32f10x.h> 
#include <stdio.h>
#include "usart.h"
#include "lze_lcd.h"
int main(void)
{
    /*初始化*/
	LCD_Init();//显示屏
	MyUsart_Init();//串口
	LCD_Clear(LCD_COLOR_WHITE); //清屏
    /*定义数据*/
	char Data_Arr[50];//用于存放数据和字符串,符号等等
    /*特别注意,数组的个数要大于所转换字符串的个数,不然程序马上出问题*/
	float F = 3.1415926;//浮点型
	uint16_t D = 128;//无符号整型
	while (1)
	{
		/*浮点型转为字符串*/
		sprintf(Data_Arr, "F = %.2f", F);	
		LCD_WriteString	(10, 10, LCD_COLOR_RED, LCD_COLOR_YELLOW, (uint8_t *)Data_Arr);	//LCD显示
		sprintf(Data_Arr, "F = %.2f \r\n", F);
		USART_SendString(USART1,Data_Arr);//串口发送
		/*无符号整型转为字符串*/
		sprintf(Data_Arr, "D = %d", D);	
		LCD_WriteString	(10, 30, LCD_COLOR_RED, LCD_COLOR_YELLOW, (uint8_t *)Data_Arr);	//LCD显示
		sprintf(Data_Arr, "D = %d \r\n", D);
		USART_SendString(USART1,Data_Arr);//串口发送
		/*浮点型+无符号整型一起发送*/
		sprintf(Data_Arr, "D = %d and F = %.2f", D, F);
		LCD_WriteString	(10, 50, LCD_COLOR_RED, LCD_COLOR_YELLOW, (uint8_t *)Data_Arr);	//LCD显示
		sprintf(Data_Arr, "D = %d and F = %.2f \r\n", D, F);
		USART_SendString(USART1,Data_Arr);//串口发送
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值