我正在尝试在 LCD 显示器上显示一个整数。液晶显示器的工作方式是向它发送一个 8 位 ASCII 字符并显示字符。
我到目前为止的代码是:
unsigned char text[17] = "ABCDEFGHIJKLMNOP";
int32_t n = 123456;
lcd.printInteger(text, n);
//-----------------------------------------
void LCD::printInteger(unsigned char headLine[17], int32_t number)
{
//......
int8_t str[17];
itoa(number,(char*)str,10);
for(int i = 0; i < 16; i++)
{
if(str[i] == 0x0)
break;
this->sendCharacter(str[i]);
_delay_ms(2);
}
}
void LCD::sendCharacter(uint8_t character)
{
//....
*this->cOutputPort = character;
//...
}
因此,如果我尝试123456
在 LCD 上显示,它实际上会显示-7616
,这显然不是正确的整数。
我知道可能存在问题,因为我将字符转换为有符号int8_t
,然后将它们输出为无符号uint8_t
。但我必须以无符号格式输出它们。我不知道如何将int32_t
输入整数转换为 ASCII uint8_t
-String。