LCD ディスプレイに整数を表示しようとしています。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;
//...
}
そのため、LCDに表示しようとすると123456
、実際には が表示されますが-7616
、これは明らかに正しい整数ではありません。
int8_t
文字を signed に変換してからunsigned として出力するため、おそらく問題があることはわかっていuint8_t
ます。しかし、それらを無署名形式で出力する必要があります。int32_t
入力整数を ASCII 文字列に変換する方法がわかりませんuint8_t
。