switch (key3) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: number = number * 10 + (key3 - 0); length++; // 显示当前输入的数字 DisplayNumber(2, 0, number, length); thousands = (number / 1000) % 10; hundreds = (number / 100) % 10; tens = (number / 10) % 10; ones = number % 10; // 在LCD屏上显示千位、百位、十位和个位数字 DisplayNumber(2, 7, thousands, 1); DisplayNumber(2, 8, hundreds, 1); DisplayNumber(2, 9, tens, 1); DisplayNumber(2, 10, ones, 1); int resulet=thousands*1000+hundreds*100+tens*10+ones*1; LCD_displaychar( 3, 0,""); write_dat(resulet%100+0x30); break; }出现乱码
时间: 2024-02-14 12:29:01 浏览: 25
出现乱码的原因可能是因为 LCD 显示的字符编码与你所使用的 `write_dat()` 函数所期望的字符编码不匹配。你可以尝试调整 `write_dat()` 函数的参数或者使用适当的字符编码来解决这个问题。
另外,你在 `switch` 语句中将千位、百位、十位和个位数字显示在 LCD 上,然后计算结果并通过 `write_dat()` 函数显示。但是,在每次迭代中都会执行这些操作,这可能会导致在每次按键时都会显示结果,而不仅仅是在按下特定按键后才显示结果。如果你只想在某个条件满足时显示结果,你可以考虑将计算结果的代码移到相应的条件中。
以下是一个修改后的示例代码:
```c
switch (key3)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
number = number * 10 + (key3 - 0);
length++;
// 显示当前输入的数字
DisplayNumber(2, 0, number, length);
break;
default:
break;
}
// 在特定条件下计算结果并显示
if ((key_Pressed == 1) && ((tmp & 0xf000) != 0xF000))
{
thousands = (number / 1000) % 10;
hundreds = (number / 100) % 10;
tens = (number / 10) % 10;
ones = number % 10;
// 在LCD屏上显示千位、百位、十位和个位数字
DisplayNumber(2, 7, thousands, 1);
DisplayNumber(2, 8, hundreds, 1);
DisplayNumber(2, 9, tens, 1);
DisplayNumber(2, 10, ones, 1);
int result = thousands * 1000 + hundreds * 100 + tens * 10 + ones * 1;
LCD_displaychar(3, 0, ""); // 这里可能需要更改为正确的参数
write_dat(result % 100 + 0x30); // 这里可能需要更改为正确的参数
}
```
请确保根据你的具体情况调整 `LCD_displaychar()` 和 `write_dat()` 函数的参数,以使其正确显示字符。
如果问题仍然存在或你有其他疑问,请随时提问。