首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在LCD1602中使用STM32显示ADC值

在LCD1602中使用STM32显示ADC值
EN

Stack Overflow用户
提问于 2022-08-20 08:26:23
回答 1查看 154关注 0票数 0

我正在做一个需要在LCD屏幕上显示ADC值的项目。我对编码不太了解,因为我是STM32IDE新手。本质上,我使用的是(0-25V)电压传感器和STM32F103C8T6 (蓝色药丸)。我必须使用LCD来显示值。有没有人对此有任何洞察力,或者知道如何帮助我?

代码语言:javascript
复制
  HAL_ADC_Start(&hadc1);
  HD44780_Init(2);
    HD44780_Clear();
    HD44780_SetCursor(0,0);
    HD44780_PrintStr("Vol = ");


 while (1)
  {
      HAL_ADC_PollForConversion(&hadc1,1000);
          readValue = HAL_ADC_GetValue(&hadc1);
          voltage =(float)readValue/4095*16.5;
          HAL_Delay(100);
    
  }
EN

回答 1

Stack Overflow用户

发布于 2022-08-20 11:58:39

如果HD44780_PrintStr()打印一个字符串,则必须生成floatvoltage的字符串表示形式。

然后,需要将游标设置为前缀字符串的末尾(第6列),并打印字符串表示形式。输出末尾的尾随空格将擦除以前任何较长的输出中的数字。

假设HD44780_SetCursor()的参数顺序为row, column

代码语言:javascript
复制
for(;;)
{
    HAL_ADC_PollForConversion(&hadc1,1000);
    readValue = HAL_ADC_GetValue(&hadc1);
    voltage =(float)readValue/4095*16.5 ;

    char vstr[16] ;
    sprintf( vstr, "%.2f    ", voltage ) ;
    HD44780_SetCursor(0,6);
    HD44780_PrintStr( vstr ) ;

    HAL_Delay(100);
}

如果需要整数部分中的前导零(固定的2位宽度),则要复杂一些:

代码语言:javascript
复制
unsigned wholev = (int)voltage ;
unsigned fractv = (int)((voltage - wholev) * 100.0f + 0.5f) ;

char vstr[16] ;
sprintf( vstr, "%02u.%02u", wholev, fractv ) ;
HD44780_SetCursor(0,6);
HD44780_PrintStr( vstr ) ;

但在这种情况下,您不需要使用尾随空格来删除前面的数字,因为字符串始终是固定宽度的"xx.yy"。如果可以从sprintf格式化程序中省略浮点支持,代码也可能变得更小。

除了浮点格式化程序添加了大量代码并可能增加堆栈使用量之外,请记住,您的MCU缺乏硬件浮点支持,因此浮点操作既会增加代码,又会非常慢。在简单的应用程序中,这可能并不重要,但通常您应该避免(并知道如何避免)嵌入式代码中的浮点操作,特别是如果没有FPU --即使有FPU,也有理由避免使用这种简单的操作,比如在任何情况下。

浮点代码可以简单地删除如下:

代码语言:javascript
复制
unsigned millivolts = readValue * 16500u / 4095u ;
unsigned wholev = millivolts / 1000u  ;
unsigned fractv = ((millivolts + 5u) % 1000) / 10u ;

sprintf( vstr, "%02u.%02u", wholev, fractv ) ;
HD44780_SetCursor(0,6);
HD44780_PrintStr( vstr ) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73425178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档