51单片机实现计算器.docx

上传人:b****6 文档编号:8043058 上传时间:2023-01-28 格式:DOCX 页数:21 大小:16.41KB
下载 相关 举报
51单片机实现计算器.docx_第1页
第1页 / 共21页
51单片机实现计算器.docx_第2页
第2页 / 共21页
51单片机实现计算器.docx_第3页
第3页 / 共21页
51单片机实现计算器.docx_第4页
第4页 / 共21页
51单片机实现计算器.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

51单片机实现计算器.docx

《51单片机实现计算器.docx》由会员分享,可在线阅读,更多相关《51单片机实现计算器.docx(21页珍藏版)》请在冰豆网上搜索。

51单片机实现计算器.docx

51单片机实现计算器

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitdula=P2^6;

sbitwela=P2^7;

sbitB1=P2^3;

sbitkey1=P3^5;

ucharSHZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uinta,b,c,d,e,f,g,num,temp,k,pduan,jieguo,num1,num2,num3,num4,num5;

voiddisplay7();

voiddjp();

voiddelay(uintz);

voidkeyscan();

voiddisplay1();

voiddisplay2();

voiddisplay3();

voiddisplay4();

voiddisplay5();

voiddisplay6();

voidjia();

voidjian();

voidcheng();

voidchu();

voiddeng();

voidqingchu();

voidmain()

{

while

(1)

{

P3=0xff;//与独立键盘连用的关键

djp();

P3=0xff;//与独立键盘连用的关键

keyscan();

display7();

}

}

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voiddjp()//独立键盘

{

if(key1==0)

{

delay(5);

if(key1==0)

{

num=0;//pduan=5;

a=b=c=d=e=f=g=0;

while(!

key1);

delay(5);

while(!

key1);

}

}

}

voiddisplay7()

{

if(num==0)

{

display1();

}

if(num==1)

{

if(a!

=0)

display1();

}

if(num==2)

{

//if(b!

=0)

//{

display1();

display2();

//}

//if(a!

=0)

//display1();

}

if(num==3)

{

//if(c!

=0)

//{

display1();

display2();

display3();

/*}

if(b!

=0)

{

display1();

display2();

}

if(a!

=0)

display1();*/

}

if(num==4)

{

//if(d!

=0)

//{

display1();

display2();

display3();

display4();

/*}

if(c!

=0)

{

display1();

display2();

display3();

}

if(b!

=0)

{

display1();

display2();

}

if(a!

=0)

display1();*/

}

if(num==5)

{

//if(e!

=0)

//{

display1();

display2();

display3();

display4();

display5();

/*}

if(d!

=0)

{

display1();

display2();

display3();

display4();

}

if(c!

=0)

{

display1();

display2();

display3();

}

if(b!

=0)

{

display1();

display2();

}

if(a!

=0)

display1();*/

}

if(num==6)

{

//if(f!

=0)

//{

display1();

display2();

display3();

display4();

display5();

display6();

/*}

if(e!

=0)

{

display1();

display2();

display3();

display4();

display5();

}

if(d!

=0)

{

display1();

display2();

display3();

display4();

}

if(c!

=0)

{

display1();

display2();

display3();

}

if(b!

=0)

{

display1();

display2();

}

if(a!

=0)

display1();*/

}

//if(pduan==5)

//display1();

if(num==7)

num=6;

}

voidjia()

{

pduan=1;

num1=f*100000+e*10000+d*1000+c*100+b*10+a;

num=0;

a=b=c=d=e=f=g=0;

}

voidjian()

{

pduan=2;

num2=f*100000+e*10000+d*1000+c*100+b*10+a;

num=0;

a=b=c=d=e=f=g=0;

}

voidcheng()

{

pduan=3;

num3=f*100000+e*10000+d*1000+c*100+b*10+a;

num=0;

a=b=c=d=e=f=g=0;

}

voidchu()

{

pduan=4;

num4=f*100000+e*10000+d*1000+c*100+b*10+a;

num=0;

a=b=c=d=e=f=g=0;

}

voidqingchu()

{

g=0;

a=b;

b=c;

c=d;

d=e;

e=f;

f=g;

if(num==0)

{

num=1;

//pduan=5;

}

num--;

}

