普中51单片机简易计算器可运行的代码
时间: 2023-11-13 14:02:58 浏览: 241
51单片机制作简易计算器项目代码包word文档
以下是普中51单片机简易计算器的示例代码,主要实现了加减乘除四种运算:
```
#include <reg51.h>
sbit Key1 = P1^0; // 加
sbit Key2 = P1^1; // 减
sbit Key3 = P1^2; // 乘
sbit Key4 = P1^3; // 除
sbit Key5 = P1^4; // 等于
sbit Key6 = P1^5; // 清零
unsigned char xdata result[4]; // 结果
unsigned char xdata num1[4]; // 第一个数
unsigned char xdata num2[4]; // 第二个数
unsigned char xdata op; // 运算符
unsigned char xdata flag; // 运算标志
void delay(unsigned int xms) // 延时函数
{
unsigned int i, j;
for (i = xms; i > 0; i--)
for (j = 112; j > 0; j--);
}
void Key_Scan() // 按键扫描
{
if (Key1 == 0) {
op = '+';
flag = 1;
}
if (Key2 == 0) {
op = '-';
flag = 1;
}
if (Key3 == 0) {
op = '*';
flag = 1;
}
if (Key4 == 0) {
op = '/';
flag = 1;
}
if (Key5 == 0) {
flag = 2;
}
if (Key6 == 0) {
flag = 3;
}
}
void Display(unsigned char *p) // 数码管显示
{
unsigned int i;
for (i = 0; i < 4; i++) {
P2 = i;
P0 = *(p + i);
delay(2);
P0 = 0x00;
}
}
void main()
{
unsigned int i;
for (i = 0; i < 4; i++) {
num1[i] = ' ';
num2[i] = ' ';
result[i] = ' ';
}
flag = 0;
while (1) {
Key_Scan();
if (flag == 1) { // 输入第一个数
for (i = 0; i < 4; i++) {
P2 = i;
num1[i] = P0;
delay(2);
}
}
if (flag == 2) { // 计算结果
for (i = 0; i < 4; i++) {
P2 = i;
num2[i] = P0;
delay(2);
}
if (op == '+') {
for (i = 0; i < 4; i++) {
result[i] = num1[i] + num2[i] - '0';
}
}
if (op == '-') {
for (i = 0; i < 4; i++) {
result[i] = num1[i] - num2[i] + '0';
}
}
if (op == '*') {
unsigned char carry = 0;
unsigned int j, k;
for (i = 0; i < 4; i++) {
k = 0;
for (j = 0; j < 4; j++) {
k += (num1[j] - '0') * (num2[i] - '0');
}
result[3 - i] = (k + carry) % 10 + '0';
carry = (k + carry) / 10;
}
}
if (op == '/') {
unsigned int j, k;
for (i = 0; i < 4; i++) {
k = (num1[i] - '0') / (num2[i] - '0');
result[i] = k + '0';
}
}
flag = 0;
}
if (flag == 3) { // 清零
for (i = 0; i < 4; i++) {
num1[i] = ' ';
num2[i] = ' ';
result[i] = ' ';
}
flag = 0;
}
Display(result);
}
}
```
需要注意的是,以上代码只是示例代码,可能会存在一些问题,需要根据实际情况进行修改和调试。另外,由于涉及到硬件部分,需要按照实际电路进行连接和调试。
阅读全文