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)) { int digits[4]; // 数字的每一位 int result = number; // 计算结果 // 将结果的每一位存储到数组中 for (int i = 3; i >= 0; i--) { digits[i] = result % 10; result /= 10; } // 在LCD屏上显示每一位数字 for (int i = 0; i < 4; i++) { DisplayNumber(2, i + 7, digits[i], 1); } LCD_displaychar(3, 0, ""); // 这里可能需要更改为正确的参数 // 在LCD屏上显示结果 write_dat(result % 100 + 0x30); // 这里可能需要更改为正确的参数 }满屏幕显示相同键值如何添加正确地清除和显示内容。
时间: 2024-04-15 08:28:57 浏览: 74
要解决满屏幕显示相同键值的问题,你可以在每次显示之前清除LCD屏上的内容。具体来说,你可以使用适当的清除函数或方法来清除LCD屏上的显示内容。
以下是修改后的代码示例,添加了清除和显示内容的部分:
```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))
{
int digits[4]; // 数字的每一位
int result = number; // 计算结果
// 将结果的每一位存储到数组中
for (int i = 3; i >= 0; i--)
{
digits[i] = result % 10;
result /= 10;
}
// 清除LCD屏上的内容
for (int i = 7; i <= 10; i++)
{
DisplayNumber(2, i, 0, 1);
}
// 在LCD屏上显示每一位数字
for (int i = 0; i < 4; i++)
{
DisplayNumber(2, i + 7, digits[i], 1);
}
LCD_displaychar(3, 0, ""); // 这里可能需要更改为正确的参数
// 在LCD屏上显示结果
write_dat(result % 100 + 0x30); // 这里可能需要更改为正确的参数
}
```
在这个修改后的代码中,我添加了一个循环来清除LCD屏上的内容,然后再在适当的位置重新显示内容。请根据你的具体情况调整 `DisplayNumber()`、`LCD_displaychar()` 和 `write_dat()` 函数的参数,以使其正确地清除和显示内容。
希望这个修改能够解决你的问题。如果你还有其他问题或需要进一步帮助,请随时提问。
阅读全文