# 51单片机计算器 使用数码管显示
比较简短的一种实现加减乘除计算功能的计算器,基于51单片机,使用数码管显示
> 本人有点强迫症,为了好看,把代码改成100行了哈哈
> 若是有不理解的地方,欢迎给我发邮箱 1836601275@qq.com
下面附上源码:
```c
#include <REGX52.H> //程序核心:始终显示num,操作改变num
void display(int num1); //显示函数
void DelayXms(unsigned int x); //延时函数
void keyScan(); //按键扫描
void keyAdd(); //数字多位输入
void pd(); //判断
int n1, n2, n3, n4, numKey=10000, num=0, num0=0;//显示的个十百千位 键值,显示值,存储值1
char fuhao='0',fuhao0='0'; //键入的符号值,存储的符号值
unsigned char duan[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void main(){
while(1){
keyScan(); //扫描键值
pd(); //判断键值情况
display(num); //显示函数
}
}
void keyAdd(){
if(numKey<10000){
num=num*10+numKey;
numKey=10000;
}
}
void pd(){
keyAdd(); //判断为数字,则为数字输入
if(fuhao=='c'){ //清零
num=0;
num0=0;
fuhao0='0';
fuhao='0';
}
if(fuhao=='+'){ //加法
fuhao0='+'; //将符号'+'存到变量fuhao0
fuhao='0'; //符号清零
num0=num; //将加数0存到变量num0
num=0;
}
if(fuhao=='-'){ //减法
fuhao0='-';
fuhao='0';
num0=num;
num=0;
}
if(fuhao=='*'){ //乘法
fuhao0='*';
fuhao='0';
num0=num;
num=0;
}
if(fuhao=='/'){ //除法
fuhao0='/';
fuhao='0';
num0=num;
num=0;
}
if(fuhao=='='){ //检测到符号为等号,则进行运算
if(fuhao0=='+')num=num0+num;
else if(fuhao0=='-')num=num0-num;
else if(fuhao0=='*')num=num0*num;
else if(fuhao0=='/')num=num0/num;
fuhao='0';
num0=0;
}
}
void keyScan(){
P3=0xef;//1110 1111
if(!P3_3){numKey=7;while(!P3_3);}if(!P3_2){numKey=8;while(!P3_2);}if(!P3_1){numKey=9;while(!P3_1);}if(!P3_0){fuhao='+';while(!P3_0);}
P3=0xdf;
if(!P3_3){numKey=4;while(!P3_3);}if(!P3_2){numKey=5;while(!P3_2);}if(!P3_1){numKey=6;while(!P3_1);}if(!P3_0){fuhao='-';while(!P3_0);}
P3=0xbf;
if(!P3_3){numKey=1;while(!P3_3);}if(!P3_2){numKey=2;while(!P3_2);}if(!P3_1){numKey=3;while(!P3_1);}if(!P3_0){fuhao='*';while(!P3_0);}
P3=0x7f;
if(!P3_3){fuhao='c';while(!P3_3);}if(!P3_2){numKey=0;while(!P3_2);}if(!P3_1){fuhao='=';while(!P3_1);}if(!P3_0){fuhao='/';while(!P3_0);}
}
void display(int num1){
n4=num1%10;
n3=num1/10%10;
n2=num1/100%10;
n1=num1/1000%10;
P2=0x01;
P0=duan[n1];
DelayXms(4);
P2=0x02;
P0=duan[n2];
DelayXms(4);
P2=0x04;
P0=duan[n3];
DelayXms(4);
P2=0x08;
P0=duan[n4];
DelayXms(4);
}
void DelayXms(unsigned int x) //@12.000MHz
{ unsigned char i, j;
while(x--)
{ i = 2;
j = 239;
do{while (--j);
}while (--i);
}
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 4 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/6b2ea2d510824682ac2af676104b9caf_abackcab.jpg!1)
毕业小助手
- 粉丝: 2406
- 资源: 5558
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 城市大脑数据中台总体架构
- Penguin.java
- 数据挖掘与数据分析应用案例 数据挖掘算法实践 基于Java的使用朴素贝叶斯算法过滤垃圾邮件.doc
- 数据挖掘与数据分析应用案例 数据挖掘算法实践 基于Java的决策树算法在学生考试成绩中的应用.doc
- 中尺度气象学Mesometeorology
- CDM/CDMA算法仿真DEMO -MATLAB源码
- 数据挖掘与数据分析应用案例 数据挖掘算法实践 基于Java的关联规则算法的超市购物篮事务.doc
- 数据挖掘与数据分析应用案例 数据挖掘算法实践 基于Java的层次聚类算法基本研究.doc
- 数据挖掘与数据分析应用案例 数据挖掘算法实践 基于Java的编辑距离算法求相似度.doc
- 数据挖掘与数据分析应用案例 数据挖掘算法实践 基于Java的Apriori算法探寻关联规则.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)