我正在研制AtMega88PA,它的液晶显示器工作得很好.
我在网上有两种工作方法:
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条水平线。
我尝试使用以下方法来预测这个整数:
lcd_putc((char) integer); 无论是外部还是内部功能,结果都一样。我还试图将一个数字从BCD转换为Decimal或者其他。这是相同的无符号字符-由于某种原因,当我试图显示无符号字符,同样的字符出现在液晶显示器上。
如何在C中将其他数据类型转换为char?
发布于 2020-09-12 09:32:13
snprintf()就是答案!
谢谢大家
发布于 2020-08-29 09:54:56
要在AVR控制器上转换unsigned、signed、float和double,可以使用以下功能:
无符号2 ASCII
unsigned char data = 100;
char buffer[9];
ultoa(data, buffer, base);签署2 ASCII
signed char data = -10;
char buffer[9];
ltoa(data, buffer, base);基地可以是:
缓冲区大小必须在数字的宽度内调整(例如,对于无符号字符0-255 (十进制),需要最大4位数)。数字+转义序列'\0')。
双2 ASCII
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);浮点转换参数:
缓冲区大小必须在数字的宽度内调整。
这些函数可以在
stdlib.h中找到。有一个实现它们的示例库这里。
转换后,您可以简单地调用
lcd_puts(buffer);也许这会有帮助
https://stackoverflow.com/questions/63638934
复制相似问题