int main() { delay_init(); juzhen_Init(); lcd_init(); //LCD12864初 DisplayNumber(1 ,1, keyMap[0],7); int number = 0; int length = 0; while(1) { key3=Check_Key(); 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; case 10: 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; default: for (int i = 0; i < sizeof(keyMap)/sizeof(keyMap[0]); i++) { if (key3 == keyMap[i]) { // 执行其他按键操作的代码 break; } } break; } }
时间: 2024-02-14 15:29:01 浏览: 63
在你的代码中,你已经对 `keyMap` 数组进行了初始化,并且在 `main()` 函数中使用了这个数组。我注意到你在 `DisplayNumber(1 ,1, keyMap[0],7);` 语句中使用了 `keyMap[0]` 来显示数字,但是没有定义 `thousands`、`hundreds`、`tens` 和 `ones` 这些变量。另外,在 `case 10` 中,你使用了这些未定义的变量来计算结果并进行显示。
为了修复这些问题,你需要添加变量的定义,并根据需要进行适当的修改。以下是根据你的代码进行的修改:
```c
int main()
{
delay_init();
juzhen_Init();
lcd_init(); //LCD12864初始化
DisplayNumber(1 ,1, keyMap[0], 7);
int number = 0;
int length = 0;
int thousands, hundreds, tens, ones; // 添加变量的定义
while (1)
{
key3 = Check_Key();
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;
case 10:
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);
break;
default:
for (int i = 0; i < sizeof(keyMap)/sizeof(keyMap[0]); i++)
{
if (key3 == keyMap[i])
{
// 执行其他按键操作的代码
break;
}
}
break;
}
}
}
```
请注意,根据你的需求,我假设 `LCD_displaychar()` 和 `write_dat()` 是用于在LCD屏上显示字符的函数。如果这些函数的实现与你的需求不符,请相应地进行修改。
希望这个修正能满足你的要求。如果你有其他问题或需要进一步帮助,请随时提问。
阅读全文