创作背景
这个计算器程序是前一段时间做的,虽然还有一些缺陷但也算是本人作为单片机和C语言初学者做的第一个比较成型的程序。发文留念一下。
程序功能以及目前的缺陷
- 程序目前可以实现简单的加减乘除运算。
- 每个参与运算的数字范围为0~65535。
- 每次最多运算10个数。
- 运算顺序为输入顺序。目前无法实现先乘除后加减以及括号运算。
- 由于数码管位数限制,最终结果范围为0~9999999。
由于本人是初学者,所以程序会有很多需要改进的地方,欢迎各位大佬们指出!
实现工具
- 普中51开发板
- KEIL C51
- stc-isp
整体效果
(运算12345×5×4)
原理及代码实现
一、原理图
二、核心思路
分别使用两个数组来存储通过按键输入的待运算数(number[])和运算符号(mathoperator[])
三、代码实现
3-1 主函数
#include "reg52.h"
#include <stdio.h>
typedef unsigned long u32; //重新定义系统变量
typedef unsigned int u16;
typedef unsigned char u8;
extern u8 Localize(); //函数声明
void LEDrotate();
void CLEARledbuff(u8 *Array, u8 *End_Array);
void UART_init(void);
extern u8 MathOperator[10];
u8 code LEDchar[16] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00,0x00};
u8 LEDbuff[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
void main()
{
u8 cycle = 0;
u8 value;
TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x67;
TR0 =