簡易計算器有圖加程序
1.PNG (147.15 KB, 下載次數: 55)
下載附件
2021-8-25 15:18 上傳
- #include"key16a.h"
- #include"lcd1602.h"
- Uchar code keyval[16]={'/','=',0,'C','*',9,8,7,'-',6,5,4,'+',3,2,1,};
- Uchar data numb1[4],numb2[4],result[12];
- void Fclear ()
- {Uchar i;
- for(i=0;i<4;i++)
- { numb1[i]=0;
- numb2[i]=0;
- }
- for(i=0;i<12;i++)
- result[i]=' ';
- }
- void main()
- { Uchar i=0,j=0,tmp=0;
- Uchar oprat1=0,oprat2=0,opratflag=0;
- Uint answer=0;
- Fclear ();
- RstLcd();
- ClrLcd();
- while(1)
- { do{tmp=key_scan();}while(tmp==0xff);
- tmp=keyval[tmp];
- if(tmp=='C'){ClrLcd();break;}
- else
- {if(tmp!='=')
- { if((tmp<10)&&(opratflag==0))
- { numb1[i]=tmp;WriteChar(tmp+0x30,i+4,0);i++;}
- else if (tmp>10)
- {opratflag=tmp;WriteChar(tmp,7,0);}
- else
- {numb2[j]=tmp;WriteChar(tmp+0x30,j+8,0);j++;}
- }
- else
- {
- switch(i)
- { case 1: oprat1=numb1[0];
- numb1[0]+=0x30;numb1[1]=numb1[2]=' ';
- break;
- case 2:
- oprat1=numb1[0]*10+numb1[1];
- numb1[0]+=0x30;numb1[1]+=0x30;
- numb1[2]=' ';break;
- case 3:
- oprat1=numb1[0]*100+numb1[1]*10+numb1[2];
- numb1[0]+=0x30;numb1[1]+=0x30;
- numb1 [2]+=0x30;
- break;
- }
- switch(j)
- { case 1: oprat2=numb2[0];
- numb2[0]+=0x30;numb2[1]=numb2[2]=' ';
- break;
- case 2:
- oprat2=numb2[0]*10+numb2[1];
- numb2[0]+=0x30;numb2[1]+=0x30;
- numb2 [2]=' '; break;
- case 3:
- oprat2=numb2[0]*100+numb2[1]*10+numb2[2];
- numb2[0]+=0x30;numb2[1]+=0x30;
- numb2 [2]+=0x30;
- break;
- }
- result [0]=' ';
- switch(opratflag)
- { case '+':
- answer=oprat1+oprat2;break;
- case '-':
- if(oprat1<oprat2)
- { answer=oprat2-oprat1;
- result[0]='-';}
- else
- {answer=oprat1-oprat2;
- }
- break;
- case'*':
- answer=oprat1*oprat2;break;
- case '/':
- answer=oprat1/oprat2;
- tmp=oprat1%oprat2;
- if(tmp>=100) i=3;
- else if(tmp>9){i=2;}
- else if (tmp>0)
- {i=1;}
- else break;
- result[6]= result[7]=result[8]='.';
- j=9;
- switch(i)
- {case 3:result[j]=tmp/100+0x30;
- case 2:result[j++]=(tmp/10)%10+0x30;
- case 1:result[j]=tmp%10+0x30;
- break;
- }
- break;
- }
- if(answer>=10000) i=5;
- else if (answer>=1000)i=4;
- else if (answer>=100)i=3;
- else if(answer>=10)i=2;
- else i=1;
- j=1;
- switch(i)
- {case 5:result[j++]=answer/10000+0x30;
- case 4:result[j++]=(answer/1000)%10+0x30;
- case 3:result[j++]=(answer/100)%10+0x30;
- case 2:result[j++]=(answer/10)%10+0x30;
- case 1:result[j]=answer%10+0x30;break;
- }
- WriteChar('=', 3,1);
- WriteString(result,4,1);
- i=0;j=0;tmp=0; answer=0;
- oprat1=0,oprat2=0,opratflag=0;
- Fclear();
- }
- }
- }
- }
復制代碼
51hei.png (11.33 KB, 下載次數: 60)
下載附件
2021-8-26 00:32 上傳
全部資料51hei下載地址:
計算機.zip
(103.44 KB, 下載次數: 19)
2021-8-25 15:20 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|