将文件中的代码改写为计算器按键,并在显示屏上显示
时间: 2024-10-11 11:02:37 浏览: 8
为了将上述代码修改以适应一个基于按键输入工作的简单计算器,并且能够把运算结果显示在一个类似于液晶显示器(如16x2 LCD)上,我们需要做出以下改动:
### 主要改动点
1. **初始化**:保留LCD初始化部分。
2. **按键识别**:现有代码已经实现了基本的矩阵键盘扫描功能,需要进一步定义每个键的功能。
3. **数值处理和显示**:添加逻辑来处理数字和操作符的输入,并将其显示出来。
4. **计算结果**:实现简单的数学运算,并更新显示内容。
### 示例代码片段
下面展示的是如何调整现有的按键读取和数据显示逻辑的一部分示例代码:
#### 按键与数值关联
首先明确矩阵键盘上的每个键代表什么值或操作:
- 假设前10个按钮对应数字0-9。
- 另外几个按钮分别表示加法`+`、减法`-`、乘法`*`、除法`/`以及等号`=`, 清除屏幕`C`等功能。
#### 显示逻辑
使用`ShowString`函数显示当前的输入表达式及结果。
```cpp
...
void ShowString(uchar x,uchar y,uchar *str){
uchar i=0;
if(y==0) Write_LCD_Command(0x80|x);
if(y==1) Write_LCD_Command(0xC0|x);
for(i=0; str[i] && (i < 16); i++){
Write_LCD_Data(str[i]);
}
}
// 更新后的主循环部分
void main() {
...
Initialize_LCD();
uchar expression[17]; // 存储输入表达式的数组
expression[0] = '\0'; // 初始化为空
while(1) {
...
if(P1 != 0xF0) {
DelayMS(10);
if(P1 != 0xF0) {
Lie = log2(~P1>>4)+1;
P1 = 0x0F;
Hang = log2(~P1&0x0F) + 1 ;
Button = Lie + (Hang-1)*4;
// 根据Button执行相应的动作
if(Button <= 10) { // 数字键
strncat(expression, "0" + Button - 1, 1);
} else if(Button == 11) { // +
strcat(expression, "+");
} else if(Button == 12) { // -
strcat(expression, "-");
} else if(Button == 13) { // *
strcat(expression, "*");
} else if(Button == 14) { // /
strcat(expression, "/");
} else if(Button == 15) { // =
// 这里加入计算表达式并显示结果的代码
// 假设calcResult(expression)是计算表达式并返回结果的函数
char resultStr[6];
sprintf(resultStr, "%d", calcResult(expression));
strcpy(expression, resultStr);
} else if(Button == 16) { // C
expression[0] = '\0';
}
// 将表达式显示在LCD的第一行,如果过长则截断
ShowString(0, 0, expression);
while(P1 != 0x0f); // 等待按键释放
}
}
}
}
```
以上仅提供了一个基础框架,具体的细节比如错误处理、复杂的表达式解析等还需要根据实际需求进行补充和完善。
阅读全文