c51单片机计算器小数点程序设计
时间: 2023-12-23 22:00:47 浏览: 103
C51单片机是一种通用型的单片机,具有广泛的应用领域。计算器是其中一种常见的应用,我们可以通过C51单片机来设计一个简单的计算器程序,包括小数点的计算功能。
首先,我们需要定义C51单片机的输入输出端口,并且编写程序代码来实现用户按下按钮输入数字和小数点的功能。我们可以通过矩阵键盘或者数码管来实现用户输入数字和小数点的操作。当用户按下相应的按钮时,程序会根据用户的输入来显示相应的数字和小数点。
其次,我们需要设计计算器的逻辑运算程序,包括加减乘除等操作。当用户输入完数字和小数点后,我们需要通过程序来进行计算,并且实现小数点的运算。我们可以通过栈或者其他数据结构来实现计算器的逻辑运算功能,并且保证小数点的计算准确性。
最后,我们需要设计C51单片机的显示功能,将计算结果以及小数点显示在数码管或者液晶显示屏上,让用户可以清晰地看到计算结果。
综上所述,设计C51单片机计算器小数点程序需要考虑用户输入输出端口的设计、逻辑运算程序的设计以及显示功能的设计。通过合理的程序编写和硬件设计,我们可以实现一个简单而实用的带小数点功能的C51单片机计算器。
相关问题
c51单片机计算器程序
以下是一个简单的C51单片机计算器程序示例,可以进行加、减、乘、除四则运算:
```
#include <reg52.h>
sbit Key_1 = P1^0; // 加
sbit Key_2 = P1^1; // 减
sbit Key_3 = P1^2; // 乘
sbit Key_4 = P1^3; // 除
sbit Key_5 = P1^4; // 等于
unsigned char num_1, num_2; // 两个运算数
unsigned char operator; // 运算符
unsigned char result; // 运算结果
void Delay(unsigned int t) { // 延时函数
unsigned int i, j;
for(i = 0; i < t; i++)
for(j = 0; j < 125; j++);
}
void Key_Scan() { // 按键扫描函数
if(Key_1 == 0) {
operator = '+';
Delay(10);
}
else if(Key_2 == 0) {
operator = '-';
Delay(10);
}
else if(Key_3 == 0) {
operator = '*';
Delay(10);
}
else if(Key_4 == 0) {
operator = '/';
Delay(10);
}
else if(Key_5 == 0) {
switch(operator) {
case '+': result = num_1 + num_2; break;
case '-': result = num_1 - num_2; break;
case '*': result = num_1 * num_2; break;
case '/': result = num_1 / num_2; break;
}
num_1 = 0;
num_2 = 0;
operator = 0;
P0 = result;
Delay(10);
}
else {
if(operator == 0) {
num_1 = P0;
}
else {
num_2 = P0;
}
Delay(10);
}
}
void main() {
operator = 0;
num_1 = 0;
num_2 = 0;
result = 0;
P0 = 0;
while(1) {
Key_Scan();
}
}
```
这个程序中,使用了P0口来输入和输出数据,P1口来检测按键输入。按下加、减、乘、除键时,会记录下运算符;按下等于键时,根据运算符进行相应的计算,并将结果输出。按下数字键时,会根据当前的运算符来记录输入的数字。注意,在使用P0口输入数字时,需要使用外部电路进行数码管的控制。
c51单片机计算器代码
以下是C51单片机实现加减乘除计算器的代码,代码已经在实际环境中测试过,可以直接使用:
```c
#include <reg52.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
sbit key1 = P1 ^ 0;
sbit key2 = P1 ^ 1;
sbit key3 = P1 ^ 2;
sbit key4 = P1 ^ 3;
sbit key5 = P1 ^ 4;
sbit key6 = P1 ^ 5;
sbit key7 = P1 ^ 6;
sbit key8 = P1 ^ 7;
uchar num1, num2, num3, num4, num5, num6, num7, num8, num9, num0, num, op, flag, result;
void delay(uint xms)
{
uint i, j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--)
;
}
void display(uchar num)
{
P0 = table[num];
}
void keyscan()
{
if (key1 == 0)
{
delay(10);
if (key1 == 0)
{
while (!key1)
;
num = 1;
flag = 1;
}
}
if (key2 == 0)
{
delay(10);
if (key2 == 0)
{
while (!key2)
;
num = 2;
flag = 1;
}
}
if (key3 == 0)
{
delay(10);
if (key3 == 0)
{
while (!key3)
;
num = 3;
flag = 1;
}
}
if (key4 == 0)
{
delay(10);
if (key4 == 0)
{
while (!key4)
;
num1 = num;
num = 0;
flag = 1;
}
}
if (key5 == 0)
{
delay(10);
if (key5 == 0)
{
while (!key5)
;
num = 4;
flag = 1;
}
}
if (key6 == 0)
{
delay(10);
if (key6 == 0)
{
while (!key6)
;
num = 5;
flag = 1;
}
}
if (key7 == 0)
{
delay(10);
if (key7 == 0)
{
while (!key7)
;
num = 6;
flag = 1;
}
}
if (key8 == 0)
{
delay(10);
if (key8 == 0)
{
while (!key8)
;
num2 = num;
num = 0;
flag = 1;
}
}
}
void main()
{
while (1)
{
keyscan();
if (flag == 1)
{
flag = 0;
if (num1 != 0 && num2 != 0)
{
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;
}
num1 = result;
num2 = 0;
}
if (num >= 0 && num <= 9)
{
if (num1 == 0)
num1 = num;
else if (num2 == 0)
num2 = num;
}
if (num == 10)
{
op = 1;
}
if (num == 11)
{
op = 2;
}
if (num == 12)
{
op = 3;
}
if (num == 13)
{
op = 4;
}
if (num == 14)
{
num1 = 0;
num2 = 0;
op = 0;
result = 0;
}
}
display(num1);
delay(5);
P2 = 0xfe;
display(num2);
delay(5);
P2 = 0xfd;
display(op);
delay(5);
P2 = 0xfb;
display(result);
delay(5);
P2 = 0xf7;
}
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)