生成单片机简易计算器代码
时间: 2023-12-04 08:02:57 浏览: 42
以下是一个简单的单片机计算器代码,使用C语言编写,可以实现加、减、乘、除四种基本运算。
```c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; //数码管0-9及空格码表
sbit key1 = P1^0; //按键1
sbit key2 = P1^1; //按键2
sbit key3 = P1^2; //按键3
sbit key4 = P1^3; //按键4
sbit key5 = P1^4; //按键5
sbit key6 = P1^5; //按键6
sbit key7 = P1^6; //按键7
sbit key8 = P1^7; //按键8
sbit beep = P2^3; //蜂鸣器
void delay(uint xms) //延时函数
{
uint i, j;
for(i=xms; i>0; i--)
for(j=248; j>0; j--);
}
void display(uchar num) //数码管显示函数
{
P0 = table[num];
delay(2);
}
uchar getkey() //获取按键函数
{
uchar key = 0;
if(key1 == 0)
{
delay(10);
if(key1 == 0)
key = 1;
while(!key1);
}
else if(key2 == 0)
{
delay(10);
if(key2 == 0)
key = 2;
while(!key2);
}
else if(key3 == 0)
{
delay(10);
if(key3 == 0)
key = 3;
while(!key3);
}
else if(key4 == 0)
{
delay(10);
if(key4 == 0)
key = 4;
while(!key4);
}
else if(key5 == 0)
{
delay(10);
if(key5 == 0)
key = 5;
while(!key5);
}
else if(key6 == 0)
{
delay(10);
if(key6 == 0)
key = 6;
while(!key6);
}
else if(key7 == 0)
{
delay(10);
if(key7 == 0)
key = 7;
while(!key7);
}
else if(key8 == 0)
{
delay(10);
if(key8 == 0)
key = 8;
while(!key8);
}
return key;
}
void main()
{
uchar num1 = 0, num2 = 0, result = 0, op = 0; //num1和num2为操作数,result为结果,op为操作符
while(1)
{
num1 = 0; num2 = 0; result = 0; op = 0; //每次循环前清零
while(num1 == 0) //获取第一个操作数
{
display(num1);
num1 = getkey();
}
delay(500);
while(op == 0) //获取操作符
{
display(num2);
num2 = getkey();
if(num2 >= 1 && num2 <= 4)
op = num2;
}
delay(500);
while(num2 == 0) //获取第二个操作数
{
display(num2);
num2 = getkey();
}
delay(500);
switch(op) //根据操作符进行计算
{
case 1: result = num1 + num2; break;
case 2: result = num1 - num2; break;
case 3: result = num1 * num2; break;
case 4: result = num1 / num2; break;
}
display(result); //显示结果
delay(2000);
}
}
```
该代码使用了一个数码管和8个按键,其中按键1-4分别代表加、减、乘、除四种操作符,按键5-8分别代表数字1-4。每次按下按键后,程序会先显示出该数字或操作符,然后等待下一个输入,最终显示出计算结果。如果输入有误,可以重新按下数字或操作符键重新输入。在显示结果时,为了避免误操作,程序会延时2秒钟,同时发出蜂鸣器声音,提醒用户操作结束。