首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将“uint8_t”、“浮动”和“无符号字符”转换为用于液晶显示器的“字符”

将“uint8_t”、“浮动”和“无符号字符”转换为用于液晶显示器的“字符”
EN

Stack Overflow用户
提问于 2020-08-28 18:10:31
回答 2查看 386关注 0票数 0

我正在研制AtMega88PA,它的液晶显示器工作得很好.

我在网上有两种工作方法:

代码语言:javascript
复制
extern void lcd_putc(char c);          // send one 'char' to LCD display e.g. lcd_putc('A')
extern void lcd_puts(const char *s);   // send more chars e.g lcd_puts("something")

而且效果很好。然而,如果我想发送uint8_t液晶显示奇怪的符号-4条水平线。

我尝试使用以下方法来预测这个整数:

代码语言:javascript
复制
lcd_putc((char) integer); 

无论是外部还是内部功能,结果都一样。我还试图将一个数字从BCD转换为Decimal或者其他。这是相同的无符号字符-由于某种原因,当我试图显示无符号字符,同样的字符出现在液晶显示器上。

如何在C中将其他数据类型转换为char?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-12 09:32:13

snprintf()就是答案!

谢谢大家

票数 0
EN

Stack Overflow用户

发布于 2020-08-29 09:54:56

要在AVR控制器上转换unsignedsignedfloatdouble,可以使用以下功能:

无符号2 ASCII

代码语言:javascript
复制
unsigned char data = 100;
char buffer[9];

ultoa(data, buffer, base);

签署2 ASCII

代码语言:javascript
复制
signed char data = -10;
char buffer[9];

ltoa(data, buffer, base);

基地可以是:

  • 2表示二进制
  • 小数为10
  • 16代表十六进制

缓冲区大小必须在数字的宽度内调整(例如,对于无符号字符0-255 (十进制),需要最大4位数)。数字+转义序列'\0')。

双2 ASCII

代码语言:javascript
复制
double data = 3.14;
char buffer[20];

// Normal form:
dtostrf(data, length, precision, buffer);

// Exponential form:
dtostre(data, buffer, precision, DTOSTR_ALWAYS_SIGN | DTOSTR_UPPERCASE);

浮点转换参数:

  • 长度是数字的完整长度(例如,对于3.14是4)
  • 精度定义小数点右侧的长度。

缓冲区大小必须在数字的宽度内调整。

这些函数可以在stdlib.h中找到。有一个实现它们的示例库这里

转换后,您可以简单地调用

代码语言:javascript
复制
lcd_puts(buffer);

也许这会有帮助

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63638934

复制
相关文章

相似问题

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