51单片机四位数码管计算器 Proteus仿真程序

目录

概要

仿真图

部分代码

资料下载地址:51单片机四位数码管计算器 Proteus仿真程序

概要

复制代码
1.系统通过4x4的矩阵键盘输入数字及运算符。 
2.可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E
3.可以进行加法以外的计算 (乘、除、减) 。

仿真图

部分代码

cpp 复制代码
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='+';                       
                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=='/'){                       
                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){
        if(num1<= 9999)       
        {
                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);
        }
        else
        {
                P2=0x01;
                P0=duan[10];
                DelayXms(4);
                P2=0x02;
                P0=duan[10];
                DelayXms(4);
                P2=0x04;
                P0=duan[10];
                DelayXms(4);
                P2=0x08;
                P0=duan[10];
                DelayXms(4);
       
        }
               
}
void DelayXms(unsigned int x)               
{        unsigned char i, j;
        while(x--)
        {        i = 2;
                j = 239;
                do{while (--j);
                }while (--i);
        }
}
相关推荐
就是蠢啊1 天前
51单片机——DS18B20(一)
单片机·嵌入式硬件·51单片机
资料,小偿1 天前
3.50.1proteus交通灯纯数电交通灯基于proteus的纯数电交通灯设计
proteus
小龙报1 天前
【嵌入式51单片机】51 单片机中断入门到精通:中断类型、寄存器操作、优先级配置与实战代码
c语言·驱动开发·单片机·嵌入式硬件·物联网·mongodb·51单片机
hazy1k2 天前
MSPM0L1306 从零到入门: 第九章 ADC-电压采集
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·esp32
清风6666663 天前
基于51单片机的智能断路器设计:过压欠压过流温度实时监控与保护
单片机·嵌入式硬件·毕业设计·51单片机·课程设计·期末大作业
yyycqupt4 天前
蓝牙协议栈的学习(二)
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·iot
资料,小偿4 天前
4.23.1基于8086的电子琴,8086的电子音调系统,8253的OUT0作为扬声器输出口
汇编·proteus
hazy1k4 天前
MSPM0L1306 从零到入门:第六章 UART —— 让单片机与世界“对话”
stm32·单片机·嵌入式硬件·物联网·51单片机·esp32·iot
就是蠢啊4 天前
51单片机——多文件结构模板
单片机·嵌入式硬件·51单片机
贝塔实验室4 天前
新手如何使用Altium Designer创建第一张原理图(一)
单片机·嵌入式硬件·fpga开发·proteus·硬件工程·基带工程·嵌入式实时数据库