资源描述
1 基于51单片机的简易计算器 /* 阿斌独家制作: 计算器数码管显示 可计算 10 以下数加减乘除 可连续运算最大显示结果数值 9999 */ 键盘设置: 主程序: #in clude #defi ne uint un sig ned int #defi ne uchar un sig ned char uchar nu m,temp,jia=O,jia n=O,che ng=O,chu二 O,qin g=0; uint key,key1; uchar table= 0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x0; 2 void delay( uint z) uint x,y; for(x二z;x0;x-) for(y=110;y0;y-); void keysca n() P3=0 xfe; temp二P3; temp二temp&0 xf0; while(temp!=OxfO) delay(5); temp=P3; temp二temp&0 xf0; while(temp!=0 xf0) temp=P3; switch(temp) case 0 xee:key=1; num=0;break;3 case 0 xde:key=2 ;num=O;break; case 0 xbe:key=3 ;num=O;break; case 0 x7e:num=1;break; while(temp!=OxfO) temp=P3; temp二temp&0 xf0; P3=0 xfd; temp=P3; temp二temp&0 xf0; while(temp!=0 xf0) delay(5); temp=P3; temp二temp&OxfO; while(temp!=0 xf0) /加号 4 temp=P3;5 switch(temp) case Oxed:key二 4;num=O;break; case 0 xdd:key=5 ;num=O;break; case 0 xbd:key=6 ;num=O;break; while(temp!=OxfO) temp=P3; temp二temp&OxfO; P3=0 xfb; temp=P3; temp二temp&OxfO; while(temp!=0 xf0) delay(5); temp=P3; temp二temp&OxfO;case 0 x7d:num=2;break; II减号 while(temp!=OxfO) temp二P3; switch(temp) case 0 xeb:key=7 ;num=O;break; case 0 xdb:key=8 ;num=O;break; case 0 xbb:key=9 ;num=O;break; case 0 x7 b:num=3;break; / 乘号 while(temp!=0 xf0) temp=P3; temp二temp&0 xf0; P3=0 xf7; temp=P3; temp二temp&0 xf0; while(temp!=OxfO) 5 delay(5); temp二P3; temp二temp&0 xfO; while(temp!=OxfO) temp=P3; switch(temp) case 0 xe7:key=0;num=O;break; case 0 xd7:num=6;break; / 清除 case 0 xb7:num=5;break; /等于号 case 0 x77:num=4;break; / 除号 while(temp!=0 xf0) temp=P3; temp二temp&0 xf0; void display( uint shu) 6 8 uint qia n,bai,shi,ge; qia n=shu/1000; bai二shu%1000/100; shi=shu%100/10; ge=shu%10; P2=0 x1f; if(qia n=0) P0=table10; else P0=tableqia n; delay(5); P2=0 x2f; if(qia n=0&bai=0) P0=table10; else P0=tablebai; delay(5); P2=0 x4f; if(qia n=0&bai=0&shi=0) P0=table10; else9 P0二tableshi; delay(5); P2=0 x8f; P0=tablege; delay(5); void jia1() jia=1; jia n=che ng二chu二 qin g=0; key1=key; void jia n1() jia n=1; jia二che ng二chu二 qin g=0; key1=key; void che ng1() cheng=1; jia=jia n=chu二 qin g=0;10 keyl二key; void chu1() chu=1; jia=jia n=che ng二qin g=0; key1=key; void qin g1() qin g=1; jia=jia n=che ng二chu=0; key1=key=0; void den g1() if(jia) key=key1+key; if(jia n) key=key1-key; if(che ng) key=key1*key;5 “ if(chu) key二keyl/key; display(key); jia=jia n=che ng二chu二 qin g=0; void deal() switch( num) case 0: display(key);break; case 1: jia1();break; case 2: jia n1();break; case 3: che ng1();break; case 4: chu1();break; case 5: den g1();break; case 6: qin g1();break; void mai n() P2=0 x0f; while(1)12 keysca n(); deal(); 11
展开阅读全文