voiddeng()

{

num5=f*100000+e*10000+d*1000+c*100+b*10+a;

num=0;

if(pduan==1)

{

jieguo=num5+num1;

a=jieguo%10;

b=jieguo%100/10;

c=jieguo%1000/100;

d=jieguo%10000/1000;

e=jieguo%100000/10000;

f=jieguo/100000;

}

if(pduan==2)

{

jieguo=num2-num5;

a=jieguo%10;

b=jieguo%100/10;

c=jieguo%1000/100;

d=jieguo%10000/1000;

e=jieguo%100000/10000;

f=jieguo/100000;

}

if(pduan==3)

{

jieguo=num5*num3;

a=jieguo%10;

b=jieguo%100/10;

c=jieguo%1000/100;

d=jieguo%10000/1000;

e=jieguo%100000/10000;

f=jieguo/100000;

}

if(pduan==4)

{

jieguo=num4/num5;

a=jieguo%10;

b=jieguo%100/10;

c=jieguo%1000/100;

d=jieguo%10000/1000;

e=jieguo%100000/10000;

f=jieguo/100000;

}

if(f==0)//确定位数

{

if(e==0)

{

if(d==0)

{

if(c==0)

{

if(b==0)

{

if(a==0)

num=0;

elsenum=1;

}

elsenum=2;

}

elsenum=3;

}

elsenum=4;

}

elsenum=5;

}

elsenum=6;

}

voidkeyscan()

{

P3=0xfe;//第一部分

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

P3=0xfe;

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xee:

g=1;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0xde:

g=2;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0xbe:

g=3;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0x7e:

jia();

break;

}

B1=0;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

delay(5);

P3=0xff;

B1=1;

}

}

P3=0xfd;//第二部分

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

P3=0xfd;

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xed:

g=4;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0xdd:

g=5;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0xbd:

g=6;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0x7d:

jian();

break;

}

B1=0;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

delay(5);

P3=0xff;

B1=1;

}

}

P3=0xfb;//第三部分

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

P3=0xfb;

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xeb:

g=7;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0xdb:

g=8;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0xbb:

g=9;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

break;

case0x7b:

cheng();

break;

}

B1=0;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

delay(5);

P3=0xff;

B1=1;

}

}

P3=0xf7;//第四部分

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);

P3=0xf7;

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xe7:

deng();

break;

case0xd7:

g=0;

f=e;

e=d;

d=c;

c=b;

b=a;

a=g;

num++;

if(num==1)

num=0;

break;

case0xb7:

qingchu();

break;

case0x77:

chu();

break;

}

B1=0;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

delay(5);

P3=0xff;

B1=1;

}

}

}

voiddisplay1()

{

wela=1;//第1个数字

P0=0xdf;

wela=0;

P=0x00;

dula=1;

P0=SHZ[a];

dula=0;

delay

(1);

dula=1;

P0=0x00;

dula=0;

P0=0xff;

}

voiddisplay2()

{

wela=1;//第2个数字

P0=0xef;

wela=0;

P=0x00;

dula=1;

P0=SHZ[b];

dula=0;

delay

(1);

dula=1;

P0=0x00;

dula=0;

P0=0xff;

}

voiddisplay3()

{

wela=1;//第3个数字

P0=0xf7;

wela=0;

P=0x00;

dula=1;

P0=SHZ[c];

dula=0;

delay

(1);

dula=1;

P0=0x00;

dula=0;

P0=0xff;

}

voiddisplay4()

{

wela=1;//第4个数字

P0=0xfb;

wela=0;

P=0x00;

dula=1;

P0=SHZ[d];

dula=0;

delay

(1);

dula=1;

P0=0x00;

dula=0;

P0=0xff;

}

voiddisplay5()

{

wela=1;//第5个数字

P0=0xfd;

wela=0;

P=0x00;

dula=1;

P0=SHZ[e];

dula=0;

delay

(1);

dula=1;

P0=0x00;

dula=0;

P0=0xff;

}

voiddisplay6()

{

wela=1;//第6个数字

P0=0xfe;

wela=0;

P=0x00;

dula=1;

P0=SHZ[f];

dula=0;

delay

(1);

dula=1;

P0=0x00;

dula=0;

P0=0xff;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1