51单片机实现计算器.docx
- 文档编号:2112095
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:19
- 大小:18.52KB
51单片机实现计算器.docx
《51单片机实现计算器.docx》由会员分享,可在线阅读,更多相关《51单片机实现计算器.docx(19页珍藏版)》请在冰点文库上搜索。
51单片机实现计算器
#iiiclude
^defineuchaiunsignedchar
^defineumtunsignedmt
sbitdula=P2A6;
sbitxvela=P2A7;
sbitBl=P2A3;
sbitkevl=P3z5;
uchaiSHZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7£0x6f};
umta,b,c.d.eXg.uuniJemp,k.pduanjieguo4iumLnuni2aiuni3jium4.num5;voiddisplav7Q;
voiddjp();
voiddelay(uintz);
voidkeyscan();
voiddisplayIQ;
voiddisplav2Q;
voiddisplav3Q;
voiddisplav4Q;
voiddisplav5Q;
voiddisplav6Q;
voidjia();
voidjianQ;
voidcheng();
voidchu();
voiddengQ;
voidqmgchu();
voidmain()
{
wliile(l)
{
P3=0xff;〃与独立键盘连用的关键
djp();
P3=0xff;〃与独立键盘连用的关键
kevscan();
display7();
}
}
voiddelay(uintz)
{
uiiitx,y;
fbr(x=z;x>0;x—)
for(y=110;y>0;y-);
}
voiddjp()〃独立键盘
if(kevl=O)
delay(5);
if(kevl==O)
{
num=O;//pduaii=5;a=b=c=d=e=f=g=O;wlule(!
keyl);
delay(5);
wlule(!
keyl);
}
}
}
voiddisplav7Q
{
if(num==0)
{
display1();
}
if(num==l)
{
if(a?
=O)
display1();
}
if(num==2)
{
//if(b!
=O)
〃{
displayIQ;
display2Q;
//}
//昨!
=0)
//display1();
}
if(num==3)
{
//if(c!
=O)
//{
display1();
display2();
display3();
严}
馳!
=0)
displayIQ;displav2Q;
}
if(a!
=O)
displaylQ;*/
}if(num==4)
//
//
if(d!
=O)
display1();
display2();
display3();
display4();}if(c!
=O)
display1();
display2();
display3();
}
if(b!
=O)
displayIQ;displav2Q;
}
if(a!
=O)
displaylQ;*/
}if(num==5)
//
if(e?
=O)
display1();
display2();
display3();
display4();
display5Q;}if(d!
=O)
display1();display2();display3();
display4();
}if(c!
=O){
display1();
display2();
display3();
}if(b!
=O)
{
displayIQ;
displav2Q;
}if(a?
=O)displayl();*/
}
if(num==6)
{
//if(f?
=O)
//{
display1();
display2();
display3();
display4();
display5();
display6();
/*}
敢e!
=0)
{
display1();
display2();
display3();
display4();
display5();
}
if(d!
=O)
{
display1();
display2();
display3();
display4();
}
if(c!
=O)
display1();display2();display3();
}
馳!
=0)
{
displayIQ;
displav2Q;
}
if(a?
=O)
displaylQ;*/
}
//if(pduan=5)
//display1();
if(num==7)
num=6;
}
voidjia()
{
pduan=l;
numl=f*100000+e*10000+d*1000+c*l00+b*10+a;
num=0:
voidjianQ
{
pduan=2;
nuni2=f*100000+e*10000+d*1000+c*l00+b*10+a;
num=0:
a=b=c=d=e=f=g=O;
}
voidcheng()
pduan=3;
num3=f*100000+e*10000+d*1000+c*l00+b*10+a;
num=0:
voidchu()
pduan=4;
num4=f*100000+e*10000+d*1000+c*l00+b*10+a;
num=0:
a=b=c=d=e=f=g=O;
}
voidqmgchu()
g=0;
a=b;
b=c;
c=d;
d=e;
e=f;
f=g;
if(num==0)
{
num=l;
//pduan=5;
}
num-;
}
voiddengQ
{
num5=f*100000+e*10000+d*1000+c*l00+b*10+a;num=0:
if(pduan=l)
{
jieguo=nuni5+num1;
a=jieguo%10;
b=jieguo%100/10;
c^jieguo%1000/100;
d=jieguo%10000/1000;
e=^jieguo%100000/10000;
f=jieguo/l00000;
}
if(pduan=2)
{
jieguo=nuni2-num5;
a=jieguo%10;
b=jieguo%100/10;
c^jieguo%1000/100;
d=jieguo%10000/1000;
e=^jieguo%100000/10000;
f=jieguo/l00000;
}
if(pduan=3)
jieguo=num5*num3:
a=^jieguo%10;b=jieguo%100/10;c=jieguo%1000/100;d=jieguo%10000/1000;
ieguo%100000/10000;
f=jieguo/l00000;
}
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;f4ieguo/l00000;
}
if(f=O)〃确定位数
{
if(e==O)
{
if(d==O)
{
if(c==O)
{
if(b==O){
if(a=0)num=0;
elsenum=l;}
elsenum=2;
}
elsenum=3;
}
elsenum=4;
}
elsenum=5;
}
elsenum=6;
}
voidkeyscan()
P3=0xfe;〃第一部分
temp=P3;
temp=tenip&OxfO;
wlule(temp!
=OxfO)
{
delay(5);
P3=Oxfe;
temp=P3;
temp=temp&0xfO;
while(temp!
=OxfO)
{
temp=P3;
switch(temp)
{
caseOxee:
g=l;f=e;e=d;
d=c;
c=b;
b=a;
a=g;num++;
break;
caseOxde:
g=2;f=e;e=d;d=c;c=b;b=a;a=g;
num+-r;
break;
caseOxbe:
g=3;f=e;e=d;d=c;c=b;b=a;a=g;break:
caseOx7e:
jiaQ;
break:
}
B1=O;
temp=temp&0xfD;
wlule(temp!
=OxfD)
{
temp=P3;
temp=temp&0xfO:
}delay(5);P3=Oxff;
Bl=l;
}
}
P3=Oxfd;〃第二部分temp=P3;
temp=tenip&OxfO;wlule(temp!
=OxfO)
{
delay(5);
P3=Oxfd;temp=P3;
temp=temp&0xfO;
\vhile(temp!
=OxfO)
{
temp=P3;
switch(temp)
{
caseOxed:
g=4;f=e;e=d;d=c;c=b;b=a;a=g;num++;
break;
caseOxdd:
g=5;f=e;e=d;d=c;c=b;b=a;a=g;num+-r;
break;
caseOxbd:
g=6;f=e;e=d;d=c;c=b;b=a;a=g;num+-r;
break;
caseOx7d:
jianQ;
break;
}
B1=O;
temp=temp&0xfD;
wlule(temp!
=OxfD)
{
temp=P3;
temp=temp&OxfO:
}delay(5);P3=Oxff;
Bl=l;
}
}
P3=Oxfb;〃第三部分
temp=P3;
temp=tenip&OxfO;wlule(temp!
=OxfO)
{
delay(5);
P3=Oxfb;temp=P3;
temp=temp&0xfO;while(temp!
=OxfO){
temp=P3;
switch(temp)
caseOxeb:
g=7;f=e;e=d;d=c;c=b;b=a;a=g;num++;
break;caseOxdb:
g=8;仕;e=d;d=c;c=b;b=a;a=g;num++;
break;
caseOxbb:
g=9;f=e;e=d;d=c;c=b;b=a;a=g;num++;
break;
caseOx7b:
cheng();
break;
}
B1=O;
temp=temp&0xfD;
while(temp!
=OxfD)
{
temp=P3;
temp=temp&OxfO:
}delav(5);P3=0xff;
Bl=l;
}
}
P3=0xf7;〃第四部分
temp=P3;
temp=tenip&OxfO;
while(temp!
=OxfO)
{
delay(5);
P3=Oxf7;
temp=P3;
temp=temp&0xfO;
while(temp!
=OxfO)
{
temp=P3;
switch(temp)
{
case0xe7:
dengQ;
break;
case0xd7:
g=0;f=e;
e=d;
d=c;
c=b;
b=a;
a=g;num+-r;if(num=l)num=0;
break:
case0xb7:
qmgchu();
break:
case0x77:
chu();
break:
B1=O;
temp=temp&Oxft):
xvhile(temp!
=OxfD){
temp=P3;temp=temp&OxfO:
}
delay(5);
P3=Oxff;
Bl=l;
}
}
}
voiddisplayIQ
{
wela=l;〃第1个数字
PO=Oxdf;
wela=0;
P=0x00;
dula=l;
P0=SHZ[a];
dula=O;
delay(l);
dula=l;
P0=0x00;
dula=O;
PO=Oxff;
}
voiddisplav2Q
{
wela=l;〃第2个数字
P0=0xef;
wela=0;
P=0x00;
dula=l;
P0=SHZ[b];
dula=0;
delay(l);
dula=l;
PO=OxOO;dula=O;PO=Oxff;
〃第3个数字
}voiddisplav3Q{
wela=l;
P0=0xf7;wela=0;
P=0x00;
dula=l;
P0=SHZ[c];
dula=0;
delay(l);
dula=l;
P0=0x00;
dula=0;
PO=Oxff;
}
voiddisplav4Q
{
wela=l;〃第4个数字
PO=Oxfb;
wela=0;
P=0x00;
dula=l;
P0=SHZ[d];
dula=0;
delay(l);
dula=l;
P0=0x00;
dula=0;
PO=Oxff;
}
voiddisplay5Q
{
wela=l;〃第5个数字
PO=Oxfd;
wela=O;
P=OxOO;
dula=l;
PO=SHZ[e];dula=O;
delay(l);
dula=l;
PO=OxOO;
dula=O;
PO=Oxff;
}
voiddisplav6Q
{
wela=l;〃第6个数字
P0=0xfe;
wela=0;
P=0x00;
dula=l;
P0=SHZ[f];
dula=0;
delay(l);
dula=l;
P0=0x00;
dula=0;
PO=Oxff;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 实现 计算器