基于51单片机,写一个简易计算器代码,要求实现1位数的四则运算功能
时间: 2024-02-29 22:56:14 浏览: 28
好的,以下是基于51单片机的简易计算器代码,可以实现1位数的四则运算功能。
```
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar op; //运算符
uchar num1; //操作数1
uchar num2; //操作数2
uchar result; //结果
void delay(uint x) //延时函数
{
uint i, j;
for(i = x; i > 0; i--)
for(j = 110; j > 0; j--);
}
void init() //初始化函数
{
P1 = 0x00; //清零
P2 = 0x00; //清零
P3 = 0xFF; //设置P3口为输入口
}
void main()
{
init(); //初始化
while(1)
{
if(P3 != 0xFF) //如果有按键按下
{
delay(10); //延时去抖
if(P3 != 0xFF) //再次检测按键是否按下
{
switch(P3) //判断按下的是哪个键
{
case 0xFE: //按下1键
num1 = 1;
P1 = num1;
break;
case 0xFD: //按下2键
num1 = 2;
P1 = num1;
break;
case 0xFB: //按下3键
num1 = 3;
P1 = num1;
break;
case 0xF7: //按下+键
op = '+';
P2 = op;
break;
case 0xEF: //按下4键
num2 = 4;
P1 = num2;
break;
case 0xDF: //按下5键
num2 = 5;
P1 = num2;
break;
case 0xBF: //按下6键
num2 = 6;
P1 = num2;
break;
case 0x7F: //按下-键
op = '-';
P2 = op;
break;
case 0xEE: //按下7键
num2 = 7;
P1 = num2;
break;
case 0xDE: //按下8键
num2 = 8;
P1 = num2;
break;
case 0xBE: //按下9键
num2 = 9;
P1 = num2;
break;
case 0x77: //按下*键
op = '*';
P2 = op;
break;
case 0xED: //按下C键
num1 = 0;
num2 = 0;
op = 0;
result = 0;
P1 = 0;
P2 = 0;
break;
case 0xDD: //按下0键
if(op == '/') //如果是除法运算
P1 = 0xFF; //显示E
else
{
num2 = 0;
P1 = num2;
}
break;
case 0xBD: //按下=键
switch(op) //根据运算符进行运算
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if(num2 == 0) //除数不能为0
P1 = 0xFF; //显示E
else
result = num1 / num2;
break;
default:
break;
}
P1 = result;
break;
case 0x7E: //按下/键
op = '/';
P2 = op;
break;
default:
break;
}
}
}
}
}
```
该代码通过检测按键输入,根据输入的数字和运算符实现简单的四则运算,并在数码管上显示结果。需要注意的是,除法运算时需要判断除数是否为0,避免出现异常情况。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)