at89c52计算器程序
时间: 2024-03-25 12:38:55 浏览: 56
AT89C52是一种常见的单片机,可以用它来编写简单的计算器程序。
以下是一个简单的AT89C52计算器程序,可以进行加、减、乘、除运算:
```
#include<reg52.h>
// 定义端口
sbit k1=P2^0;
sbit k2=P2^1;
sbit k3=P2^2;
sbit k4=P2^3;
sbit k5=P2^4;
sbit k6=P2^5;
sbit k7=P2^6;
sbit k8=P2^7;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7;
// 定义全局变量
int num1 = 0;
int num2 = 0;
int result = 0;
char op = '+';
// 函数声明
void delay(unsigned int i);
void getKey();
void display(int num);
void main()
{
while(1)
{
getKey();
display(result);
}
}
// 键盘输入函数
void getKey()
{
if(k1 == 0)
{
while(k1 == 0);
num1 = num1*10 + 1;
}
if(k2 == 0)
{
while(k2 == 0);
num1 = num1*10 + 2;
}
if(k3 == 0)
{
while(k3 == 0);
num1 = num1*10 + 3;
}
if(k4 == 0)
{
while(k4 == 0);
num2 = num2*10 + 1;
}
if(k5 == 0)
{
while(k5 == 0);
num2 = num2*10 + 2;
}
if(k6 == 0)
{
while(k6 == 0);
num2 = num2*10 + 3;
}
if(k7 == 0)
{
while(k7 == 0);
op = '+';
}
if(k8 == 0)
{
while(k8 == 0);
op = '-';
}
switch(op)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
break;
}
}
// 数码管显示函数
void display(int num)
{
int i;
int num_arr[8] = {0};
for(i=0; i<8; i++)
{
num_arr[i] = num % 10;
num /= 10;
}
led1 = num_arr[7];
led2 = num_arr[6];
led3 = num_arr[5];
led4 = num_arr[4];
led5 = num_arr[3];
led6 = num_arr[2];
led7 = num_arr[1];
led8 = num_arr[0];
delay(1000);
}
// 延时函数
void delay(unsigned int i)
{
while(i--);
}
```
这个程序使用了8个按键和一个8位数码管,按下不同的按键可以输入数字和运算符,程序会根据输入的数字和运算符进行相应的运算,并将结果显示在数码管上。
阅读全文