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);
        }
}
相关推荐
项目題供诗6 小时前
51单片机入门-直流电机(十四)
单片机·嵌入式硬件·51单片机
Zarek枫煜8 小时前
zig与c3的算法 -- 静态队列
开发语言·stm32·单片机·嵌入式硬件·算法·51单片机
F137298015578 小时前
12V降5V,10A大功率电源芯片WD5030K
stm32·单片机·嵌入式硬件·51单片机
电子工程师成长日记-C518 小时前
51单片机非接触红外测温(蓝牙传输)
单片机·嵌入式硬件·51单片机
小白学电子_9 小时前
Proteus LED呼吸灯在仿真中无法呈现呼吸灯效果的问题
proteus
线束线缆组件品替网1 天前
Amphenol RJE1Y22A53644401线束详解与替代网络线束选型指南
运维·服务器·网络·智能路由器·电脑·51单片机
jghhh011 天前
51单片机控制42步进电机程序
单片机·嵌入式硬件·51单片机
AnalogElectronic1 天前
ESP-01S 和树莓派pico,普中51单片机开发板,综合比较
单片机·嵌入式硬件·51单片机
’长谷深风‘2 天前
51单片机入门(4温度采集:DS18B20)
单片机·嵌入式硬件·51单片机·ds18b20·温度采集
Hello World . .2 天前
51单片机——DS18B20 温度传感器
单片机·嵌入式硬件·51单片机