c51写一个完整的计算器代码
时间: 2023-08-31 18:43:08 浏览: 143
### 回答1:
答案:#include <stdio.h>
int main()
{
float num1, num2, result;
char op;
printf("请输入一个数字: ");
scanf("%f", &num1);
printf("请输入一个操作符(+,-,*或/): ");
scanf(" %c", &op);
printf("请输入另一个数字: ");
scanf("%f", &num2);
switch(op)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
printf("%.2f %c %.2f = %.2f\n", num1, op, num2, result);
return 0;
}
### 回答2:
C51是一种经典的单片机芯片,下面给出一个基于C51的简单计算器代码:
```c
#include <reg52.h>
sbit LCD_RS = P1^0; // LCD使能引脚定义
sbit LCD_RW = P1^1; // LCD读写引脚定义
sbit LCD_EN = P1^2; // LCD使能引脚定义
sbit BUTTON = P2^0; // 按钮引脚定义
unsigned char code table[] = {"0123456789+-*/="}; // 键盘对应的字符, 最后一个为等号
void delay(unsigned int i)
{
unsigned int j, k;
for(j = i; j > 0; j--)
for(k = 0; k < 100; k++);
}
void LCD_Init()
{
LCD_RS = 0;
LCD_EN = 0;
LCD_RW = 0;
delay(15);
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 1;
P0 = 0X38;
delay(5);
LCD_EN = 0;
delay(2);
LCD_EN = 1;
P0 = 0X0F;
delay(5);
LCD_EN = 0;
delay(2);
LCD_EN = 1;
P0 = 0X01;
delay(5);
LCD_EN = 0;
delay(2);
LCD_EN = 1;
P0 = 0X06;
delay(5);
LCD_EN = 0;
}
void LCD_WriteCommand(unsigned char Command)
{
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 1;
P0 = Command;
delay(5);
LCD_EN = 0;
}
void LCD_WriteData(unsigned char Data)
{
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 1;
P0 = Data;
delay(5);
LCD_EN = 0;
}
void KeyScan()
{
unsigned char key;
unsigned char result;
if (BUTTON == 0)
{
delay(100); // 消抖
while(BUTTON == 0); // 等待按钮松开
key = P1 & 0x0f; // 读取按键值
if (key < 10) // 数字按键
{
LCD_WriteData(table[key]);
}
else if (key < 15) // 运算符按键
{
LCD_WriteCommand(0x01); // 清屏
switch(key)
{
case 10: // 加法
result = table[10]+table[11];
break;
case 11: // 减法
result = table[10]-table[11];
break;
case 12: // 乘法
result = table[10]*table[11];
break;
case 13: // 除法
result = table[10]/table[11];
break;
}
LCD_WriteData(result);
}
else if (key == 15) // 等号按键
{
LCD_WriteCommand(0x01); // 清屏
LCD_WriteData(result);
}
}
}
void main()
{
LCD_Init();
while(1)
{
KeyScan();
}
}
```
这段代码实现了一个简单的计算器功能,通过C51单片机读取数字和运算符按键,然后在LCD1602液晶屏上显示计算结果。代码中使用了按键消抖和按钮松开检测,保证按键输入的准确性。计算结果包括四则运算,并通过等号键显示出来。
### 回答3:
C51是一种基于8位单片机的架构,我们可以使用汇编语言来编写一个简单的计算器代码。以下是一个完整的C51计算器程序的示例:
```
#include<reg51.h>
// 定义按键和LED接口的引脚
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 led = P2^0; // LED
unsigned char temp; // 存储器的临时变量
// 延时函数,用于模拟短暂按键抖动现象
void delay() {
unsigned int i, j;
for(i = 0; i < 100; i++)
for(j = 0; j < 1000; j++);
}
// 按键扫描函数
unsigned char keyScan() {
while(1) {
key1 = 0; key2 = 1; key3 = 1; key4 = 1; // 检测第1列
if(key5 == 0) { delay(); return 1; }
if(key6 == 0) { delay(); return 4; }
if(key7 == 0) { delay(); return 7; }
if(key8 == 0) { delay(); return 0; }
key1 = 1; key2 = 0; key3 = 1; key4 = 1; // 检测第2列
if(key5 == 0) { delay(); return 2; }
if(key6 == 0) { delay(); return 5; }
if(key7 == 0) { delay(); return 8; }
if(key8 == 0) { delay(); return 0; }
key1 = 1; key2 = 1; key3 = 0; key4 = 1; // 检测第3列
if(key5 == 0) { delay(); return 3; }
if(key6 == 0) { delay(); return 6; }
if(key7 == 0) { delay(); return 9; }
if(key8 == 0) { delay(); return 0; }
key1 = 1; key2 = 1; key3 = 1; key4 = 0; // 检测第4列
if(key5 == 0) { delay(); return '+'; } // 加法
if(key6 == 0) { delay(); return '-'; } // 减法
if(key7 == 0) { delay(); return '*'; } // 乘法
if(key8 == 0) { delay(); return '/'; } // 除法
}
}
// 显示数字函数
void showNumber(unsigned char number) {
if(number < 10) {
P0 = number;
}
else {
P0 = number - 10 + 'A';
}
}
// 进行计算的函数
void calculate(unsigned char key) {
switch(key) {
case '+':
temp = P3 + P4;
break;
case '-':
temp = P3 - P4;
break;
case '*':
temp = P3 * P4;
break;
case '/':
temp = P3 / P4;
break;
default:
break;
}
}
void main() {
while(1) {
P2 = 0x00; // 将LED置为灭
showNumber(P3); // 显示P3的当前值
temp = keyScan();
if(temp >= 0 && temp <= 9) {
P4 = temp; // 更新P4的值
}
else {
calculate(temp);
P3 = temp; // 更新P3的值
}
}
}
```
这段代码实现了一个简单的C51计算器,使用了8个按键和一个LED显示结果。用户可以通过按下按键来输入数字,然后再按下对应的操作符键进行计算。最后,计算结果将通过LED显示。
阅读全文