<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 簡(jiǎn)單的加法計(jì)算器單片機(jī)c程序設(shè)計(jì)

          簡(jiǎn)單的加法計(jì)算器單片機(jī)c程序設(shè)計(jì)

          作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          /*

          //----------簡(jiǎn)單的加法計(jì)算器-----------------
          //------用數(shù)碼管顯示兩位數(shù)的加法計(jì)算器;----------
          //P0作為數(shù)碼管的段碼
          //P1作為數(shù)碼管的位碼
          //P2口作為矩陣鍵盤0----9,+,=;//本實(shí)訓(xùn)箱只有12個(gè)按鍵,P20---P26;P27未用;
          先輸入第一個(gè)數(shù),當(dāng)按+時(shí),清屏,再顯示輸入的第二個(gè)數(shù),
          按=時(shí),顯示他們的和,再次按=數(shù)據(jù)清0;
          //本程序在普中單片機(jī)實(shí)訓(xùn)箱上通過

          本文引用地址:http://www.ex-cimer.com/article/201611/315574.htm

          */
          #include"reg51.h"
          #include
          #define uint unsigned int
          #define uchar unsigned char

          uchar code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
          0x7d,0x07,0x7f,0x6f,0x00};
          uchar wula[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
          uchar table[8]={0,0,10,10,10,10,10,10};
          uchar add1[2]={0,10};
          uchar add2[2]={0,10};
          uchar sum[3]={0,10,10};
          uchar sum1,aa,bb,cc;
          bit flagsum,flagadd,flag;
          uchar x,y,z,k,keyword;
          void dispadd1();
          void dispadd2();
          void dispsum();
          void delay(uint z);
          void display();
          void jisuan();
          void keyscan();
          void main()
          {
          keyword=0;
          k=0;
          while(1)
          {
          keyscan();
          if((flagadd==0)&&(flagsum==0))
          dispadd1();
          if((flagadd==1)&&(flagsum==0))
          dispadd2();
          if((flagsum==1))
          dispsum();

          }
          }

          void keyscan()
          {
          uchar temp1,temp2;
          P2=0xf0;
          if(P2!=0xf0)
          {
          delay(100);
          P2=0xf0;
          if(P2!=0xf0)
          {
          temp1=P2;
          P2=0x0f;
          temp2=P2;
          while(P2!=0x0f);
          keyword=temp1|temp2;
          switch(keyword)
          {
          case 0xed: keyword=0;flag=0;break;
          case 0xdd: keyword=1;flag=0;break;
          case 0xbd: keyword=2;flag=0;break;
          case 0x7d: keyword=3;flag=0;break;
          case 0xeb: keyword=4;flag=0;break;
          case 0xdb: keyword=5;flag=0;break;
          case 0xbb: keyword=6;flag=0;break;
          case 0x7b: keyword=7;flag=0;break;
          case 0xe7: keyword=8;flag=0;break;
          case 0xd7: keyword=9;flag=0;break;
          case 0xb7: {flagadd=1;
          flag=1;}break;
          case 0x77: {flagsum=~flagsum;cc++;}break;
          default: break;
          }
          if((flagadd==0)&&(flagsum==0))
          {
          add1[k]=keyword;
          if(k>1)
          k=1;//}
          else
          k++;}
          if((flagadd==1)&&(flagsum==0))
          {if(flag==1)
          {k=0;flag=0;}
          else
          { add2[k]=keyword;
          if(k>1)
          k=1;
          else
          k++;}}
          if(flagsum==1)
          {flagadd=0;flag=0;k=0;
          if(cc==2)
          {cc=0;add1[0]=0;add1[1]=10;
          add2[0]=0;add2[1]=10;
          sum[0]=0;sum[1]=10;sum[2]=10;}
          if(add1[1]!=10)
          aa=add1[0]*10+add1[1];
          else
          aa=add1[0];
          //
          if(add2[1]!=10)
          bb=add2[0]*10+add2[1];
          else
          bb=add2[0];
          sum1=aa+bb;
          sum[0]=sum1/100;
          sum[1]=sum1%100/10;
          sum[2]=sum1%10;

          }
          if(flagsum==0)
          {if(cc==2)
          {cc=0;flagadd=0;flag=0;k=0;
          add1[0]=0;add1[1]=10;
          add2[0]=0;add2[1]=10;
          sum[0]=0;sum[1]=10;sum[2]=10;}
          }

          }
          }
          }

          void dispadd1()
          { uchar i;
          for(i=0;i<2;i++)
          { P0=dula[add1[i]] ;
          P1=wula[i];
          delay(5);
          // P0=0;
          }
          }
          //-----------------
          void dispadd2()
          { uchar i;
          for(i=0;i<2;i++)
          { P0=dula[add2[i]] ;
          P1=wula[i];
          delay(5);
          P0=0;
          }
          }
          //-------------------
          void dispsum()
          { uchar i;
          for(i=0;i<3;i++)
          { P0=dula[sum[i]] ;
          P1=wula[i];
          delay(5);
          P0=0;
          }
          }
          //=====================
          void delay(uint z)
          {
          uint x,y;
          for(x=0;x for(y=0;y<112;y++);
          }



          關(guān)鍵詞: 加法計(jì)算器單片

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();