stc89c52单片机实现小数的电子计算器
时间: 2023-12-08 11:06:57 浏览: 192
要实现一个带有小数的电子计算器,需要以下步骤:
1. 确定电路结构:可以选择使用键盘、LCD显示屏、运算符按键等部件,需要根据实际需要确定所需部件。
2. 程序设计:需要编写程序来获取用户输入,并进行运算,最后将结果显示到LCD显示屏上。在程序中需要实现浮点数的运算,可以通过数据结构来实现。
3. 硬件连接:将电路连接好,并通过STC89C52单片机来控制各个部件。
下面是一个简单的示例程序,可以实现加法和乘法运算:
```c
#include <STC89C5xRC.H>
#define KEY P1
#define LCD P0
int main(void)
{
float num1, num2, result;
unsigned char op;
while (1) {
// 获取用户输入
num1 = get_num();
op = get_op();
num2 = get_num();
// 进行运算
switch (op) {
case '+':
result = num1 + num2;
break;
case '*':
result = num1 * num2;
break;
default:
result = 0;
break;
}
// 显示结果
display(result);
}
}
// 获取用户输入数字
float get_num()
{
float num = 0.0;
unsigned char key;
// 等待用户输入
do {
key = KEY;
} while (key == 0xFF);
// 读取数字
while (key != '#') {
if (key >= '0' && key <= '9') {
num = num * 10 + (key - '0');
} else if (key == '.') {
num /= 10;
}
key = KEY;
}
return num;
}
// 获取用户输入运算符
unsigned char get_op()
{
unsigned char op = '+';
unsigned char key;
// 等待用户输入
do {
key = KEY;
} while (key == 0xFF);
// 读取运算符
if (key == '*') {
op = '*';
}
return op;
}
// 显示结果到LCD屏幕上
void display(float num)
{
unsigned char str[16];
// 将数字转换为字符串
sprintf(str, "%.2f", num);
// 在LCD屏幕上显示
LCD = 0x80;
for (int i = 0; i < 16; i++) {
LCD = str[i];
}
}
```
这个程序只是一个简单的示例,可以根据需要进行扩展和优化。
阅读全文