用AT89c52实现电子计算器1602显示
时间: 2023-07-16 12:11:54 浏览: 69
要使用AT89c52实现电子计算器并在1602液晶显示器上显示结果,需要以下步骤:
1. 连接AT89c52芯片和1602液晶显示器。
2. 编写程序来读取用户输入的数字和操作符,并计算结果。
3. 将结果显示在1602液晶显示器上。
以下是一个简单的代码示例,用于实现一个简单的加法计算器。请注意,此代码未经测试,实际使用时需要根据实际情况进行修改。
```C
#include <reg52.h>
#include <stdio.h>
#define LCD P1
sbit RS = P3^5;
sbit EN = P3^6;
void init_lcd();
void write_cmd(unsigned char cmd);
void write_data(unsigned char dat);
void write_string(unsigned char *str);
void delay_us(unsigned int us);
void main()
{
unsigned char num1, num2, op;
unsigned int result;
unsigned char buffer[16];
init_lcd();
write_string("Input num1:");
num1 = getchar();
write_data(num1);
write_string("Input num2:");
num2 = getchar();
write_data(num2);
write_string("Input op(+):");
op = getchar();
write_data(op);
if (op == '+') {
result = num1 + num2;
sprintf(buffer, "%d+%d=%d", num1, num2, result);
write_string(buffer);
} else {
write_string("Invalid operator");
}
while (1) {}
}
void init_lcd()
{
delay_us(15000);
write_cmd(0x38);
write_cmd(0x0c);
write_cmd(0x06);
write_cmd(0x01);
}
void write_cmd(unsigned char cmd)
{
RS = 0;
LCD = cmd;
EN = 1;
delay_us(10);
EN = 0;
}
void write_data(unsigned char dat)
{
RS = 1;
LCD = dat;
EN = 1;
delay_us(10);
EN = 0;
}
void write_string(unsigned char *str)
{
while (*str) {
write_data(*str++);
}
}
void delay_us(unsigned int us)
{
while (us--)
;
}
```
在此示例中,我们首先初始化了1602液晶显示器,然后提示用户输入数字和操作符。然后我们将用户输入的数字和操作符相加,并计算结果。最后将结果显示在液晶显示器上。
阅读全文