1、五、软件编程部份#include#defineuchar unsigned char #defineuintunsigned int/uchar code num=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/共阴极/0123456789熄灭-/uchar code loc=0xff,0xfe,0xfd,0xfb,0xf7;/uchar code ero=0x79,0x50,0x5c;uchar code num=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xf
2、f,0x40;/共阳极uchar code loc=0x00,0x80,0x40,0x20,0x10; uchar code ero=0x79,0x50,0x5c;uintn=0,n1=0,n2=0;/赋初值uchar flag=0;/计算类型选择关键字void delay(int t);void display(int n); void error();main()while(1)uchar temp;/第一行检测P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0)delay(10);0xfe;=0xfe)temp=P3; switch(temp)
3、/清零/0/=case0xee:n1=0;n2=0;n=0;flag=0;break; case 0xde:n1=10*n1+0;n=n1;case0xbe:if(flag=1)n=n2+n1;if(flag=2)n=n2-n1; if(flag=3)n=n2*n1; if(flag=4)n=n2/n1;case 0x7e:/ + n2=n1;flag=1;while(temp!/扫描第二行P3=0xfd;case 0xed:n1=10*n1+1;/4case 0xdd:n1=10*n1+2;/5case 0xbd:n1=10*n1+3;/6 case 0x7d:/ -n2=n1;flag=2
4、;/扫描第三行P3=0xfb;/ *case 0xeb:n1=10*n1+4; case 0xdb:n1=10*n1+5; case 0xbb:n1=10*n1+6;case0x7b:flag=3;/扫描第四行P3=0xf7;case 0xe7:n1=10*n1+7;/7case 0xd7:n1=10*n1+8;/8case 0xb7:n1=10*n1+9;/9case 0x77:/ /flag=4;display(n);/ 延 时 函 数 void delay(int t)int x,y; for(x=0;xt;x+)for(y=0;y9999)|(n=0)&(n=10)P0=nums; P2=loc3;if(n=100)P0=numb; P2=loc2;=1000)P0=numq; P2=loc1;/负数if(n=-999)abs=-n; g=abs%10; s=abs/10%10; b=abs/100%10; q=abs/1000%10; P0=numg;if(abs/10%100)|(abs/100%100)P2=loc3;delay(2);if(abs/100%10if(abs/1000%10elseP0=num11;/溢出显示void error()P2=loc1; P0=ero0;P2=loc2; P0=ero1;P2=loc4;P0=ero2;