STM32笔记:关于sprintf在OLED显示中的应用

sprintf格式化输出函数

sprintf(char*string,char *format,arg_list);

在OLED显示上的应用:

void OLED_ShowFNum(unsigned x,unsigned y,float Fnum,unsigned char TextSize)
{
    //创建目标数组,用来存放转换后的字符数据
	uint8_t Data[100]= " "; 
    //保留小数点后3位小数,打印到Data数组中
    sprintf((char *)Data,"%.3f",Fnum);
    //调用OLED字符串显示函数,在OLED屏上显示
	OLED_ShowStr(x,y,Data,TextSize);
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F407单片机读写OneWire_DHT11温湿度传感器(串口屏显示)软件工程源码,可以做为你的学习设计参考。 int main(void) { /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口断优先级 */ MX_DEBUG_USART_Init(); HMI_USARTx_Init(); DHT11_Init(); /* 无限循环 */ while (1) { /*调用DHT11_Read_TempAndHumidity读取温湿度,若成功则输出该信息*/ if(DHT11_Read_TempAndHumidity(&DHT11_Data)==SUCCESS) { HMI_value_setting("page1.gross.val",DHT11_Data.humidity*10); HMI_value_setting("page1.net.val",DHT11_Data.temperature*10); printf("读取DHT11成功!-->湿度为%.1f %RH ,温度为 %.1f℃ \n",DHT11_Data.humidity,DHT11_Data.temperature); } else { printf("读取DHT11信息失败\n"); } HAL_Delay(1000); } } /** * 函数功能: 向串口屏发送数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_value_setting(const char *val_str,uint32_t value) { uint8_t tmp_str[30]={0}; uint8_t i; sprintf((char *)tmp_str,"%s=%d",val_str,value); for(i=0;iDR=tmp_str[i]; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } /** * 函数功能: 向串口屏发送浮点数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_string_setting(const char *val_str,int32_t value) { uint8_t tmp_str[50]={0}; uint8_t i; float temp=(float)value; sprintf((char *)tmp_str,"%s=\"%.1f\"",val_str,temp/100); for(i=0;iDR=tmp_str[i]; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } HMI_USARTx->DR=0xFF;
### 回答1: 在使用STM32实现将年月日显示OLED屏幕上的过程,需要考虑以下几个方面。 1. 硬件连接 首先,需要将OLED屏幕与STM32单片机进行连接。根据不同的OLED屏幕型号,连接方式可能会有所不同。但通常需要接线的引脚包括SCL(时钟线)、SDA(数据线)、VCC(电源正极)、GND(电源负极),有些型号还可能需要RES(复位线)和DC(数据/命令选择线)等。 2. 代码编写 接着,需要编写代码实现将年月日显示OLED屏幕上。通常情况下,需要使用I2C通信协议与OLED屏幕进行通讯,并在代码调用相应的OLED屏幕驱动程序。同时,需要获取当前的年月日信息,可以使用RTC(实时钟)模块来获取系统时间信息。 3. 软件调试 在完成代码编写后,需要将代码烧录到STM32单片机并进行软件调试。可以使用调试工具如Keil uVision等,通过单步调试等方式逐步排除可能存在的问题,确保程序正常运行。 对于初学者来说,实现这样一个功能可能会面临一些困难。建议可以通过资料查找、向论坛提问等方式获取必要的帮助与指导。 ### 回答2: 要在OLED屏幕上显示年月日,首先需要使用STM32控制器来读取实时时钟(RTC)的数据。RTC是芯片上一个特殊的时钟模块,它可以独立于主芯片运行,并且在掉电后可以保持时间的计数器。 在STM32控制器上设置RTC需要进行一些配置,可以使用专门的库函数来操作寄存器。设置完RTC后,可以通过读取RTC的寄存器来获取当前的日期和时间。 接下来是将日期和时间显示OLED屏幕上。OLED屏幕可以通过串行外设接口(SPI)连接到STM32控制器上。使用OLED库函数来配置OLED屏幕,然后将日期和时间转换为字符串,并将它们显示OLED屏幕上。 例如,在使用STM32OLED屏幕显示当前日期和时间的程序,可以按以下步骤操作: 1. 配置RTC,并读取当前日期和时间。 2. 使用OLED库函数初始化OLED屏幕。 3. 创建一个字符串数组以存储日期和时间的文本。 4. 将日期和时间转换为字符串,并将其存储在文本字符串数组。 5. 使用OLED库函数在OLED屏幕上显示日期和时间文本字符串。 通过这些步骤,就可以在OLED屏幕上显示当前的年月日了。此外,可以进一步将程序优化为实现闹钟功能,让STM32控制器可以自动响应任意设定的日期和时间,实现更丰富的控制功能。 ### 回答3: 首先,需要在STM32控制器配置I2C总线,并将其连接到OLED显示器。然后,在程序引入相关库文件,例如stm32f10x_i2c.h和stm32f10x_gpio.h等库。 其次,需要定义变量以存储当前的年、月、日。可以使用RTC实现从实时时钟获取日期和时间信息。需要在程序初始化RTC,设置时间和日期,并从RTC读取当前日期。 然后,需要在程序编写将日期数据转换为字符串并在OLED显示屏上显示的代码。可以使用sprintf函数将日期数据转换为格式化后的字符串。字符串可以在OLED显示屏上显示,需要使用OLED显示屏的库函数,并通过I2C总线传输数据。 最后,需要将程序下载到STM32控制器,并使用连接到I2C总线的OLED显示器进行测试。在OLED屏幕上应该能够显示当前的年月日信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值