四位数码管计算器程序.docx
- 文档编号:16672316
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:24
- 大小:17.19KB
四位数码管计算器程序.docx
《四位数码管计算器程序.docx》由会员分享,可在线阅读,更多相关《四位数码管计算器程序.docx(24页珍藏版)》请在冰点文库上搜索。
四位数码管计算器程序
#include"delay.h"
voidmain()
{
NegaviePosive
(1);
//s0=s1=0;
//value1=value0=value2=value3=value4=value5=0;
while
(1)
{
DriveSEG(0,2,Get());
}
}
#include
#ifndef_DELAY_H_
#define_DELAY_H_
externvoidShowSEG(longintm);
externvoiddelay(unsignedintnms);
externvoidChangeData(longintm);
externvoidOutDataofPort(charn,unsignedcharData);
externvoidSetDataPort(unsignedcharPort);
externvoidSetSwichPort(unsignedcharPort);
externvoidDriveSEG(charDataPort,charSwitchData,longintnum);
externvoidNegaviePosive(inth);
externfloatGet();
#endif
#include
#defineuintunsignedint
chari;
unsignedchara[8];
charj=0;
charSwitchPort;
charDataPort;
intg;
inth;
longintvalue1,value0,value3,value4;
charvalue2,value5;
chars0;
chars1;
chars2;
chars3;
charbiao2;
charbiao3;
charbiao4;
charbiao5;
charbiao6;
charbiao7;
charbiao8;
charbiao9;
charbiao10;
charbiao11;
charbiao12=1;
charbiao13;
charbiao14;
charbiao15;
charbiao16;
charbiao17;
charbiao18=1;
charcodetemp[16]={0xe7,0xeb,0xed,0xee,0xd7,0xdb,0xdd,0xde,0xb7,0xbb,0xbd,0xbe,0x77,0x7b,0x7d,0x7e};
charcodetemp1[6]={'+','-','*','/','='};
charcodeteam[20]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0X7F,0X6F,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
charcodeteam1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
charcodetable[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
charcodetable1[4]={0xfe,0xfd,0xfb,0xf7};
voiddelay(unsignedintnms)
{
intx,y,z;
for(x=1;x>0;x--)
for(y=11;y>0;y--)
for(z=nms;z>0;z--);
}
voidChangeData(longintm)
{
charb;
for(b=0;b<8;b++)
{
a[b]=m%10;
m/=10;
}
}
voidShowSEG(longintnum)
{
ChangeData(num);
if(s0==1)
{
a[1]=a[1]+10;
}
if(s1==1)
{
a[7]=a[7]+10;
}
if(s1==2)
{
a[6]=a[6]+10;
}
if(s1==3)
{
a[5]=a[5]+10;
}
if(s1==4)
{
a[4]=a[4]+10;
}
if(s1==5)
{
a[3]=a[3]+10;
}
if(s1==6)
{
a[2]=a[2]+10;
}
if(s1==7)
{
a[1]=a[1]+10;
}
if(s2&&!
s0&&!
s1)
{
switch(biao4)
{
case1:
a[0]+=10;break;
case2:
a[1]+=10;break;
case3:
a[2]+=10;break;
case4:
a[3]+=10;break;
case5:
a[4]+=10;break;
case6:
a[5]+=10;break;
case7:
a[6]+=10;break;
default:
break;
}
}
NegaviePosive(g);
i=0;
for(j=0;j<8;j++)
{
//a[0]=0;a[1]=1;a[2]=2;a[3]=3;a[4]=4;a[5]=5;a[6]=6;a[7]=7;
if(g==1)
{
OutDataofPort(SwitchPort,table[i++]);
OutDataofPort(DataPort,~team[a[j]]);
delay(10);
OutDataofPort(SwitchPort,0x00);
delay(6);
}
else
{
OutDataofPort(SwitchPort,table1[i++]);
OutDataofPort(DataPort,team[a[j]]);
delay(10);
OutDataofPort(SwitchPort,0xff);
delay(6);
}
}
}
voidOutDataofPort(charn,unsignedcharData)
{
switch(n)
{
case0:
P0=Data;break;
case1:
P1=Data;break;
case2:
P2=Data;break;
case3:
P3=Data;break;
default:
break;
}
}
voidSetDataPort(unsignedcharPort)
{
DataPort=Port;
}
voidSetSwitchPort(unsignedcharPort)
{
SwitchPort=Port;
}
voidDriveSEG(charDataPort,charSwitchPort,longintnum)
{
SetDataPort(DataPort);
SetSwitchPort(SwitchPort);
ShowSEG(num);
}
voidNegaviePosive(inth)
{
g=h;
}
floatGet()
{
longintvalue;
floatshu1;
floatshu2;
floatshu3;
charflag=0;
unsignedchara1,b1,c1;
inti;
charbiao=0;
charbiao1=0;
P1=0x0f;
a1=P1|0xf0;
if(a1!
=0xff)
{
P1=0xf0;
b1=P1|0x0f;
c1=a1&b1;
while(b1!
=0xff&&c1!
=0xbd&&c1!
=0xbe&&c1!
=0x77&&c1!
=0x7b&&c1!
=0x7d&&c1!
=0x7e)
{
biao=1;biao3=1;
b1=P1|0x0f;
ShowSEG(shu2);
}
for(i=0;i<10;i++)
{
if(c1==temp[i])
{
value=i;
biao4=biao4+1;
if(s2)
biao13=biao13+1;
if(s2&&biao8)
biao10=1;
if(s2)
biao18=0;
break;
}
}
}
value1=value;
P1=0xf0;
a1=P1|0x0f;
if(a1!
=0xff)
{
P1=0x0f;
b1=P1|0xf0;
c1=a1&b1;
while(b1!
=0xff)
{
b1=P1|0xf0;
ShowSEG(shu2);
}
for(i=0;i<6;i++)
{
if(c1==temp[i+10])
{
flag=i+10;
if(flag!
=15)
biao1=1;
if(flag!
=15&&flag!
=14)
biao8=1;
break;
}
}
}
//flag=10;biao3=1;shu2=623;biao13=2;
if(flag>=10&&flag<16)
{
value0=flag;
switch(value0)
{
case10:
value2='+';break;
case11:
value2='-';break;
case12:
value2='*';break;
case13:
value2='/';break;
case14:
value2='=';break;
case15:
value2='.';break;
default:
break;
}
if(value2!
='='&&value2!
='.')
{
shu1=shu2;
biao5=1;
value5=value2;
}
}
if(value1<10&&value1>=0&&biao)
{
biao=0;
value4=value1+10*value3;
value3=value4;
shu2=(float)value4;
value1=0;
}
if(value2==0&&biao3)
{
biao4=1;
}
if(biao10&&!
biao11||!
s2)
{
biao4=1;
biao11=1;
biao10=0;
}
if(value2=='.')
{
s2=1;
}
//biao1=1;value2='=';biao3=1;shu2=97644876.5;s2=1;biao8=1;
if(biao8&&value2=='=')
{
biao7=1;
biao8=0;
biao3=1;
}
if(biao18&&biao8)
{
s2=0;
}
if(biao6&&biao3)
{
s2=0;
biao6=0;
}
if(biao6&&s2&&biao9)
{
s2=0;
biao6=0;
}
if(biao15&&biao3)
{
biao15=0;
s0=0;
s1=0;
}
value0=10;biao3=1;biao1=1;biao7=1;s2=1;biao12=0;shu1=4785263;biao13=5;shu2=4258752;value5='+';
if(value0>=10&&value0<15&&biao3&&biao1)
{
value3=0;
biao3=0;
biao1=0;
biao6=1;
if(s2==0)
biao12=0;
if(s2&&biao12&&!
biao7)
{
biao12=0;
biao16=1;
switch(biao13)
{
case1:
shu1=shu1/10;break;
case2:
shu1=shu1/100;break;
case3:
shu1=shu1/1000;break;
case4:
shu1=shu1/10000;break;
case5:
shu1=shu1/100000;break;
case6:
shu1=shu1/1000000;break;
case7:
shu1=shu1/10000000;break;
default:
break;
}
biao13=-1;
}
if(s3&&biao7)
{
biao17=1;
switch(s3)
{
case1:
shu1=shu1/10;break;
case2:
shu1=shu1/100;break;
case3:
shu1=shu1/1000;break;
case4:
shu1=shu1/10000;break;
case5:
shu1=shu1/100000;break;
case6:
shu1=shu1/1000000;break;
case7:
shu1=shu1/10000000;break;
default:
break;
}
s3=0;
}
if(biao7)
{
biao15=1;
if(s2)
{
biao9=1;
switch(biao13)
{
case1:
shu2=shu2/10;break;
case2:
shu2=shu2/100;break;
case3:
shu2=shu2/1000;break;
case4:
shu2=shu2/10000;break;
case5:
shu2=shu2/100000;break;
case6:
shu2=shu2/1000000;break;
case7:
shu2=shu2/10000000;break;
default:
break;
}
biao13=0;
}
switch(value5)
{
case'+':
shu1+=shu2;break;
case'-':
shu1-=shu2;break;
case'*':
shu1*=shu2;break;
case'/':
shu1/=shu2;
if(shu1>0&&shu1<1)
{
s0=1;
s3=7;
shu3=shu1*10000000;
}
if(shu1>=1&&shu1<10)
{
s1=7;
s3=7;
shu3=shu1*10000000;
}
if(shu1>=10&&shu1<100)
{
s1=6;
s3=6;
shu3=shu1*1000000;
}
if(shu1>=100&&shu1<1000)
{
s1=5;
s3=5;
shu3=shu1*100000;
}
if(shu1>=1000&&shu1<10000)
{
s1=4;
s3=4;
shu3=shu1*10000;
}
if(shu1>=10000&&shu1<100000)
{
s1=3;
s3=3;
shu3=shu1*1000;
}
if(shu1>=100000&&shu1<1000000)
{
s1=2;
s3=2;
shu3=shu1*100;
}
if(shu1>=1000000&&shu1<10000000)
{
s1=1;
s3=1;
shu3=shu1*10;
}
if(shu1>=10000000)
{
shu3=shu1*1;
}
biao14=1;
shu1=(longint)shu3;
break;
default:
break;
}
if(biao7&&(biao16||biao17)&&!
biao9&&!
biao14)
{
biao14=0;
biao7=0;
biao16=0;
biao17=0;
if(shu1>0&&shu1<1)
{
s0=1;
s3=7;
shu3=shu1*10000000;
}
if(shu1>=1&&shu1<10)
{
s1=7;
s3=7;
shu3=shu1*10000000;
}
if(shu1>=10&&shu1<100)
{
s1=6;
s3=6;
shu3=shu1*1000000;
}
if(shu1>=100&&shu1<1000)
{
s1=5;
s3=5;
shu3=shu1*100000;
}
if(shu1>=1000&&shu1<10000)
{
s1=4;
s3=4;
shu3=shu1*10000;
}
if(shu1>=10000&&shu1<100000)
{
s1=3;
s3=3;
shu3=shu1*1000;
}
if(shu1>=100000&&shu1<1000000)
{
s1=2;
s3=2;
shu3=shu1*100;
}
if(shu1>=1000000&&shu1<10000000)
{
s1=1;
s3=1;
shu3=shu1*10;
}
if(shu1>=10000000)
{
shu3=shu1*1;
}
shu1=(longint)shu3;
}
if(s2&&biao7&&!
biao14&&biao9)
{
biao7=0;
biao14=0;
if(shu1>0&&shu1<1)
{
s0=1;
s3=7;
shu3=shu1*10000000;
}
if(shu1>=1&&shu1<10)
{
s1=7;
s3=7;
shu3=shu1*10000000;
}
if(shu1>=10&&shu1<100)
{
s1=6;
s3=6;
shu3=shu1*1000000;
}
if(shu1>=100&&shu1<1000)
{
s1=5;
s3=5;
shu3=shu1*100000;
}
if(shu1>=1000&&shu1<10000)
{
s1=4;
s3=4;
shu3=shu1*10000;
}
if(shu1>=10000&&shu1<100000)
{
s1=3;
s3=3;
shu3=shu1*1000;
}
if(shu1>=100000&&shu1<1000000)
{
s1=2;
s3=2;
shu3=shu1*100;
}
if(shu1>=1000000&&shu1<10000000)
{
s1=1;
s3=1;
shu3=shu1*10;
}
if(shu1>=10000000)
{
shu3=shu1*1;
}
shu1=(longint)shu3;
}
}
}
value2='=';biao5=1;
if(value2=='='&&biao5)
{
shu2=shu1;
biao5=0;
biao4=0;
biao7=0;
biao9=0;
biao13=0;
biao14=0;
biao18=1;
value2=0;
s2=0;
value5=0;
value3=0;
value4=0;
}
if(shu2<0||shu2>100000000)
{
shu2=0;
value3=0;
value4=0;
value2=0;
value1=0;
biao4=0;
biao5=0;
s0=0;s1=0;s2=0;
}
//shu2=(longint)shu2;
returnshu2;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管 计算器 程序