基于单片机的简易计算器设计原理图及程序代码j_8hcecj.docxVIP

  • 25
  • 0
  • 约4.92千字
  • 约 10页
  • 2018-08-27 发布于湖北
  • 举报

基于单片机的简易计算器设计原理图及程序代码j_8hcecj.docx

基于单片机的简易计算器设计原理图及程序代码j_8hcecj

原理图: #includereg52.H sbit BEEP=P3^7; char dsp[9]={0,0,12,12,12,12,12,12,12}; unsigned char code Select[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code LED_CODES[]= {0xc0,0xf9,0xa4,0xb0,0x99, //0-4 0x92,0x82,0xf8,0x80,0x90, //5-9 0x86,0xaf,0xff,0x7f,0xbf}; //E,r,不显,.,- void delay11(unsigned int i) { while(i--); } char keyscan() { char KeyL; char KeyR; P1=0xf0; do { do { P1=0xF0; P1=P1|0xF0; if(P1!=0xF0) { KeyL=P1; P1=0x0F; P1=P1|0x0F; KeyR=P1; } }while(KeyL==0xF0||KeyR==0x0F); delay11(300); } while(P1!=0x0F); switch(KeyL | KeyR) { case 0xb7:{return 0;break;} case 0x7e:{return 1;break;} case 0xbe:{return 2;break;} case 0xde:{return 3;break;} case 0x7d:{return 4;break;} case 0xbd:{return 5;break;} case 0xdd:{return 6;break;} case 0x7b:{return 7;break;} case 0xbb:{return 8;break;} case 0xdb:{return 9;break;} case 0xee:{return 10;break;}//加法 case 0xed:{return 11;break;}//减法 case 0xeb:{return 12;break;}//乘法 case 0xe7:{return 13;break;}//除法 case 0xd7:{return 14;break;}//清零 case 0x77:{return 15;break;}//等于 } } void calculate(char k,char a[8],char b[8]) { char r[8]; long i; long x,y; i=0; x=0; y=0; for(i=7;i0;i--) { while(a[i]==12)a[i]=0; while(b[i]==12)b[i]=0; } x=a[4]; x=10000*x; x=x+a[0]+a[1]*10+a[2]*100+a[3]*1000+a[5]*100000+a[6]*1000000+a[7] y=b[4]; y=10000*y; y=y+b[0]+b[1]*10+b[2]*100+b[3]*1000+b[5]*100000+b[6]*1000000+b[7] if(k==10) { x=x+y; if( { BEEP=0; r[0]=11; r[1]=11; r[2]=10; r[3]=12; r[4]=12; r[5]=12; r[6]=12; r[7]=12; } else { r[0]=x%10; r[1]=(x%100)/10; r[2]=(x%1000)/100; r[3]=(x%10000)/1000; r[4]=(x%100000)/10000; r[5]=(x%1000000)/100000; r[6]=(x/1000000; r[7]=x } } if(k==11) { if(xy) { x=y-x; if(x9999999) { BEEP=0; r[0]=11; r[1]=11; r[2]=10; r[3]=12; r[4]=12; r[5]=12; r[6]=12; r[7]=12; } else { r[0]=x

文档评论(0)

1亿VIP精品文档

相关文档